커뮤니티

문의드립니다.

프로필 이미지
연개소문1004
2015-07-28 13:09:33
129
글번호 88964
답변완료
항상 도와주셔서 감사합니다. 과거예제를 이용해서 계좌잔고에서 매도포지션이고 매도1호가가 (0.02 or 0.01)이면 0.01에 청산주문을 넣어놓으려고 만들어 보았습니다. 그런데, 매도호가가 0.02인 경우에는 청산이 실현이 되지않아 계속 주문이 반복됩니다. 해결할 참조수식 부탁드립니다. function Main_OnStart() { Main.SetTimer(1, 10000);//10초타이머 } function Main_OnTimer(nEventID) { if (nEventID == 1) { var num = Account1.GetTheNumberOfBalances(); for(var i = 0; i < num; i++) { //잔고셋팅 Account1.SetBalanceIndex(i); //옵션종목이면 if (Account1.Balance.code.substring(0,1) == "2" || Account1.Balance.code.substring(0,1) == "3") { //매도포지션이고 매도1호가가 (0.02 or 0.01)이면 0.01에 청산주문 if (Account1.Balance.position == 1 && ((Option.GetAsk(Account1.Balance.code, 1) == 0.02) || (Option.GetAsk(Account1.Balance.code, 1) == 0.01))) { Account1.OrderBuy(Account1.Balance.code,Account1.Balance.count,0.01,0); } } } } }
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2015-07-28 15:31:40

안녕하세요 예스스탁입니다. 매도1호가가 0.02이면 매수1호가가 0.01입니다. 매도포지션을 청산하는 매수주문을 내기위해서는 매도호가로 주문을 하실수 밖에 없습니다. 현재는 모두 0.01로 지정이 되어 있어 매도1호가가 0.02이면 매수호가로 매수주문이 발생하게 됩니다. 매도1호가로 모두 주문나나게 수정했습니다. function Main_OnStart() { Main.SetTimer(1, 10000);//10초타이머 } function Main_OnTimer(nEventID) { if (nEventID == 1) { var num = Account1.GetTheNumberOfBalances(); for(var i = 0; i < num; i++) { //잔고셋팅 Account1.SetBalanceIndex(i); //옵션종목이면 if (Account1.Balance.code.substring(0,1) == "2" || Account1.Balance.code.substring(0,1) == "3") { var Ask1 = Option.GetAsk(Account1.Balance.code, 1); Main.MessageList("매도1호가 : ",Ask1); //매도포지션이고 매도1호가가 (0.02 or 0.01)이면 0.01에 청산주문 if (Account1.Balance.position == 1 && ((Ask1 == 0.02) || (Ask1 == 0.01))) { Account1.OrderBuy(Account1.Balance.code,Account1.Balance.count,Ask1,0); } } } } } 즐거운 하루되세요 > 연개소문1004 님이 쓴 글입니다. > 제목 : 문의드립니다. > 항상 도와주셔서 감사합니다. 과거예제를 이용해서 계좌잔고에서 매도포지션이고 매도1호가가 (0.02 or 0.01)이면 0.01에 청산주문을 넣어놓으려고 만들어 보았습니다. 그런데, 매도호가가 0.02인 경우에는 청산이 실현이 되지않아 계속 주문이 반복됩니다. 해결할 참조수식 부탁드립니다. function Main_OnStart() { Main.SetTimer(1, 10000);//10초타이머 } function Main_OnTimer(nEventID) { if (nEventID == 1) { var num = Account1.GetTheNumberOfBalances(); for(var i = 0; i < num; i++) { //잔고셋팅 Account1.SetBalanceIndex(i); //옵션종목이면 if (Account1.Balance.code.substring(0,1) == "2" || Account1.Balance.code.substring(0,1) == "3") { //매도포지션이고 매도1호가가 (0.02 or 0.01)이면 0.01에 청산주문 if (Account1.Balance.position == 1 && ((Option.GetAsk(Account1.Balance.code, 1) == 0.02) || (Option.GetAsk(Account1.Balance.code, 1) == 0.01))) { Account1.OrderBuy(Account1.Balance.code,Account1.Balance.count,0.01,0); } } } } }