커뮤니티

수식 관련

프로필 이미지
지나리
2021-01-18 11:00:52
2709
글번호 225399
답변완료
안녕하세요. 제가 첨부한 식은 차트에서 매수청산신호 또는 매도신호 발생 시에 보유 중인 콜옵션 전량 청산하는 식인데요. 하기 첨부한 식을 시험주문을 한 결과, 주문가격에 "1.-214789786" 이란 값이 뜨고 청산이 되지 않는 듯 합니다. 오류가 무엇인지 알려주시면 감사하겠습니다. { var d = new Date(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (M1.code == sItemCode) { if ( (BuyCond == 19) || ( BuyCond == 9 && C2.GetIndicatorData("CCI", 1, 0) <= C2.GetIndicatorData("CCI", 2, 0) ) ) { BuyCond = 111; Main.MessageList("BuyCond:" ,BuyCond); /* 계좌 보유 종목수 */ var num = A1.GetTheNumberOfBalances(); for (var i = 0; i < num; i++) { /* 순서대로 종목셋팅 */ A1.SetBalance(i); /* 셋팅된 종목이 옵션인지 확인 */ if (Option.GetCurrent(A1.Balance.code) > 0) { /* 매수포지션 수량이 있으면 */ if (A1.Balance.count > 0 && A1.Balance.position == 2) { /* 매도3호가로 전량 청산 */ A1.OrderSell(A1.Balance.code, A1.Balance.count,Option.GetAsk(Callcode, 3), 0); } } } }
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2021-02-17 16:21:17

안녕하세요 예스스탁입니다. Option.GetAsk(Callcode, 3) 주문가격에 "1.-214789786" 와 같은 내용은 지정한 종목의 해당 호가에 값이 없거나 또는 Option.GetAsk에 지정된 종목코드가 잘못 지정되어 값이 없는 경우에 nan이 발생한 경우입니다. 수식은 잔고를 셋팅해서 해당잔고가 옵션인지 확인하고 주문을 집행하게 되는데 주문가격은 Callcode에 저장된 종목코드가 사용 되어 있습니다. Option.GetAsk(A1.Balance.code, 3)로 변경하셔야 합니다. 또한 호가가 없을 경우를 대비해서 만약 지정한 호가가 없으면 다른 가격으로 지정하는 내용이 필요합니다. { var d = new Date(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (M1.code == sItemCode) { if ( (BuyCond == 19) || ( BuyCond == 9 && C2.GetIndicatorData("CCI", 1, 0) <= C2.GetIndicatorData("CCI", 2, 0) ) ) { BuyCond = 111; Main.MessageList("BuyCond:" ,BuyCond); /* 계좌 보유 종목수 */ var num = A1.GetTheNumberOfBalances(); for (var i = 0; i < num; i++) { /* 순서대로 종목셋팅 */ A1.SetBalance(i); /* 셋팅된 종목이 옵션인지 확인 */ if (Option.GetCurrent(A1.Balance.code) > 0) { /* 매수포지션 수량이 있으면 */ if (A1.Balance.count > 0 && A1.Balance.position == 2) { /* 매도3호가로 전량 청산 */ //최초 현재가 저장 var OP = Option.GetCurrent(A1.Balance.code); //매도1호가가 있으면 매도1호가 저장 if Option.GetAsk(A1.Balance.code, 1) > 0 then OP = Option.GetAsk(A1.Balance.code, 1); //매도2호가가 있으면 매도2호가 저장 if Option.GetAsk(A1.Balance.code, 2) > 0 then OP = Option.GetAsk(A1.Balance.code, 2); //매도3호가가 있으면 매도3호가 저장 if Option.GetAsk(A1.Balance.code, 3) > 0 then OP = Option.GetAsk(A1.Balance.code, 3); A1.OrderSell(A1.Balance.code, A1.Balance.count,OP, 0); } } } } 즐거운 하루되세요 > 지나리 님이 쓴 글입니다. > 제목 : 수식 관련 > 안녕하세요. 제가 첨부한 식은 차트에서 매수청산신호 또는 매도신호 발생 시에 보유 중인 콜옵션 전량 청산하는 식인데요. 하기 첨부한 식을 시험주문을 한 결과, 주문가격에 "1.-214789786" 이란 값이 뜨고 청산이 되지 않는 듯 합니다. 오류가 무엇인지 알려주시면 감사하겠습니다. { var d = new Date(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (M1.code == sItemCode) { if ( (BuyCond == 19) || ( BuyCond == 9 && C2.GetIndicatorData("CCI", 1, 0) <= C2.GetIndicatorData("CCI", 2, 0) ) ) { BuyCond = 111; Main.MessageList("BuyCond:" ,BuyCond); /* 계좌 보유 종목수 */ var num = A1.GetTheNumberOfBalances(); for (var i = 0; i < num; i++) { /* 순서대로 종목셋팅 */ A1.SetBalance(i); /* 셋팅된 종목이 옵션인지 확인 */ if (Option.GetCurrent(A1.Balance.code) > 0) { /* 매수포지션 수량이 있으면 */ if (A1.Balance.count > 0 && A1.Balance.position == 2) { /* 매도3호가로 전량 청산 */ A1.OrderSell(A1.Balance.code, A1.Balance.count,Option.GetAsk(Callcode, 3), 0); } } } }