커뮤니티

무슨 문제인가요?

프로필 이미지
너무조아
2016-01-12 11:21:41
1782
글번호 223771
답변완료
아래수식을 모의거래에 적용을 해보았는데, "시작" 메세지 이후 아무런 시스템 작동이 안되네요!! 어디에 문제점이 있나요? 참조 1. 차트객체명 : C1 2. 종목객체명 : SP -------> E-mini S&P 500 ( 2016.3) 3. 계좌객체명 : A1 /* 스크립트시작------------------------------ */ var Position; var OrderCode; var BID; var SID; var SNum; var BNum; var BuyFill; var SellFill; function Main_OnStart() { Main.MessageLog("시작"); Position = 0; OrderCode = Main.GetOrderCode(SP.Code); } function C1_OnRiseSingal(Singal) { Main.MessageLog("신호완성/"+Singal.SinalKind); if (Sinal.SinalKind == 1) { Position = 1; BID = A1.OrderBuy(SP.Code, 1, SP.Ask(2),0); Main.MessageLog("매수진입"); BuyFill = 0; } if (Position == 1 && Sinal.SingKind == 2) { if (BuyFill == 1) { A1.OrderSell(SP.Code, 1, SP.Bid(2),0); Main.MessageLog("매수청산실행"); } if (BuyFill == 0) { A1.OrderCancel(Bnum); Main.MessageLog("매수청산취소"); } } if (Sinal.sinalKind == 3) { Position = -1; SellFill = 0; SID = A1.OrderSell(SP.Code, 1, SP.Bid(2), 0); Main.MessageLog("매도진입"); } if (Position == -1 && Singal.singalKind == 4) { if (SellFill == 1) { A1.OrderBuy(SP.Code, 1, Ask(2), 0); Main.MessageLog("매도청산"); } if (SellFill == 0) { A1.OrderCancel(SNum); Main.MessageLog("매도청산취소"); } } } function Main_OnOrderResponse(OrderResponse) { if (Position == 1 && OrderResponse.orderID == BID) { BNum = OrderResponse.orderNum; } if (Position == -1 && OrderResponse.orderID == SID) { SNum = OrderResponse.ordNum; } } function Main_OnNotifyFill(NotifyFill) { if (Position == 1 && NotifyFill.orderNum == BNum) { BuyFill = 1; } if (Position == -1 && NotifyFill.orderNum == SNum) { SellFill = 1; } } /* 스크립트 끝-----------------------------*/
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2016-01-19 19:56:01

안녕하세요 예스스탁입니다. 작성하신 수식에 이벤트나 객체의 철자가 잘못된 곳이 있고 또한 대소문자도 구별도 잘못되어 있는 곳이 있습니다. var Position; var OrderCode; var BID; var SID; var SNum; var BNum; var BuyFill; var SellFill; function Main_OnStart() { Main.MessageLog("시작"); Position = 0; OrderCode = Main.GetOrderCode(SP.Code); } function C1_OnRiseSignal(Signal) { Main.MessageLog("신호완성/"+Signal.signalKind); if (Signal.signalKind == 1) { Position = 1; BID = A1.OrderBuy(SP.Code, 1, SP.Ask(2),0); Main.MessageLog("매수진입"); BuyFill = 0; } if (Position == 1 && Signal.signalKind == 2) { if (BuyFill == 1) { A1.OrderSell(SP.Code, 1, SP.Bid(2),0); Main.MessageLog("매수청산실행"); } if (BuyFill == 0) { A1.OrderCancel(BNum); Main.MessageLog("매수청산취소"); } } if (Signal.signalKind == 3) { Position = -1; SellFill = 0; SID = A1.OrderSell(SP.Code, 1, SP.Bid(2), 0); Main.MessageLog("매도진입"); } if (Position == -1 && Signal.signalKind == 4) { if (SellFill == 1) { A1.OrderBuy(SP.Code, 1, Ask(2), 0); Main.MessageLog("매도청산"); } if (SellFill == 0) { A1.OrderCancel(SNum); Main.MessageLog("매도청산취소"); } } } 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) { BuyFill = 1; } if (Position == -1 && NotifyFill.orderNum == SNum) { SellFill = 1; } } 즐거운 하루되세요 > 너무조아 님이 쓴 글입니다. > 제목 : 무슨 문제인가요? > 아래수식을 모의거래에 적용을 해보았는데, "시작" 메세지 이후 아무런 시스템 작동이 안되네요!! 어디에 문제점이 있나요? 참조 1. 차트객체명 : C1 2. 종목객체명 : SP -------> E-mini S&P 500 ( 2016.3) 3. 계좌객체명 : A1 /* 스크립트시작------------------------------ */ var Position; var OrderCode; var BID; var SID; var SNum; var BNum; var BuyFill; var SellFill; function Main_OnStart() { Main.MessageLog("시작"); Position = 0; OrderCode = Main.GetOrderCode(SP.Code); } function C1_OnRiseSingal(Singal) { Main.MessageLog("신호완성/"+Singal.SinalKind); if (Sinal.SinalKind == 1) { Position = 1; BID = A1.OrderBuy(SP.Code, 1, SP.Ask(2),0); Main.MessageLog("매수진입"); BuyFill = 0; } if (Position == 1 && Sinal.SingKind == 2) { if (BuyFill == 1) { A1.OrderSell(SP.Code, 1, SP.Bid(2),0); Main.MessageLog("매수청산실행"); } if (BuyFill == 0) { A1.OrderCancel(Bnum); Main.MessageLog("매수청산취소"); } } if (Sinal.sinalKind == 3) { Position = -1; SellFill = 0; SID = A1.OrderSell(SP.Code, 1, SP.Bid(2), 0); Main.MessageLog("매도진입"); } if (Position == -1 && Singal.singalKind == 4) { if (SellFill == 1) { A1.OrderBuy(SP.Code, 1, Ask(2), 0); Main.MessageLog("매도청산"); } if (SellFill == 0) { A1.OrderCancel(SNum); Main.MessageLog("매도청산취소"); } } } function Main_OnOrderResponse(OrderResponse) { if (Position == 1 && OrderResponse.orderID == BID) { BNum = OrderResponse.orderNum; } if (Position == -1 && OrderResponse.orderID == SID) { SNum = OrderResponse.ordNum; } } function Main_OnNotifyFill(NotifyFill) { if (Position == 1 && NotifyFill.orderNum == BNum) { BuyFill = 1; } if (Position == -1 && NotifyFill.orderNum == SNum) { SellFill = 1; } } /* 스크립트 끝-----------------------------*/