커뮤니티

시스템적용후 강제청산시 에라

프로필 이미지
심심00
2017-02-21 14:49:23
2590
글번호 224124
답변완료
1.시스템은 수동진입 시스템청산 으로 되어있습니다. 그런데, 수동진입후, 불가피하게 수동청산을 하게되는경우가 있는데, 다시 수동 재 진입하게 되면, "TypeError :cannot read property 'code'of undefined 메시지가 출력되며,멈추게 됩니다. 처리를 어떻게 해야할까요? function Main_OnUp*dateMarket(sItemCode, lUp*dateID) { for (var i=1 ; i <= Nth ; i++) //편입된 종목수 만큼만 수행 { if (ItemObject[i].code == sItemCode && lUp*dateID == 20001) 2. 수동주문에 대해 OCO 주문발생 하는 방법 아래처럼, 주문취소식을 넣었으나, 수동주문한 것에 대한 취소가 되지 않습니다. 강제 취소할 수 있는 방법은 없는지요? 예) 272.0 매수진입, 로스컷 0.20 , 손주문 272.30 예약 로스컷 발생전 손주문한 272.30 주문 취소. if (ItemObject[i].current <= Account1.Balance.avgUnitCost - ItemObject[i].GetTickSize()*LosscutTick)//손절 { //매수청산하려는데 매수익걸 매도주문 미체결 있으면 취소 Account1.SetUnfill(SellNum); if (Account1.Unfill.count > 0) { Account1.OrderCancel(SellNum); } BuyAvg = Account1.Balance.avgUnitCost; BxID = Account1.OrderSell(Account1.Balance.code,Account1.Balance.count, ItemObject[i].Bid(1), 2); T = 1; Main.MessageLog("매수손절");
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2017-03-15 18:17:48

안녕하세요 예스스탁입니다. 1. TypeError :cannot read property 'code'of undefined 위 메세지는 특정객체에서 code라는 프로퍼티가 없을때 발생하게 되는데 i가 1부터 nth까지 수행되는데 ItemObject[i]에 아직 종목객체가 할당되어 있지 않을때 발생하게 됩니다 3종목 수동으로 주문했서 nth는 3인데 ItemObject[0],ItemObject[1],ItemObject[2]에 각 종목객체가 할당이 되어 있다면 ItemObject[3]이 없으므로 에러가 납니다. for문을 아래와 같이 수정해 보시깁 바랍니다. 1부터가 아닌 0부터 시작하고 nth보다 1낮은 값까지만 루프가 돌게 됩니다. for (var i=0 ; i < Nth ; i++) 2 수식에서 수동주문한 주문에 대한 주문번호가 스팟에 자동으로 기억되는 것이 아니므로 아래와 같이 특정조건일때 해당종목에 대한 모든 미체결 주문을 취소하게 하고 청산하게 하셔야 합니다. if (ItemObject[i].current <= Account1.Balance.avgUnitCost - ItemObject[i].GetTickSize()*LosscutTick)//손절 { //ItemObject[i].code에 대한 모든 미체결 주문을 취소 var num = Account1.GetTheNumberOfUnfills(); for (var i = 0; i < num ; i++) { Account1.SetUnfill(i); if (Account1.Unfill.code == ItemObject[i].code && Account1.Unfill.count > 0) { Account1.OrderCancel(Account1.Unfill.orderNum); } } BuyAvg = Account1.Balance.avgUnitCost; BxID = Account1.OrderSell(Account1.Balance.code,Account1.Balance.count, ItemObject[i].Bid(1), 2); T = 1; Main.MessageLog("매수손절"); } 즐거운 하루되세요 > 심심00 님이 쓴 글입니다. > 제목 : 시스템적용후 강제청산시 에라 > 1.시스템은 수동진입 시스템청산 으로 되어있습니다. 그런데, 수동진입후, 불가피하게 수동청산을 하게되는경우가 있는데, 다시 수동 재 진입하게 되면, "TypeError :cannot read property 'code'of undefined 메시지가 출력되며,멈추게 됩니다. 처리를 어떻게 해야할까요? function Main_OnUp*dateMarket(sItemCode, lUp*dateID) { for (var i=1 ; i <= Nth ; i++) //편입된 종목수 만큼만 수행 { if (ItemObject[i].code == sItemCode && lUp*dateID == 20001) 2. 수동주문에 대해 OCO 주문발생 하는 방법 아래처럼, 주문취소식을 넣었으나, 수동주문한 것에 대한 취소가 되지 않습니다. 강제 취소할 수 있는 방법은 없는지요? 예) 272.0 매수진입, 로스컷 0.20 , 손주문 272.30 예약 로스컷 발생전 손주문한 272.30 주문 취소. if (ItemObject[i].current <= Account1.Balance.avgUnitCost - ItemObject[i].GetTickSize()*LosscutTick)//손절 { //매수청산하려는데 매수익걸 매도주문 미체결 있으면 취소 Account1.SetUnfill(SellNum); if (Account1.Unfill.count > 0) { Account1.OrderCancel(SellNum); } BuyAvg = Account1.Balance.avgUnitCost; BxID = Account1.OrderSell(Account1.Balance.code,Account1.Balance.count, ItemObject[i].Bid(1), 2); T = 1; Main.MessageLog("매수손절");