커뮤니티

오류검토요청

프로필 이미지
심심00
2017-02-20 18:44:00
135
글번호 107040
답변완료

첨부 이미지

기교육내용중 수동진입 자동청산 시스템입니다. 조건 : 모의거래중 오류 : 수동진입시 스팟에 편입 메시지 나오지 않음.(물론 청산도 안됩니다.) [계좌객체명은 Account1으로 설정] 처음이라, 세팅을 잘못했는지도 모르겠습니다. 조언 부탁드리겠습니다. *금지어설정이 되어있어, 업데이트를 UD로 변경해서 올립니다. var Nth = 0; var ItemCode = new Array(10); var ItemObject = new Array(10); var ItemHigh = new Array(10); //종목추가 function Main_OnUDAccount(sAccntNum, sItemCode, lUDID) { if (lUDID == 30001) { Nth = Nth + 1;//횟수 ItemCode[Nth] = sItemCode; Main.ReqMarketData(ItemCode[cnt], 0,0);//종목개체 생성요청 Main.MessageList("@_@",Nth,"번째","신규종목편입 ",ItemCode,"> 종목객체요청"); } } //종목개체 생성완료 function Main_OnRcvMarketData(MarketData) { if(MarketData.code == ItemCode[Nth]) { ItemObject[Nth] = MarketData; ItemHigh = 0; Main.MessageList(Nth,"번째","종목개체생성완료 : ",ItemObject[Nth].code) } } function Main_OnUDMarket(sItemCode, lUDID) { for (var i=1 ; i <= Nth; i++) //편입된 종목수 만큼만 수행 { if (ItemObject[i].code == sItemCode && lUDID ==20001) { //잔고세팅 Account1.SetBalanceItem(ItemObject[i].code,0 ); //종목편입이후 최고가 계산 if (ItemObject[i].current > ItemHigh[i]) { ItemHigh[i]=ItemObject[i].current; } if (Account1.Balance.position ==2) { if (ItemObject[i].current >= Account1lUDID.Balance.avgUnitCost+ItemObject[i].GetTickSize()*6)//익절 { Account1.OrderSell(Account1.Balance.code,Account1.Balance.count, 0, 1); Main.RemoveMarketData(ItemObject[i]); } if (ItemObject[i].current <= Account1.Balance.avgUnitCost - ItemObject[i].GetTickSize()*6)//손절 { Account1.OrderSell(Account1.Balance.code,Account1.Balance.count, 0, 1); Main.RemoveMarketData(ItemObject[i]); } if (ItemHigh[i].current >= Account1.Balance.avgUnitCost + ItemObject[i].GetTickSize()*4 && ItemObject[i].current <= Account1.Balance.avgUnitCost + MarketData1.GetTickSize()*2)//익절 { Account1.OrderSell(Account1.Balance.code,Account1.Balance.count, 0, 1); } } } } }
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2017-02-21 12:38:01

안녕하세요 예스스탁입니다. 1 수식에 오류가 있는 부분을 수정했습니다. 이후의 내용은 사용자분이 테스트 하시면서 수정보완해 가셔야 합니다. 2 스팟에 대한 문의는 스팟Q&Q게시판에 올려주시기 바랍니다 이후에는 스팟게시판으로 이동됩니다. 3 수정한 식입니다. 테스트 하면 첨부된 그림과 같이 나오게 됩니다. var Nth = 0; var ItemCode = new Array(10); var ItemObject = new Array(10); var ItemHigh = new Array(10); //종목추가 function Main_OnUp*dateAccount(sAccntNum, sItemCode, lUp*dateID) { if (lUp*dateID == 30001) { Nth = Nth + 1;//횟수 ItemCode[Nth] = sItemCode; Main.ReqMarketData(ItemCode[Nth], 0,0);//종목개체 생성요청 Main.MessageList("@_@",Nth,"번째","신규종목편입 ",ItemCode,"> 종목객체요청"); } } //종목개체 생성완료 function Main_OnRcvMarketData(MarketData) { if(MarketData.code == ItemCode[Nth]) { ItemObject[Nth] = MarketData; ItemHigh[Nth] = 0; Main.MessageList(Nth,"번째","종목개체생성완료 : ",ItemObject[Nth].code) } } function Main_OnUp*dateMarket(sItemCode, lUp*dateID) { for (var i = 1; i <= Nth; i++) //편입된 종목수 만큼만 수행 { if (ItemObject[i].code == sItemCode && lUp*dateID ==20001) { //잔고세팅 Account1.SetBalanceItem(ItemObject[i].code,0 ); //종목편입이후 최고가 계산 if (ItemObject[i].current > ItemHigh[i]) { ItemHigh[i]=ItemObject[i].current; } if (Account1.Balance.position ==2) { if (ItemObject[i].current >= Account1.Balance.avgUnitCost + ItemObject[i].GetTickSize()*6)//익절 { Account1.OrderSell(Account1.Balance.code,Account1.Balance.count, 0, 1); Main.RemoveMarketData(ItemObject[i]); } if (ItemObject[i].current <= Account1.Balance.avgUnitCost - ItemObject[i].GetTickSize()*6)//손절 { Account1.OrderSell(Account1.Balance.code,Account1.Balance.count, 0, 1); Main.RemoveMarketData(ItemObject[i]); } if (ItemHigh[i] >= Account1.Balance.avgUnitCost + ItemObject[i].GetTickSize()*4 && ItemObject[i].current <= Account1.Balance.avgUnitCost + ItemObject[i].GetTickSize()*2)//익절 { Account1.OrderSell(Account1.Balance.code,Account1.Balance.count, 0, 1); Main.RemoveMarketData(ItemObject[i]); } } } } } 즐거운 하루되세요 > 심심00 님이 쓴 글입니다. > 제목 : 오류검토요청 > 기교육내용중 수동진입 자동청산 시스템입니다. 조건 : 모의거래중 오류 : 수동진입시 스팟에 편입 메시지 나오지 않음.(물론 청산도 안됩니다.) [계좌객체명은 Account1으로 설정] 처음이라, 세팅을 잘못했는지도 모르겠습니다. 조언 부탁드리겠습니다. *금지어설정이 되어있어, 업데이트를 UD로 변경해서 올립니다. var Nth = 0; var ItemCode = new Array(10); var ItemObject = new Array(10); var ItemHigh = new Array(10); //종목추가 function Main_OnUDAccount(sAccntNum, sItemCode, lUDID) { if (lUDID == 30001) { Nth = Nth + 1;//횟수 ItemCode[Nth] = sItemCode; Main.ReqMarketData(ItemCode[cnt], 0,0);//종목개체 생성요청 Main.MessageList("@_@",Nth,"번째","신규종목편입 ",ItemCode,"> 종목객체요청"); } } //종목개체 생성완료 function Main_OnRcvMarketData(MarketData) { if(MarketData.code == ItemCode[Nth]) { ItemObject[Nth] = MarketData; ItemHigh = 0; Main.MessageList(Nth,"번째","종목개체생성완료 : ",ItemObject[Nth].code) } } function Main_OnUDMarket(sItemCode, lUDID) { for (var i=1 ; i <= Nth; i++) //편입된 종목수 만큼만 수행 { if (ItemObject[i].code == sItemCode && lUDID ==20001) { //잔고세팅 Account1.SetBalanceItem(ItemObject[i].code,0 ); //종목편입이후 최고가 계산 if (ItemObject[i].current > ItemHigh[i]) { ItemHigh[i]=ItemObject[i].current; } if (Account1.Balance.position ==2) { if (ItemObject[i].current >= Account1lUDID.Balance.avgUnitCost+ItemObject[i].GetTickSize()*6)//익절 { Account1.OrderSell(Account1.Balance.code,Account1.Balance.count, 0, 1); Main.RemoveMarketData(ItemObject[i]); } if (ItemObject[i].current <= Account1.Balance.avgUnitCost - ItemObject[i].GetTickSize()*6)//손절 { Account1.OrderSell(Account1.Balance.code,Account1.Balance.count, 0, 1); Main.RemoveMarketData(ItemObject[i]); } if (ItemHigh[i].current >= Account1.Balance.avgUnitCost + ItemObject[i].GetTickSize()*4 && ItemObject[i].current <= Account1.Balance.avgUnitCost + MarketData1.GetTickSize()*2)//익절 { Account1.OrderSell(Account1.Balance.code,Account1.Balance.count, 0, 1); } } } } }