커뮤니티

선물차트 적용 미니선물 거래 피라미딩 예스스팟 로직오류..

프로필 이미지
ktemu10k
2018-07-17 11:28:28
2231
글번호 224520
답변완료
아까 전화로 문의드렸었습니다. 3개의 시스템 전부 선물에 적용하고 미니선물로 거래하는 피라미딩 로직입니다. 계좌명은 동일하게 설정하였습니다. 진입은 3개의 시스템 전부 멀쩡하게 들어갔는데, 청산이 되지 않았습니다. 예전에 1개의 시스템 가지로 테스트 했을 때에는 문제 없이 진행되는 것을 확인했었습니다. 코드 자체에 오류가 있는건가요? 한번봐주시길 부탁드립니다. 날씨가 더운데 수고하세요. var Position; var OrderCode; var BID; var SID; var Bnum; var Snum; var BuyCnt; var SellCnt; function Main_OnStart() {A1.Balance Main.MessageLog("시작"); Position = 0; BuyCnt = 0; SellCnt = 0; OrderCode = Main.GetOrderCode(miniKP.code) } function C1_OnRiseSignal(Signal) { Main.MessageLog("신호완성/" + Signal.signalKind); if (Signal.signalKind == 1) { Position = 1; BID = A1.OrderBuy(OrderCode, Signal.count, miniKP.Ask(5), 0) Main.MessageLog("미니선물 매수"); } if (Position==1 && Signal.signalKind == 2) { if (BuyCnt>0) { A1.OrderSell(OrderCode, BuyCnt, miniKP.Bid(5), 0) Main.MessageLog("미니선물 매수 청산"); BuyCnt = 0; } } if (Signal.signalKind == 3) { Position=-1; A1.OrderSell(OrderCode, Signal.count, miniKP.Bid(5), 0) Main.MessageLog("미니선물 매도"); } if (Position==-1 && Signal.signalKind == 4) { if (SellCnt>0) { A1.OrderBuy(OrderCode, SellCnt, miniKP.Ask(5), 0) Main.MessageLog("미니선물 매도 청산"); SellCnt = 0; } } } function Main_OnOrderResponse(OrderResponse) { if (Position == 1 && OrderResponse.orderID == BID) { BNum = OrderResponse.orderNum; } if (Position == -1 && OrderResponse.orderID == SID) { SNum = OrderResponse.orderNum; } } function Main_OnNotifyFill(NotifyFill) { if (Position == 1 && NotifyFill.orderNum == BNum) { BuyCnt = BuyCnt + 1; } if (Position == -1 && NotifyFill.orderNum == SNum) { SellCnt = SellCnt + 1; } }
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2018-07-26 17:46:48

> ktemu10k 님이 쓴 글입니다. > 제목 : 선물차트 적용 미니선물 거래 피라미딩 예스스팟 로직오류.. > 아까 전화로 문의드렸었습니다. 3개의 시스템 전부 선물에 적용하고 미니선물로 거래하는 피라미딩 로직입니다. 계좌명은 동일하게 설정하였습니다. 진입은 3개의 시스템 전부 멀쩡하게 들어갔는데, 청산이 되지 않았습니다. 예전에 1개의 시스템 가지로 테스트 했을 때에는 문제 없이 진행되는 것을 확인했었습니다. 코드 자체에 오류가 있는건가요? 한번봐주시길 부탁드립니다. 날씨가 더운데 수고하세요. var Position; var OrderCode; var BID; var SID; var Bnum; var Snum; var BuyCnt; var SellCnt; function Main_OnStart() {A1.Balance Main.MessageLog("시작"); Position = 0; BuyCnt = 0; SellCnt = 0; OrderCode = Main.GetOrderCode(miniKP.code) } function C1_OnRiseSignal(Signal) { Main.MessageLog("신호완성/" + Signal.signalKind); if (Signal.signalKind == 1) { Position = 1; BID = A1.OrderBuy(OrderCode, Signal.count, miniKP.Ask(5), 0) Main.MessageLog("미니선물 매수"); } if (Position==1 && Signal.signalKind == 2) { if (BuyCnt>0) { A1.OrderSell(OrderCode, BuyCnt, miniKP.Bid(5), 0) Main.MessageLog("미니선물 매수 청산"); BuyCnt = 0; } } if (Signal.signalKind == 3) { Position=-1; A1.OrderSell(OrderCode, Signal.count, miniKP.Bid(5), 0) Main.MessageLog("미니선물 매도"); } if (Position==-1 && Signal.signalKind == 4) { if (SellCnt>0) { A1.OrderBuy(OrderCode, SellCnt, miniKP.Ask(5), 0) Main.MessageLog("미니선물 매도 청산"); SellCnt = 0; } } } function Main_OnOrderResponse(OrderResponse) { if (Position == 1 && OrderResponse.orderID == BID) { BNum = OrderResponse.orderNum; } if (Position == -1 && OrderResponse.orderID == SID) { SNum = OrderResponse.orderNum; } } function Main_OnNotifyFill(NotifyFill) { if (Position == 1 && NotifyFill.orderNum == BNum) { BuyCnt = BuyCnt + 1; } if (Position == -1 && NotifyFill.orderNum == SNum) { SellCnt = SellCnt + 1; } }