커뮤니티

문의

프로필 이미지
좌오비우오비
2023-06-29 13:58:45.0
998
글번호 225809
답변완료

첨부 이미지

차트 c sell주문 미니옵션 풋옵션 매수 ok 차트 c "c"이름 청산으로 청산 주문이 나가긴 했는데 첨부 메세지 뜨면서 오류가 발생했습니다. 수식 오류 수정 부탁드립니다. *************************************************************************** var UNum; var LNum; var CallCode; var CallPrice; var PutCode; var PutPrice; var CC; var PP; var CallOrderCode; var PutOrderCode; var CallExit,PutExit; var X1,X2; var BID,BNUM,PLCheck; function Main_OnStart() { CallExit = false; PutExit = false; Main.SetTimer(1, 5000); } //차트에서 신호가 발생하면 function Chart1_OnRiseSignal(Signal) { //해당 신호가 매도신호이면 if (Signal.signalKind == 3) { PutOrderCode = Option1.GetATMPutRecent(1);//*** 풋옵션 외가격-1 을 찾는다 //풋옵션종목 매수 if (PutExit == false) { //지정가 Account1.OrderBuy(PutOrderCode, 1, Option1.GetAskByCode(PutOrderCode, 2), 0); //시장가 //Account1.OrderBuy(PutOrderCode, 1, 0, 1); PLCheck = false; X1 = false; X2 = false; Main.SetTimer(1, 1000);//1초 타이머 } } if (Signal.signalKind == 4 && Signal.name == "c") { X1 = true; //1) if (X1 == true || X2 == true) { Account1.OrderSell(PutOrderCode, 1, Option1.GetBidByCode(PutOrderCode, 2), 0); PLCheck = false; } } } function Chart2_OnRiseSignal(Signal) { s2 = Signal.signalKind; if (Signal.signalKind == 4 && Signal.name == "d") { X2 = true; //1) if (X1 == true || X2 == true) { Account1.OrderSell(PutOrderCode, 1, Option1.GetBidByCode(PutOrderCode, 2), 0); PLCheck = false; } } }
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2023-07-25 16:56:59.0

안녕하세요 예스스탁입니다. 스팟은 차트와 다르게 과거봉이라는 개념이 없습니다. 실시간에서 동작시에만 변수에 값을 저장하고 사용할 수 있습니다. 첨부하신 그림으로 판단하면 c차트에서 매도신호 발생했을 때 매수진입을 한 내역이 없습니다. 단지 매도청산신호발생해서 PutOrderCode에 저장된 종목으로 매도주문이 집행됐는데 PutOrderCode에 종목코드가 저장되어 있지 않은 상태에서 주문이 집행되 에러가 발생한 케이스입니다. 차트의 과거봉에 진입이 있어도 자동으로 PutOrderCode에 종목코드가 저장되는 구조가 아닙니다. 해당식 정상적으로 집행이 되려면 진입신호가 발생되기 이전부터 스팟이 적용이 되어 있어야 합니다. 즐거운 하루되세요 > 좌오비우오비 님이 쓴 글입니다. > 제목 : 문의 > 차트 c sell주문 미니옵션 풋옵션 매수 ok 차트 c "c"이름 청산으로 청산 주문이 나가긴 했는데 첨부 메세지 뜨면서 오류가 발생했습니다. 수식 오류 수정 부탁드립니다. *************************************************************************** var UNum; var LNum; var CallCode; var CallPrice; var PutCode; var PutPrice; var CC; var PP; var CallOrderCode; var PutOrderCode; var CallExit,PutExit; var X1,X2; var BID,BNUM,PLCheck; function Main_OnStart() { CallExit = false; PutExit = false; Main.SetTimer(1, 5000); } //차트에서 신호가 발생하면 function Chart1_OnRiseSignal(Signal) { //해당 신호가 매도신호이면 if (Signal.signalKind == 3) { PutOrderCode = Option1.GetATMPutRecent(1);//*** 풋옵션 외가격-1 을 찾는다 //풋옵션종목 매수 if (PutExit == false) { //지정가 Account1.OrderBuy(PutOrderCode, 1, Option1.GetAskByCode(PutOrderCode, 2), 0); //시장가 //Account1.OrderBuy(PutOrderCode, 1, 0, 1); PLCheck = false; X1 = false; X2 = false; Main.SetTimer(1, 1000);//1초 타이머 } } if (Signal.signalKind == 4 && Signal.name == "c") { X1 = true; //1) if (X1 == true || X2 == true) { Account1.OrderSell(PutOrderCode, 1, Option1.GetBidByCode(PutOrderCode, 2), 0); PLCheck = false; } } } function Chart2_OnRiseSignal(Signal) { s2 = Signal.signalKind; if (Signal.signalKind == 4 && Signal.name == "d") { X2 = true; //1) if (X1 == true || X2 == true) { Account1.OrderSell(PutOrderCode, 1, Option1.GetBidByCode(PutOrderCode, 2), 0); PLCheck = false; } } }