커뮤니티

수식에러가 나는데 도움요청드립니다.

프로필 이미지
수다리
2017-10-19 22:45:33
2633
글번호 224228
답변완료
해외선물을 매매하는데요 청산만 수식에 적용하려고 해서 글을 찾아보다가 아래 식을 사용하려고 하는데요 검증누르면 검증이 완료&#46124;다고 나오긴합니다. 한국투자증권 이프렌드 글로벌 사용중인데 모의투자로 접속해서 스팟을 적용시켜 놓고 매매창에서 한계약 들어가면 메세지를 달아 디버그창으로 확인해보면 청산 항목부터 진행이 안됩니다. 한계약 수동으로 진입하면 //요청받은 종목객체 생성완료 여기까진 메세지가 나오는데 그 아래 청산부분 //종목객체 시세 업데이트 여기부터 수식에서 계속 루프가 돌고 청산이 실행이 안됩니다. 확인 좀 부탁드립니다 ㅠ var Nth = 0; var ItemCode = new Array(100); var ItemObject = new Array(100); function Main_OnStart() { Nth = 0; } //계좌의 종목편입 function Main_OnUp*dateAccount(sAccntNum, sItemCode, lUp*dateID)//*제거 { //Account1 계좌에 종목이 편입 if (Account1.number == sAccntNum && lUp*dateID == 30001)//*제거 { //해당종목 잔고 셋팅 Nth = Nth+1;//스팟 실행 후 편입된 종목수 ItemCode[Nth] = sItemCode; //종목코드 저장 Main.ReqMarketData(ItemCode[Nth], 0,0);//종목객체 생성요청 } //Account1 계좌에 종목이 청산되 없어짐 if (Account1.number == sAccntNum && lUp*dateID == 30002)//*제거 { //이전에 생성한 종목객체가 필요없으므로 종목객체를 삭제 for (var i = 1; i <= Nth; i++) { if (sItemCode == ItemObject[i].code) { Main.RemoveMarketData(ItemObject[i]); } } } } //요청받은 종목객체 생성완료 function Main_OnRcvMarketData(MarketData) { if (MarketData.code == ItemCode[Nth]) { ItemObject[Nth] = MarketData; } } //종목객체 시세 업데이트 function Main_OnUp*dateMarket(sItemCode, lUp*dateID)//*제거 { if (Nth >= 1) { //편입된 종목수 만&#53380;만 수행 for (var i = 1; i <= Nth; i++) { if (ItemObject[i].code == sItemCode && lUp*dateID == 20001)//*제거 { //잔고셋팅 Account1.SetBalanceItem(ItemObject[i].code,0); //매수잔고 if (Account1.Balance.position == 2 && Account1.Balance.count > 0) { // 현재가가 평균단가 대비 20틱이상 하락하면 시장가로 매도주문 if (ItemObject[i].current <= Account1.Balance.avgUnitCost-ItemObject[i].GetTickSize()*20) { Account1.OrderSell(Account1.Balance.code,Account1.Balance.count, 0,1); //주문 후 해당 종목객체 삭제 Main.RemoveMarketData(ItemObject[i]); } } //매도잔고 if (Account1.Balance.position == 1 && Account1.Balance.count > 0) { // 현재가가 평균단가 대비 20틱이상 상승하면 시장가로 매수주문 if (ItemObject[i].current >= Account1.Balance.avgUnitCost+ItemObject[i].GetTickSize()*20) { Account1.OrderBuy(Account1.Balance.code,Account1.Balance.count, 0,1); //주문 후 해당 종목객체 삭제 Main.RemoveMarketData(ItemObject[i]); } } } } } }
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2017-11-01 16:49:28

안녕하세요 예스스탁입니다. 올려주신 수식에 모의투자에 적용해 보았지만 수동주문후 정상적으로 청산되고 있습니다. 문법에러도 발생하는 부분이 없습니다. 테스트는 20틱이 아닌 5틱으로 했습니다. 청산이 미리 특정가격에 발생하는 것이 아닙니다. 수동주문후 현재가가 손절가에 도잘하면 그때 주문이 집행됩니다. 즐거운 하루되세요 > 수다리 님이 쓴 글입니다. > 제목 : 수식에러가 나는데 도움요청드립니다. > 해외선물을 매매하는데요 청산만 수식에 적용하려고 해서 글을 찾아보다가 아래 식을 사용하려고 하는데요 검증누르면 검증이 완료&#46124;다고 나오긴합니다. 한국투자증권 이프렌드 글로벌 사용중인데 모의투자로 접속해서 스팟을 적용시켜 놓고 매매창에서 한계약 들어가면 메세지를 달아 디버그창으로 확인해보면 청산 항목부터 진행이 안됩니다. 한계약 수동으로 진입하면 //요청받은 종목객체 생성완료 여기까진 메세지가 나오는데 그 아래 청산부분 //종목객체 시세 업데이트 여기부터 수식에서 계속 루프가 돌고 청산이 실행이 안됩니다. 확인 좀 부탁드립니다 ㅠ var Nth = 0; var ItemCode = new Array(100); var ItemObject = new Array(100); function Main_OnStart() { Nth = 0; } //계좌의 종목편입 function Main_OnUp*dateAccount(sAccntNum, sItemCode, lUp*dateID)//*제거 { //Account1 계좌에 종목이 편입 if (Account1.number == sAccntNum && lUp*dateID == 30001)//*제거 { //해당종목 잔고 셋팅 Nth = Nth+1;//스팟 실행 후 편입된 종목수 ItemCode[Nth] = sItemCode; //종목코드 저장 Main.ReqMarketData(ItemCode[Nth], 0,0);//종목객체 생성요청 } //Account1 계좌에 종목이 청산되 없어짐 if (Account1.number == sAccntNum && lUp*dateID == 30002)//*제거 { //이전에 생성한 종목객체가 필요없으므로 종목객체를 삭제 for (var i = 1; i <= Nth; i++) { if (sItemCode == ItemObject[i].code) { Main.RemoveMarketData(ItemObject[i]); } } } } //요청받은 종목객체 생성완료 function Main_OnRcvMarketData(MarketData) { if (MarketData.code == ItemCode[Nth]) { ItemObject[Nth] = MarketData; } } //종목객체 시세 업데이트 function Main_OnUp*dateMarket(sItemCode, lUp*dateID)//*제거 { if (Nth >= 1) { //편입된 종목수 만&#53380;만 수행 for (var i = 1; i <= Nth; i++) { if (ItemObject[i].code == sItemCode && lUp*dateID == 20001)//*제거 { //잔고셋팅 Account1.SetBalanceItem(ItemObject[i].code,0); //매수잔고 if (Account1.Balance.position == 2 && Account1.Balance.count > 0) { // 현재가가 평균단가 대비 20틱이상 하락하면 시장가로 매도주문 if (ItemObject[i].current <= Account1.Balance.avgUnitCost-ItemObject[i].GetTickSize()*20) { Account1.OrderSell(Account1.Balance.code,Account1.Balance.count, 0,1); //주문 후 해당 종목객체 삭제 Main.RemoveMarketData(ItemObject[i]); } } //매도잔고 if (Account1.Balance.position == 1 && Account1.Balance.count > 0) { // 현재가가 평균단가 대비 20틱이상 상승하면 시장가로 매수주문 if (ItemObject[i].current >= Account1.Balance.avgUnitCost+ItemObject[i].GetTickSize()*20) { Account1.OrderBuy(Account1.Balance.code,Account1.Balance.count, 0,1); //주문 후 해당 종목객체 삭제 Main.RemoveMarketData(ItemObject[i]); } } } } } }