커뮤니티

문의드립니다

프로필 이미지
feelkdn
2018-07-20 12:19:34
2017
글번호 224527
답변완료

첨부 이미지

안녕하세요 현재 예스스팟을 사용하여 시험주문을 넣어보고있습니다. 아래와 같은 코드로 주문을 넣고있는데 옵션종목 매도면 GetBidByCode 를 사용하고 옵션종목 매수면 GetAskByCode를 사용하고있습니다 예) var BxCallPrice = Option1.GetBidByCode(buycallcode,5); var BxPutPrice = Option1.GetAskByCode(buyputcode,5); Account1.OrderSell(buyputcode, putQuantity, BuyPutPrice, 1); 첨부파일에도 보시면 아시겠지만 주문가격이 모두 0.00으로 표기되고있고 주문상태는 오류발생으로 표기되고있습니다. 다른 곳에서는 주문상태는 시험적용으로 되어있는데 주문가격은 0.00으로 표기가 되고있습니다. 저함수를 써서 주문을 넣었는데 왜 주문상태에서는 0.00으로 표기되는지 궁금합니다 var Start var buycallcode var buyputcode var sellcallcode var sellputcode var UNum; var LNum; var CallCode; var CallPrice; var PutCode; var PutPrice; var CC; var PP; var callQuantity; var putQuantity; var buyQuantity = 3000000; var sellQuantity = 1; function Main_OnStart() { Main.MessageLog("시작"); Start = 1; } function Chart1_OnRiseSignal(Signal) { Main.MessageLog("신호완성/" + Signal.signalKind); //매수진입 if(Signal.signalKind ==1) { UNum = Option1.uppersATM; LNum = Option1.lowersATM; CallPrice = new Array(UNum + LNum + 1); CallCode = new Array(UNum + LNum + 1); PutPrice = new Array(UNum + LNum + 1); PutCode = new Array(UNum + LNum + 1); for(var i = -LNum; i <= UNum; i++) { if(Option1.GetCurrent(0,i) <= 2.0) { CallPrice[i+LNum] = Option1.GetCurrent(0, i); CallCode[i+LNum] = Option1.GetATMCallRecent(i); } else { CallPrice[i+LNum] = -1; CallCode[i+LNum] = -1; } } for (var ii = -UNum; ii <= LNum; ii++) { if (Option1.GetCurrent(1, ii) <= 2.5) { PutPrice[ii+UNum] = Option1.GetCurrent(1, ii); PutCode[ii+UNum] = Option1.GetATMPutRecent(ii); } else { PutPrice[ii+UNum] = -1; PutCode[ii+UNum] = -1; } } CC = -1; buycallcode = -1; for (var iii = -LNum; iii <= UNum; iii++) { if (CallPrice[iii+LNum] > CC) { CC = CallPrice[iii+LNum]; buycallcode = CallCode[iii+LNum] } } PP = -1; buyputcode = -1; for (var iiii = -UNum; iiii <= LNum; iiii++) { if (PutPrice[iiii+UNum] > PP) { PP = PutPrice[iiii+UNum]; buyputcode = PutCode[iiii+UNum]; } } Start = 1; var BuyCallPrice = Option1.GetAskByCode(buycallcode,5); callQuantity = Math.round(buyQuantity / BuyCallPrice / 250000); Account1.OrderBuy(buycallcode, callQuantity, BuyCallPrice, 1); var BuyPutPrice = Option1.GetBidByCode(buyputcode,5); putQuantity = sellQuantity; Account1.OrderSell(buyputcode, putQuantity, BuyPutPrice, 1); Main.MessageLog("선물매수"); } //매수청산 if(Start == 1 && Signal.signalKind == 2) { var BxCallPrice = Option1.GetBidByCode(buycallcode,5); var BxPutPrice = Option1.GetAskByCode(buyputcode,5); Account1.OrderSell(buycallcode, callQuantity, BxCallPrice, 1); Account1.OrderBuy(buyputcode, putQuantity, BxPutPrice, 1); Main.MessageLog("선물매수청산"); } //매도진입 if(Signal.signalKind ==3) { UNum = Option1.uppersATM; LNum = Option1.lowersATM; CallPrice = new Array(UNum + LNum + 1); CallCode = new Array(UNum + LNum + 1); PutPrice = new Array(UNum + LNum + 1); PutCode = new Array(UNum + LNum + 1); for(var i = -LNum; i <= UNum; i++) { if(Option1.GetCurrent(0,i) <= 2.0) { CallPrice[i+LNum] = Option1.GetCurrent(0, i); CallCode[i+LNum] = Option1.GetATMCallRecent(i); } else { CallPrice[i+LNum] = -1; CallCode[i+LNum] = -1; } } for (var ii = -UNum; ii <= LNum; ii++) { if (Option1.GetCurrent(1, ii) <= 2.5) { PutPrice[ii+UNum] = Option1.GetCurrent(1, ii); PutCode[ii+UNum] = Option1.GetATMPutRecent(ii); } else { PutPrice[ii+UNum] = -1; PutCode[ii+UNum] = -1; } } CC = -1; buycallcode = -1; for (var iii = -LNum; iii <= UNum; iii++) { if (CallPrice[iii+LNum] > CC) { CC = CallPrice[iii+LNum]; buycallcode = CallCode[iii+LNum] } } PP = -1; buyputcode = -1; for (var iiii = -UNum; iiii <= LNum; iiii++) { if (PutPrice[iiii+UNum] > PP) { PP = PutPrice[iiii+UNum]; buyputcode = PutCode[iiii+UNum]; } } Start = 1; var BuyCallPrice = Option1.GetBidByCode(buycallcode,5); callQuantity = sellQuantity; Account1.OrderSell(buycallcode, callQuantity, BuyCallPrice, 1); var BuyPutPrice = Option1.GetAskByCode(buyputcode,5); putQuantity = Math.round(buyQuantity / BuyPutPrice / 250000); Account1.OrderBuy(buyputcode, putQuantity, BuyPutPrice, 1); Main.MessageLog("선물매도"); } //매도청산 if(Start == 1 && Signal.signalKind == 4) { var BxCallPrice = Option1.GetAskByCode(buycallcode, 5); Account1.OrderBuy(buycallcode, callQuantity, BxCallPrice, 1); var BxPutPrice = Option1.GetBidByCode(buyputcode,5); Account1.OrderSell(buyputcode, putQuantity, BxPutPrice, 1); Main.MessageLog("선물매도청산"); } }
답변 2
프로필 이미지

예스스탁

2018-08-01 15:40:44

예스스탁 님에 의해 삭제된 답변입니다.
프로필 이미지

예스스탁 예스스탁 답변

2018-08-01 15:40:44

안녕하세요 예스스탁입니다. 관리메뉴의 환경설정에서 예스스팟 옵션데이터(옵션객체) 사용여부에 사용으로 선택되어 있어야 옵션객체에 데이터가 제공됩니다. 기본설정은 부하를 줄이기 위해 미사용으로 객체에 데이터가 제공되지 않습니다. 즐거운 하루되세요 > feelkdn 님이 쓴 글입니다. > 제목 : 문의드립니다 > 안녕하세요 현재 예스스팟을 사용하여 시험주문을 넣어보고있습니다. 아래와 같은 코드로 주문을 넣고있는데 옵션종목 매도면 GetBidByCode 를 사용하고 옵션종목 매수면 GetAskByCode를 사용하고있습니다 예) var BxCallPrice = Option1.GetBidByCode(buycallcode,5); var BxPutPrice = Option1.GetAskByCode(buyputcode,5); Account1.OrderSell(buyputcode, putQuantity, BuyPutPrice, 1); 첨부파일에도 보시면 아시겠지만 주문가격이 모두 0.00으로 표기되고있고 주문상태는 오류발생으로 표기되고있습니다. 다른 곳에서는 주문상태는 시험적용으로 되어있는데 주문가격은 0.00으로 표기가 되고있습니다. 저함수를 써서 주문을 넣었는데 왜 주문상태에서는 0.00으로 표기되는지 궁금합니다 var Start var buycallcode var buyputcode var sellcallcode var sellputcode var UNum; var LNum; var CallCode; var CallPrice; var PutCode; var PutPrice; var CC; var PP; var callQuantity; var putQuantity; var buyQuantity = 3000000; var sellQuantity = 1; function Main_OnStart() { Main.MessageLog("시작"); Start = 1; } function Chart1_OnRiseSignal(Signal) { Main.MessageLog("신호완성/" + Signal.signalKind); //매수진입 if(Signal.signalKind ==1) { UNum = Option1.uppersATM; LNum = Option1.lowersATM; CallPrice = new Array(UNum + LNum + 1); CallCode = new Array(UNum + LNum + 1); PutPrice = new Array(UNum + LNum + 1); PutCode = new Array(UNum + LNum + 1); for(var i = -LNum; i <= UNum; i++) { if(Option1.GetCurrent(0,i) <= 2.0) { CallPrice[i+LNum] = Option1.GetCurrent(0, i); CallCode[i+LNum] = Option1.GetATMCallRecent(i); } else { CallPrice[i+LNum] = -1; CallCode[i+LNum] = -1; } } for (var ii = -UNum; ii <= LNum; ii++) { if (Option1.GetCurrent(1, ii) <= 2.5) { PutPrice[ii+UNum] = Option1.GetCurrent(1, ii); PutCode[ii+UNum] = Option1.GetATMPutRecent(ii); } else { PutPrice[ii+UNum] = -1; PutCode[ii+UNum] = -1; } } CC = -1; buycallcode = -1; for (var iii = -LNum; iii <= UNum; iii++) { if (CallPrice[iii+LNum] > CC) { CC = CallPrice[iii+LNum]; buycallcode = CallCode[iii+LNum] } } PP = -1; buyputcode = -1; for (var iiii = -UNum; iiii <= LNum; iiii++) { if (PutPrice[iiii+UNum] > PP) { PP = PutPrice[iiii+UNum]; buyputcode = PutCode[iiii+UNum]; } } Start = 1; var BuyCallPrice = Option1.GetAskByCode(buycallcode,5); callQuantity = Math.round(buyQuantity / BuyCallPrice / 250000); Account1.OrderBuy(buycallcode, callQuantity, BuyCallPrice, 1); var BuyPutPrice = Option1.GetBidByCode(buyputcode,5); putQuantity = sellQuantity; Account1.OrderSell(buyputcode, putQuantity, BuyPutPrice, 1); Main.MessageLog("선물매수"); } //매수청산 if(Start == 1 && Signal.signalKind == 2) { var BxCallPrice = Option1.GetBidByCode(buycallcode,5); var BxPutPrice = Option1.GetAskByCode(buyputcode,5); Account1.OrderSell(buycallcode, callQuantity, BxCallPrice, 1); Account1.OrderBuy(buyputcode, putQuantity, BxPutPrice, 1); Main.MessageLog("선물매수청산"); } //매도진입 if(Signal.signalKind ==3) { UNum = Option1.uppersATM; LNum = Option1.lowersATM; CallPrice = new Array(UNum + LNum + 1); CallCode = new Array(UNum + LNum + 1); PutPrice = new Array(UNum + LNum + 1); PutCode = new Array(UNum + LNum + 1); for(var i = -LNum; i <= UNum; i++) { if(Option1.GetCurrent(0,i) <= 2.0) { CallPrice[i+LNum] = Option1.GetCurrent(0, i); CallCode[i+LNum] = Option1.GetATMCallRecent(i); } else { CallPrice[i+LNum] = -1; CallCode[i+LNum] = -1; } } for (var ii = -UNum; ii <= LNum; ii++) { if (Option1.GetCurrent(1, ii) <= 2.5) { PutPrice[ii+UNum] = Option1.GetCurrent(1, ii); PutCode[ii+UNum] = Option1.GetATMPutRecent(ii); } else { PutPrice[ii+UNum] = -1; PutCode[ii+UNum] = -1; } } CC = -1; buycallcode = -1; for (var iii = -LNum; iii <= UNum; iii++) { if (CallPrice[iii+LNum] > CC) { CC = CallPrice[iii+LNum]; buycallcode = CallCode[iii+LNum] } } PP = -1; buyputcode = -1; for (var iiii = -UNum; iiii <= LNum; iiii++) { if (PutPrice[iiii+UNum] > PP) { PP = PutPrice[iiii+UNum]; buyputcode = PutCode[iiii+UNum]; } } Start = 1; var BuyCallPrice = Option1.GetBidByCode(buycallcode,5); callQuantity = sellQuantity; Account1.OrderSell(buycallcode, callQuantity, BuyCallPrice, 1); var BuyPutPrice = Option1.GetAskByCode(buyputcode,5); putQuantity = Math.round(buyQuantity / BuyPutPrice / 250000); Account1.OrderBuy(buyputcode, putQuantity, BuyPutPrice, 1); Main.MessageLog("선물매도"); } //매도청산 if(Start == 1 && Signal.signalKind == 4) { var BxCallPrice = Option1.GetAskByCode(buycallcode, 5); Account1.OrderBuy(buycallcode, callQuantity, BxCallPrice, 1); var BxPutPrice = Option1.GetBidByCode(buyputcode,5); Account1.OrderSell(buyputcode, putQuantity, BxPutPrice, 1); Main.MessageLog("선물매도청산"); } }