box arbitrage 전략을 짜고있는데요
if (NotifyFill.orderNum == Num_SSFCall
&& NotifyFill.orderNum == Num_SSFPut
&& NotifyFill.orderNum == Num_LSFCall
&& NotifyFill.orderNum == Num_LSFPut)
이런식으로 넣으면 onnotifyFill이 4번 돌아가는건가요??
저렇게 네개의 주문이 전부 체결됐을 때 한번 조건문을 돌리고 싶으면 어떻게해야하나요??
if (NotifyFill.orderNum == Num_SSFCall)
if (NotifyFill.orderNum == Num_SSFPut)
if (NotifyFill.orderNum == Num_LSFCall)
if (NotifyFill.orderNum == Num_LSFPut)
이런식으로 해야하나요??
답변 1
예스스탁
예스스탁 답변
2017-11-01 16:24:29
안녕하세요
예스스탁입니다.
체결통보이벤트 function Main_OnNotifyFill(NotifyFill)는
체결이 발생할때마다 동작되고
이벤트가 발생하면 NotifyFill객체는 현재 발생한 체결통보의 내용만 담기게 됩니다.
체결통보 내용은 히스토리로 제공되거나 여러건이 제공되는 것이 아닙니다.
그러므로 별도의 변수를 만들어 주문시 false를 기본값으로 하고
주문별 체결이 발생하면 true로 만들고 이후에 해당 변수들이 모두 true일때를 체크해 주어야 합니다.
아래 내용 참고하시기 바랍니다.
var Num_SSFCall,Num_SSFPut,Num_LSFCall,Num_LSFPut;
var Fill_SSFCall,Fill_SSFPut,Fill_LSFCall,Fill_LSFPut;
주문이 발생하는 이벤트
{
주문~~~~
//주문시 false
Fill_SSFCall = false
Fill_SSFPut = false
Fill_LSFCall = false
Fill_LSFPut = false
}
function Main_OnNotifyFill(NotifyFill)
{
//각 주문별 체결발생시 true
if (NotifyFill.orderNum == Num_SSFCall)
{
Fill_SSFCall = true;
}
if (NotifyFill.orderNum == Num_SSFPut)
{
Fill_SSFPut = true;
}
if (NotifyFill.orderNum == Num_LSFCall)
{
Fill_LSFCall = true;
}
if (NotifyFill.orderNum == Num_LSFPut)
{
Fill_LSFPut = true;
}
}
위와 같이 변수에 true값을 할당후
if (Fill_SSFCall == true
&& Fill_SSFPut == true
&& Fill_LSFCall == true
&& Fill_LSFPut == true )
필요한 위치에서 위와 같은 조건으로 체크하시면 됩니다.
즐거운 하루되세요
> 피터멀러 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> box arbitrage 전략을 짜고있는데요
if (NotifyFill.orderNum == Num_SSFCall
&& NotifyFill.orderNum == Num_SSFPut
&& NotifyFill.orderNum == Num_LSFCall
&& NotifyFill.orderNum == Num_LSFPut)
이런식으로 넣으면 onnotifyFill이 4번 돌아가는건가요??
저렇게 네개의 주문이 전부 체결됐을 때 한번 조건문을 돌리고 싶으면 어떻게해야하나요??
if (NotifyFill.orderNum == Num_SSFCall)
if (NotifyFill.orderNum == Num_SSFPut)
if (NotifyFill.orderNum == Num_LSFCall)
if (NotifyFill.orderNum == Num_LSFPut)
이런식으로 해야하나요??