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("매수손절");