답변완료
질문
이전에 게시된 내용으로 공부하고 있습니다.
아래코드로 실험을 해보면 매수가 1백만원 이상으로 진행되는 것 같습니다.
첨부 화면2에 보시면 계속해서 동일 종목을 제시한 금액보다 많이 반복하여 매수하는 것 같습니다.
100만원까지만 매수할 수 있도록 정정하려면 어떻게 하면 될까요??
항상 감사합니다.
var BL = [];
var MK = [];
var ID = [];
var Num = [];
var Fill = [];
var req,MKreq;
var n1 = 60;//60초
var n2 = 5;//%
var mm = 1000000;//매수금액
var n3 = 30;//30종목
var run;
function Main_OnStart()
{
req = 0;
CTreq = 0;
MKreq = 0;
Main.SetTimer(1, n1*1000);
fillcnt = 0;
run= true;
}
function Main_OnTimer(nEventID)
{
if (nEventID == 1 && run == true)
{
//타이머 종료
Main.KillTimer(1);
Main.MessageList("OnTimer --> ReqPowerSearch");
Main.ReqPowerSearch("test이평1");
}
}
function Main_OnRcvItemList(aItemList, nCount)
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
Main.MessageList("Main_OnRcvItemList : ",nCount);
if ( run == true)
{
if (nCount <= 0) //검색된 종목이 없으면
{
//타이머 다시 셋팅
Main.SetTimer(1, n1*1000);
}
else
{
BL = [];
if (MK.length == 0)
{
BL = aItemList;
Main.MessageList("BL:",BL);
}
else
{
for(var a = 0 ; a < aItemList.length ; a++)
{
var add = true;
for(var b = 0 ; b < MK.length ; b++)
{
if (aItemList[a] == MK[b].code)
{
add = false;
}
}
if (add == true)
{
BL.push(aItemList[a]);
}
}
Main.MessageList("BL:",BL);
}
Main.MessageList("시간",HHMMSS,"BL : ",BL.length);
if (BL.length > 0)
{
//차트 요청
req = 0;
Main.ReqMarketData(BL[req]);
}
else //없으면 타이머 다시 셋팅
{
Main.SetTimer(1, n1*1000);//1번 타이머, 60초
}
}
}
}
function Main_OnRcvMarketData(MarketData)
{
if (run == true)
{
if (MarketData.code == BL[req])
{
MK[MKreq] = MarketData;
ID[MKreq] = 0;
Num[MKreq] = 0;
Fill[MKreq] = 0;
Main.MessageList("RcvMarket : ",req,MK[MKreq].code);
MKreq = MKreq+1;
req = req+1;
if (req < BL.length)
{
Main.MessageList("ReqMarket : ",req,BL[req]);
Main.ReqMarketData(BL[req]);
}
else
{
Main.MessageList("종목객체요청완료");
Main.SetTimer(1, n1*1000);//1번 타이머, 60초
}
}
}
}
function Main_OnU*pdateMarket(sItemCode, lU*pdateID)//*제거
{
if (lU*pdateID == 20001)//*제거
{
for(var i = 0 ; i < MK.length ; i++)
{
if (sItemCode == MK[i].code && ID[i] == 0 && MK[i].current <= MK[i].open*(1+n2/100))// 5%이상으로 정정
{
var vol = Math.floor(mm/MK[i].current);
ID[i] = Act1.OrderBuy(MK[i].code,vol,MK[i].current, 0);
}
}
}
}
function Main_OnOrderResponse(OrderResponse)
{
for(var i = 0 ; i < ID.length ; i++)
{
if (OrderResponse.orderID == ID[i])
{
Num[i] = OrderResponse.orderNum;
}
}
}
function Main_OnNotifyFill(NotifyFill)
{
for(var i = 0 ; i < Num.length ; i++)
{
if (Fill[i] == 0 && NotifyFill.orderNum == Num[i])
{
Fill[i] = 1;
FillCnt = FillCnt+1;
if (Fillcnt == n3)
{
run = false;
}
}
}
if (run == false)
{
//타이머 종료
Main.KillTimer(1);
var nufill = Account1.GetTheNumberOfUnfills()
for(var i = 0 ; i < Num.length ; i++)
{
Act1.SetUnfill(Num[i]);
if (Act1.Unfill.count > 0 && Fill[i] == 0)
{
Act1.OrderCancel(Num[i]);
}
}
}
}
2020-03-17
4471
글번호 225175
답변완료
검색식 새 종목에 대한 매매
1. 2분간격으로 사용자 종목검색을 지속적으로 수행
2. 새로 검색된 종목에 대해 차트 생성, 기존 검색된 차트는 유지
3. 종목검색에서 새로 파악된 종목을 종목차트로 시스템 적용
4. 생성된 차트에 시스템 적용
5. 차트 생성이 50개가 되면 새 종목 추가 완료
아래 내용은 다른분이 이전에 질문한 답변입니다.
여기에서 파워종목검색이 2분간격시간에 따라 추가되는 종목에 대한 추가 매수는 어떻게 하면 좋을까요?
var ItemList;
var Count;
var ReqCount;
function Main_OnStart()
{
Main.MessageLog("스팟시작");
Main.MessageLog("종목검색시작");
Main.ReqPowerSearch("전략1");
}
function Main_OnRcvItemList(aItemList, nCount)
{
ItemList = aItemList;
Count = nCount;
Main.SetTimer(1, 1000);
ReqCount = 0;
}
function Main_OnTimer(nEventID)
{
if (nEventID == 1)
{
var StopSet = new SystemStopInfo(new StopLoss(4, CALCMETHOD_PERCENT, 0xFFDA93),
new StopTrailing(2, 5, CALCMETHOD_PERCENT, 0),
//new StopProfitTarget(10, CALCMETHOD_PERCENT, 0xFFDA93),
//new StopInactivity(0.5, 6, CALCMETHOD_PERCENT, 0xFFDA93),
new StopEndOfDay(151500));
var ChartSet = new ReqChartItem(ItemList[ReqCount],3,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,StopSet);
var SystemSet = new SystemInfo("10전략1", YL_TYPE_NORMAL, null, null, null);
Main.ReqChartEx(ChartSet,SystemSet);
Main.MessageLog("확장차트생성_"+ItemList[ReqCount]);
ReqCount = ReqCount+1;
if (ReqCount == Count)
{
Main.KillTimer(1);
Main.MessageLog("종목검색완료");
}
}
}
//신호발생
function Main_OnRiseSignal(ChartEx, Signal)
{
//신호발생 종목에 대해 잔고셋팅
Account1.SetBalance(Main.GetOrderCode(Signal.code),0);
//매수신호이고 잔고가 없을때만 매수
if (Signal.signalKind == 1 && Account1.Balance.count == 0)
{
Account1.OrderBuy(Main.GetOrderCode(Signal.code),Math.floor(100000/ChartEx.GetClose(1,0)),0,1);
Main.MessageLog("매수주문");
}
if (Signal.signalKind == 2)
{
//전체미체결주문 갯수
var num = Account1.GetTheNumberOfUnfills();
//전체 미체결수 만큼 루프를 돌면서
for (var i = 0; i < num; i++)
{
//미체결을 하나씩 셋팅하고
Account1.SetUnfill(i);
//미체결종목이 신호종목과 같고 미체결수량이 있으면
if (Account1.Unfill.code == Main.GetOrderCode(Signal.code) && Account1.Unfill.count > 0)
{
Account1.OrderCancel(Account1.Unfill.orderNum);
}
}
//잔고수량만큼만 매도
if (Account1.Balance.count > 0)
{
Account1.OrderSell(Main.GetOrderCode(Signal.code),Account1.Balance.count,0,1);
Main.MessageLog("매도주문");
}
}
}
2020-03-10
4065
글번호 225174
답변완료
오류 검토 부탁드립니다.
수고가 많으십니다.
우선 작성된 것은
1. 미완성 시그널 진입(1계약)
2. 진입 후 피라미딩 5계약
3. 미완성 시그널 청산
1계약에 대한 미완성 시그널 진입 및 청산은 오류없이 잘 됩니다.
피라미딩(매수분까지 코딩완료)했으나, 루프가 생겼는지 프로그램이 튕겨나갑니다. 제가 접근을 잘못한 것 같습니다.
바쁘실텐데 번거롭게 해서 죄송스럽습니다!!!
아래는 작성 코드입니다.
var T;
var BID1,BID2,BID3,BID4,BID5,BXID, SID1,SID2,SID3,SID4,SID5, SXID;
var BNum1,BNum2,BNum3,BNum4,BNum5,BXNum, SNum1,SNum2,SNum3,SNum4,SNum5,SXNum;
var Stone, Step;
var EntrypriceB,EntrypriceS;
var Scnt;
function Main_OnStart()
{
T = 0;
Stone = 3;
Step = 2;
Main.MessageLog("시작");
var OrderCode=Main.GetOrderCode(MarketData2.code);
}
function Main_OnRiseIncompleteSignal(ChartEx3, IncompleteSignal)
{
//Main.MessageLog("미완성신호/"+IncompleteSignal.signalKind);
Account1.SetBalance(Main.GetOrderCode(IncompleteSignal.code));
if (T <= 0 && (Account1.Balance.position == 1 || Account1.Balance.position == 0) && IncompleteSignal.signalKind == 1)//
{
T = 1;
if(Account1.Balance.position == 0)
VV = 1;
else
VV = 2;
Main.SetTimer(1,5000);
}
if (T >= 0 && Account1.Balance.position == 1 && IncompleteSignal.signalKind == 3)//매도포지션을 갖고 매도시그널이면
{
T = 0;
Main.KillTimer(1);
Main.SetTimer(2,5000);
}
if (T >= 0 && (Account1.Balance.position == 2 || Account1.Balance.position == 0) && IncompleteSignal.signalKind == 3)
{
T = -1;
if(Account1.Balance.position == 0)
VV = 1;
else
VV = 2;
Main.SetTimer(2,5000);
}
if (T <= 0 && Account1.Balance.position == 2 && IncompleteSignal.signalKind == 1)// 매수포지션인데 매수시그널이 나오면
{
T = 0;
Main.KillTimer(2);
Main.SetTimer(1,5000);
}
}
function Main_OnOrderResponse(OrderResponse)
{
//해당 주문응답이 Long신호에 대한 주문응답이라면,
if (OrderResponse.orderID == BID1)
{
//BNum1에 주문응답객체의 주문번호를 저장하고,
BNum1 = OrderResponse.orderNum;
//11번 타이머 실행(5초 간격).
Main.SetTimer(11, 5000);
}
//해당 주문응답이 Long신호에 대한 주문응답이라면,
if (OrderResponse.orderID == BID2)
{
//BNum2에 주문응답객체의 주문번호를 저장하고,
BNum2 = OrderResponse.orderNum;
//12번 타이머 실행(5초 간격).
Main.SetTimer(12, 5000);
}
//해당 주문응답이 Long신호에 대한 주문응답이라면,
if (OrderResponse.orderID == BID3)
{
//BNum3에 주문응답객체의 주문번호를 저장하고,
BNum3 = OrderResponse.orderNum;
//13번 타이머 실행(5초 간격).
Main.SetTimer(13, 5000);
}
//해당 주문응답이 ExitLong신호에 대한 주문응답이라면,
if (OrderResponse.orderID == BXID)
{
//BXNum에 주문응답객체의 주문번호를 저장하고,
BXNum = OrderResponse.orderNum;
//2번 타이머 실행(5초 간격).
Main.SetTimer(22, 5000);
}
//해당 주문응답이 Short신호에 대한 주문응답이라면,
if (OrderResponse.orderID == SID1)
{
//SNum1에 주문응답객체의 주문번호를 저장하고,
SNum1 = OrderResponse.orderNum;
//31번 타이머 실행(5초 간격).
Main.SetTimer(31, 5000);
}
if (OrderResponse.orderID == SID2)
{
//SNum2에 주문응답객체의 주문번호를 저장하고,
SNum2 = OrderResponse.orderNum;
//32번 타이머 실행(5초 간격).
Main.SetTimer(32, 5000);
}
if (OrderResponse.orderID == SID3)
{
//SNum3에 주문응답객체의 주문번호를 저장하고,
SNum3 = OrderResponse.orderNum;
//33번 타이머 실행(5초 간격).
Main.SetTimer(33, 5000);
}
//해당 주문응답이 ExitShort신호에 대한 주문응답이라면,
if (OrderResponse.orderID == SXID)
{
//SXNum에 주문응답객체의 주문번호를 저장하고,
SXNum = OrderResponse.orderNum;
//4번 타이머 실행(5초 간격).
Main.SetTimer(4, 5000);
}
}
function Main_OnTimer(nEventID)
{
//마지막봉 미완성 신호정보 셋팅
var Incom = ChartEx3.GetIncompleteSignal();
if (nEventID == 1 && T == 1 && Incom[0].signalKind == 1)
{
Main.KillTimer(1);
BID1 = Account1.OrderBuy(Main.GetOrderCode(MarketData2.code), 1,MarketData2.current, 2);
Scnt=1;
Main.MessageLog("매수진입");
//차트가 매도포지션 상태이면 청산 후 한 번더 진입
if (ChartEx3.GetOpenContracts() < 0)
{
Account1.OrderBuy(Main.GetOrderCode(MarketData2.code), Account1.Balance.count,MarketData2.current, 2);// 매도잔고 확인해야
}
}
if ( T==1 && Incom[0].signalKind == 2)
{
//매수진입 미체결 있으면 취소
Account1.SetUnfill(BNum1);
if (Account1.Unfill.count > 0)
{
Account1.OrderCancel(BNum1);
Main.MessageLog("미체결 취소");
}
//잔고셋팅해 매수포지션 있으면 잔고수량만큼만 청산
Account1.SetBalance(Main.GetOrderCode(MarketData2.code), 0);
if (Account1.Balance.count > 0 && Account1.Balance.position == 2)
{
//매수포지션 잔고 평단가 저장
BuyAvg = Account1.Balance.avgUnitCost;
BxID = Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,MarketData2.current, 2);
}
}
if (nEventID == 1 && T == 0 )
{
Main.KillTimer(1);
Main.MessageLog("중복매수진입금지");
}
if (nEventID == 2 && T == -1 && Incom[0].signalKind == 3)
{
Main.KillTimer(2);
SID1 = Account1.OrderSell(Main.GetOrderCode(MarketData2.code), 1,MarketData2.current, 2);
Main.MessageLog("매도진입");
//차트가 매수포지션 상태이면
if (ChartEx3.GetOpenContracts() > 0)
{
Account1.OrderSell(Main.GetOrderCode(MarketData2.code), Account1.Balance.count, MarketData2.current, 2);//vol 확인필요
}
}
//매도청산신호 발생
if ( T==-1 && Incom[0].signalKind == 4)
{
//매수진입 미체결 있으면 취소
Account1.SetUnfill(SNum1);
if (Account1.Unfill.count > 0)
{
Account1.OrderCancel(SNum1);
Main.MessageLog("미체결 취소");
}
//잔고셋팅해 매도포지션 있으면 잔고수량만큼만 청산
Account1.SetBalance(Main.GetOrderCode(MarketData2.code), 0);
if (Account1.Balance.count > 0 && Account1.Balance.position == 1)
{
//매도포지션 잔고 평단가 저장
SellAvg = Account1.Balance.avgUnitCost;
SXID = Account1.OrderBuy(Main.GetOrderCode(MarketData2.code), Account1.Balance.count,MarketData2.current, 2);
}
}
if (nEventID == 2 && T == 0)
{
Main.KillTimer(2);
Main.MessageLog("중복매도진입금지");
}
//11번 타이머 실행.
if (nEventID == 11)
{
//11번 타이머 종료.
Main.KillTimer(11);
//BNum1 주문번호의 미체결객체 셋팅.
Account1.SetUnfillOrderNumber(BNum1);
//현재가 저장
var CC = MarketData2.current;
//미체결수량이 존재하고, 미체결가격이 현재가와 다르다면,
if (Account1.Unfill.count > 0 && Account1.Unfill.price != CC)
{
//가격을 현재가로 정정하여 정정주문. 정정주문 후 주문응답시 BNum1 새로 갱신하고 타이머 재셋팅.
BID1 = Account1.OrderReplacePrice(BNum1, CC);
}
//미체결수량이 존재하나, 미체결가격과 현재가격이 같다면,
if (Account1.Unfill.count > 0 && Account1.Unfill.price == CC)
{
//정정주문이 없으므로 1번 타이머 재셋팅.
Main.SetTimer(11, 5000);
}
}
//12번 타이머 실행.
if (nEventID == 12)
{
//12번 타이머 종료.
Main.KillTimer(12);
//BNum2 주문번호의 미체결객체 셋팅.
Account1.SetUnfillOrderNumber(BNum2);
//현재가 저장
var CC = MarketData2.current;
Scnt=Scnt+1;
//현재가가 일정이상이면
if (Scnt == 2 && Account1.Balance.position == 2 && CC >= (EntrypriceB + Step * 1))
{
//가격을 현재가로 정정하여 정정주문. 정정주문 후 주문응답시 BNum2 새로 갱신하고 타이머 재셋팅.
BID2 = Account1.OrderBuy(Main.GetOrderCode(MarketData2.code), 1,EntrypriceB + Step * 1, 2);
}
}
//13번 타이머 실행.
if (nEventID == 13)
{
//13번 타이머 종료.
Main.KillTimer(13);
//BNum2 주문번호의 미체결객체 셋팅.
Account1.SetUnfillOrderNumber(BNum3);
//현재가 저장
var CC = MarketData2.current;
Scnt=Scnt+1;
if (Scnt == 3 && Account1.Balance.position == 2 && CC >= (EntrypriceB + Step * 2))
{
//가격을 현재가로 정정하여 정정주문. 정정주문 후 주문응답시 BNum2 새로 갱신하고 타이머 재셋팅.
BID3 = Account1.OrderBuy(Main.GetOrderCode(MarketData2.code), 1,EntrypriceB + Step * 2, 2);
}
}
//13번 타이머 실행.
if (nEventID == 14)
{
//13번 타이머 종료.
Main.KillTimer(14);
//BNum2 주문번호의 미체결객체 셋팅.
Account1.SetUnfillOrderNumber(BNum3);
//현재가 저장
var CC = MarketData2.current;
Scnt=Scnt+1;
if (Scnt == 4 && Account1.Balance.position == 2 && CC >= (EntrypriceB + Step * 3))
{
//가격을 현재가로 정정하여 정정주문. 정정주문 후 주문응답시 BNum2 새로 갱신하고 타이머 재셋팅.
BID4 = Account1.OrderBuy(Main.GetOrderCode(MarketData2.code), 1,EntrypriceB + Step * 3, 2);
}
}
//13번 타이머 실행.
if (nEventID == 15)
{
//13번 타이머 종료.
Main.KillTimer(13);
//BNum2 주문번호의 미체결객체 셋팅.
Account1.SetUnfillOrderNumber(BNum3);
//현재가 저장
var CC = MarketData2.current;
Scnt=Scnt+1;
if (Scnt == 5 && Account1.Balance.position == 2 && CC >= (EntrypriceB + Step * 4))
{
//가격을 현재가로 정정하여 정정주문. 정정주문 후 주문응답시 BNum2 새로 갱신하고 타이머 재셋팅.
BID5 = Account1.OrderBuy(Main.GetOrderCode(MarketData2.code), 1,EntrypriceB + Step * 4, 2);
}
}
//2번 타이머 실행.
if (nEventID == 22)
{
//2번 타이머 종료.
Main.KillTimer(22);
//BXNum 주문번호의 미체결객체 셋팅
Account1.SetUnfillOrderNumber(BXNum);
//현재가 저장
var CC = MarketData2.current;
//미체결수량이 존재하고, 미체결가격이 현재가와 다르다면,
if (Account1.Unfill.count > 0 && Account1.Unfill.price != CC)
{
//가격을 현재가로 정정하여 정정주문. 정정주문 후 주문응답시 BXNum새로 갱신하고 타이머 재셋팅.
BXID = Account1.OrderReplacePrice(BXNum, MarketData2.current);
}
//미체결수량이 존재하나, 미체결가격과 현재가격이 같다면,
if (Account1.Unfill.count > 0 && Account1.Unfill.price == CC)
{
//정정주문이 없으므로 2번 타이머 재셋팅.
Main.SetTimer(22, 5000);
}
}
//31번 타이머 실행
if (nEventID == 31)
{
//31번 타이머 종료
Main.KillTimer(31);
//SNum 주문번호의 미체결객체 셋팅
Account1.SetUnfillOrderNumber(SNum1);
//현재가 저장
var CC = MarketData2.current;
//미체결수량이 존재하고, 미체결가격이 현재가와 다르다면,
if (Account1.Unfill.count > 0 && Account1.Unfill.price != CC)
{
//가격을 현재가로 정정하여 정정주문. 정정주문후 주문응답시 SNum1새로 갱신하고 타이머 재셋팅.
SID2 = Account1.OrderReplacePrice(SNum2, MarketData2.current);
}
//미체결수량이 존재하나, 미체결가격과 현재가격이 같다면,
if (Account1.Unfill.count > 0 && Account1.Unfill.price == CC)
{
//정정주문이 없으므로 31번 타이머 재셋팅.
Main.SetTimer(31, 5000);
}
}
//32번 타이머 실행
if (nEventID == 32)
{
//32번 타이머 종료
Main.KillTimer(32);
//SNum 주문번호의 미체결객체 셋팅
Account1.SetUnfillOrderNumber(SNum2);
//현재가 저장
var CC = MarketData2.current;
//미체결수량이 존재하고, 미체결가격이 현재가와 다르다면,
if (Account1.Unfill.count > 0 && Account1.Unfill.price != CC)
{
//가격을 현재가로 정정하여 정정주문. 정정주문후 주문응답시 SNum2새로 갱신하고 타이머 재셋팅.
SID3 = Account1.OrderReplacePrice(SNum3, MarketData2.current);
}
//미체결수량이 존재하나, 미체결가격과 현재가격이 같다면,
if (Account1.Unfill.count > 0 && Account1.Unfill.price == CC)
{
//정정주문이 없으므로 32번 타이머 재셋팅.
Main.SetTimer(32, 5000);
}
}
//33번 타이머 실행
if (nEventID == 33)
{
//33번 타이머 종료
Main.KillTimer(33);
//SNum 주문번호의 미체결객체 셋팅
Account1.SetUnfillOrderNumber(SNum3);
//현재가 저장
var CC = MarketData2.current;
//미체결수량이 존재하고, 미체결가격이 현재가와 다르다면,
if (Account1.Unfill.count > 0 && Account1.Unfill.price != CC)
{
//가격을 현재가로 정정하여 정정주문. 정정주문후 주문응답시 SNum3새로 갱신하고 타이머 재셋팅.
SID4 = Account1.OrderReplacePrice(SNum4, MarketData2.current);
}
//미체결수량이 존재하나, 미체결가격과 현재가격이 같다면,
if (Account1.Unfill.count > 0 && Account1.Unfill.price == CC)
{
//정정주문이 없으므로 33번 타이머 재셋팅.
Main.SetTimer(33, 5000);
}
}
//4번 타이머 실행
if (nEventID == 4)
{
//4번 타이머 종료
Main.KillTimer(4);
//SXNum 주문번호의 미체결객체 셋팅
Account1.SetUnfillOrderNumber(SXNum);
//현재가 저장
var CC = MarketData2.current;
//미체결수량이 존재하고, 미체결가격이 현재가와 다르다면,
if (Account1.Unfill.count > 0 && Account1.Unfill.price != CC)
{
//가격을 현재가로 정정하여 정정주문. 정정주문 후 주문응답시 SXNum새로 갱신하고 타이머 재셋팅.
SXID = Account1.OrderReplacePrice(SXNum, MarketData2.current);
}
//미체결수량이 존재하나, 미체결가격과 현재가격이 같다면,
if (Account1.Unfill.count > 0 && Account1.Unfill.price == CC)
{
//정정주문이 없으므로 4번 타이머 재셋팅.
Main.SetTimer(4, 10000);
}
}
}
function Main_OnNotifyFill(NotifyFill)
{
//"NotifyFill" 출력.
//Main.MessageLog("NotifyFill");
//BNum1 주문 체결되면,
if (NotifyFill.orderNum == BNum1)
{
//11번 타이머 종료.
Main.KillTimer(11);
//BNum1 미체결객체 셋팅
Account1.SetUnfillOrderNumber(BNum1);
//미체결 수량이 없으면
if (Account1.Unfill.count == 0)
{
//"Notify Long" 출력.
Main.MessageLog("N.Long1");
}
// 매수진입가 입려
EntrypriceB = NotifyFill.fillPrice; //
}
//BNum2 주문 체결되면,
if (NotifyFill.orderNum == BNum2)
{
//12번 타이머 종료.
Main.KillTimer(12);
//BNum2 미체결객체 셋팅
Account1.SetUnfillOrderNumber(BNum2);
//미체결 수량이 없으면
if (Account1.Unfill.count == 0)
{
//"Notify Long" 출력.
Main.MessageLog("N.Long2");
}
}
//BNum3 주문 체결되면,
if (NotifyFill.orderNum == BNum3)
{
//13번 타이머 종료.
Main.KillTimer(13);
//BNum3 미체결객체 셋팅
Account1.SetUnfillOrderNumber(BNum3);
//미체결 수량이 없으면
if (Account1.Unfill.count == 0)
{
//"Notify Long" 출력.
Main.MessageLog("N.Long3");
}
}
//BXNum 주문 체결되면,
if (NotifyFill.orderNum == BXNum)
{
//2번 타이머 종료.
Main.KillTimer(2);
//BXNum 미체결객체 셋팅
Account1.SetUnfillOrderNumber(BXNum);
//미체결 수량이 없으면
if (Account1.Unfill.count == 0)
{
//"Notify ExitLong" 출력.
Main.MessageLog("N.ExitLong");
}
}
//SNum1 주문 체결되면,
if (NotifyFill.orderNum == SNum1)
{
//31번 타이머 종료.
Main.KillTimer(31);
//SNum 미체결객체 셋팅
Account1.SetUnfillOrderNumber(SNum1);
//미체결 수량이 없으면
if (Account1.Unfill.count == 0)
{
//"Notify Short1" 출력.
Main.MessageLog("N.Short1");
}
}
//SNum2 주문 체결되면,
if (NotifyFill.orderNum == SNum2)
{
//32번 타이머 종료.
Main.KillTimer(32);
//SNum2 미체결객체 셋팅
Account1.SetUnfillOrderNumber(SNum2);
//미체결 수량이 없으면
if (Account1.Unfill.count == 0)
{
//"Notify Short2" 출력.
Main.MessageLog("N.Short2");
}
}
//SNum3 주문 체결되면,
if (NotifyFill.orderNum == SNum3)
{
//33번 타이머 종료.
Main.KillTimer(33);
//SNum3 미체결객체 셋팅
Account1.SetUnfillOrderNumber(SNum3);
//미체결 수량이 없으면
if (Account1.Unfill.count == 0)
{
//"Notify Short3" 출력.
Main.MessageLog("N.Short3");
}
}
//SXNum 주문 체결되면,
if (NotifyFill.orderNum == SXNum)
{
//4번 타이머 종료.
Main.KillTimer(4);
//SXNum 미체결객체 셋팅
Account1.SetUnfillOrderNumber(SXNum);
//미체결 수량이 없으면
if (Account1.Unfill.count == 0)
{
//"Notify ExitShort" 출력.
Main.MessageLog("N.ExitShort");
}
}
}
2020-02-25
3900
글번호 225160