커뮤니티

문의

프로필 이미지
털보
2013-08-30 11:28:49
881
글번호 222538
답변완료
질문 수정할게요. 선물신호 타종목주문. 현재 아래식은 1~2 사이 옵션중 2 에 가까운 종목이 진입 되는데요. 1에 가까운 종목으로 진입되게 수정 부탁드립니다. var Start; var UNum; var LNum; var CallCode; var CallPrice; var PutCode; var PutPrice; var CC; var PP; var CallOrderCode; var PutOrderCode; function Main_OnStart() { Start = 0; } function Chart1_OnRiseSignal(Signal) { UNum = Option.uppersATM; LNum = Option.lowersATM; CallCode = new Array(UNum+LNum+1); PutCode = new Array(UNum+LNum+1); CallPrice = new Array(UNum+LNum+1); PutPrice = new Array(UNum+LNum+1); for (var i = -LNum; i <= UNum; i++) { if (Option.GetCurrent(0, i) <= 2.0 && Option.GetCurrent(0, i) >= 1.0) { CallPrice[i+LNum] = Option.GetCurrent(0, i); CallCode[i+LNum] = Option.GetATMCallRecent(i); } else { CallPrice[i+LNum] = -1; CallCode[i+LNum] = -1; } } for (var ii = -UNum; ii <= LNum; ii++) { if (Option.GetCurrent(1, ii) <= 2.0 && Option.GetCurrent(1, ii) >= 1.0) { PutPrice[ii+UNum] = Option.GetCurrent(1, ii); PutCode[ii+UNum] = Option.GetATMPutRecent(ii); } else { PutPrice[ii+UNum] = -1; PutCode[ii+UNum] = -1; } } //buy신호 발생시 if (Signal.signalKind == 1) { Start = 1; CC = -1; CallOrderCode = -1; for (var iii = -LNum; iii <= UNum; iii++) { if (CallPrice[iii+LNum] > CC) { CC = CallPrice[iii+LNum]; CallOrderCode = CallCode[iii+LNum] } } if (CC > 0) { Account1.OrderBuy(CallOrderCode, 1, 0, 1); Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드:"+CallOrderCode+" /START:"+Start); } else { Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드: 지정한 가격대 종목이 없음"+" /START:"+Start); } } // Exitlong신호 발생시 if (Start == 1 && Signal.signalKind == 2) { Start = 0; if (CC > 0) { Account1.OrderSell(CallOrderCode, 1, 0, 1); Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드:"+CallOrderCode+" /START:"+Start); } else { Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드: 지정한 가격대 종목이 없음"+" /START:"+Start); } } //sell신호 발생시 if (Signal.signalKind == 3) { Start = -1; PP = -1; PutOrderCode = -1; for (var iiii = -UNum; iiii <= LNum; iiii++) { if (PutPrice[iiii+UNum] > PP) { PP = PutPrice[iiii+UNum]; PutOrderCode = PutCode[iiii+UNum]; } } if (PP > 0) { Account1.OrderBuy(PutOrderCode, 1, 0, 1); Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드:"+PutOrderCode+" /START:"+Start); } else { Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드: 지정한 가격대 종목이 없음"+" /START:"+Start); } } //exitshort신호 발생시 if ( Start == -1 && Signal.signalKind == 4) { Start = 0; if (PP > 0) { Account1.OrderSell(PutOrderCode, 1, 0, 1); Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드:"+PutOrderCode+" /START:"+Start); } else { Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드: 지정한 가격대 종목이 없음"+" /START:"+Start); } } }
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2013-09-04 16:39:32

안녕하세요 예스스탁입니다. 수정한 식입니다. var Start; var UNum; var LNum; var CallCode; var CallPrice; var PutCode; var PutPrice; var CC; var PP; var CallOrderCode; var PutOrderCode; function Main_OnStart() { Start = 0; } function Chart1_OnRiseSignal(Signal) { UNum = Option.uppersATM; LNum = Option.lowersATM; CallCode = new Array(UNum+LNum+1); PutCode = new Array(UNum+LNum+1); CallPrice = new Array(UNum+LNum+1); PutPrice = new Array(UNum+LNum+1); for (var i = -LNum; i <= UNum; i++) { if (Option.GetCurrent(0, i) <= 2.0 && Option.GetCurrent(0, i) >= 1.0) { CallPrice[i+LNum] = Option.GetCurrent(0, i); CallCode[i+LNum] = Option.GetATMCallRecent(i); } else { CallPrice[i+LNum] = 9999999; CallCode[i+LNum] = 9999999; } } for (var ii = -UNum; ii <= LNum; ii++) { if (Option.GetCurrent(1, ii) <= 2.0 && Option.GetCurrent(1, ii) >= 1.0) { PutPrice[ii+UNum] = Option.GetCurrent(1, ii); PutCode[ii+UNum] = Option.GetATMPutRecent(ii); } else { PutPrice[ii+UNum] = 9999999; PutCode[ii+UNum] = 9999999; } } //buy신호 발생시 if (Signal.signalKind == 1) { Start = 1; CC = 9999999; CallOrderCode = 9999999; for (var iii = -LNum; iii <= UNum; iii++) { if (CallPrice[iii+LNum] < CC) { CC = CallPrice[iii+LNum]; CallOrderCode = CallCode[iii+LNum] } } if (CC < 9999999) { Account1.OrderBuy(CallOrderCode, 1, 0, 1); Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드:"+CallOrderCode+" /START:"+Start); } else { Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드: 지정한 가격대 종목이 없음"+" /START:"+Start); } } // Exitlong신호 발생시 if (Start == 1 && Signal.signalKind == 2) { Start = 0; if (CC > 0) { Account1.OrderSell(CallOrderCode, 1, 0, 1); Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드:"+CallOrderCode+" /START:"+Start); } else { Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드: 지정한 가격대 종목이 없음"+" /START:"+Start); } } //sell신호 발생시 if (Signal.signalKind == 3) { Start = -1; PP = 9999999; PutOrderCode = 9999999; for (var iiii = -UNum; iiii <= LNum; iiii++) { if (PutPrice[iiii+UNum] < PP) { PP = PutPrice[iiii+UNum]; PutOrderCode = PutCode[iiii+UNum]; } } if (PP < 9999999) { Account1.OrderBuy(PutOrderCode, 1, 0, 1); Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드:"+PutOrderCode+" /START:"+Start); } else { Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드: 지정한 가격대 종목이 없음"+" /START:"+Start); } } //exitshort신호 발생시 if ( Start == -1 && Signal.signalKind == 4) { Start = 0; if (PP > 0) { Account1.OrderSell(PutOrderCode, 1, 0, 1); Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드:"+PutOrderCode+" /START:"+Start); } else { Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드: 지정한 가격대 종목이 없음"+" /START:"+Start); } } } 즐거운 하루되세요 > 털보 님이 쓴 글입니다. > 제목 : 문의 > 질문 수정할게요. 선물신호 타종목주문. 현재 아래식은 1~2 사이 옵션중 2 에 가까운 종목이 진입 되는데요. 1에 가까운 종목으로 진입되게 수정 부탁드립니다. var Start; var UNum; var LNum; var CallCode; var CallPrice; var PutCode; var PutPrice; var CC; var PP; var CallOrderCode; var PutOrderCode; function Main_OnStart() { Start = 0; } function Chart1_OnRiseSignal(Signal) { UNum = Option.uppersATM; LNum = Option.lowersATM; CallCode = new Array(UNum+LNum+1); PutCode = new Array(UNum+LNum+1); CallPrice = new Array(UNum+LNum+1); PutPrice = new Array(UNum+LNum+1); for (var i = -LNum; i <= UNum; i++) { if (Option.GetCurrent(0, i) <= 2.0 && Option.GetCurrent(0, i) >= 1.0) { CallPrice[i+LNum] = Option.GetCurrent(0, i); CallCode[i+LNum] = Option.GetATMCallRecent(i); } else { CallPrice[i+LNum] = -1; CallCode[i+LNum] = -1; } } for (var ii = -UNum; ii <= LNum; ii++) { if (Option.GetCurrent(1, ii) <= 2.0 && Option.GetCurrent(1, ii) >= 1.0) { PutPrice[ii+UNum] = Option.GetCurrent(1, ii); PutCode[ii+UNum] = Option.GetATMPutRecent(ii); } else { PutPrice[ii+UNum] = -1; PutCode[ii+UNum] = -1; } } //buy신호 발생시 if (Signal.signalKind == 1) { Start = 1; CC = -1; CallOrderCode = -1; for (var iii = -LNum; iii <= UNum; iii++) { if (CallPrice[iii+LNum] > CC) { CC = CallPrice[iii+LNum]; CallOrderCode = CallCode[iii+LNum] } } if (CC > 0) { Account1.OrderBuy(CallOrderCode, 1, 0, 1); Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드:"+CallOrderCode+" /START:"+Start); } else { Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드: 지정한 가격대 종목이 없음"+" /START:"+Start); } } // Exitlong신호 발생시 if (Start == 1 && Signal.signalKind == 2) { Start = 0; if (CC > 0) { Account1.OrderSell(CallOrderCode, 1, 0, 1); Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드:"+CallOrderCode+" /START:"+Start); } else { Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드: 지정한 가격대 종목이 없음"+" /START:"+Start); } } //sell신호 발생시 if (Signal.signalKind == 3) { Start = -1; PP = -1; PutOrderCode = -1; for (var iiii = -UNum; iiii <= LNum; iiii++) { if (PutPrice[iiii+UNum] > PP) { PP = PutPrice[iiii+UNum]; PutOrderCode = PutCode[iiii+UNum]; } } if (PP > 0) { Account1.OrderBuy(PutOrderCode, 1, 0, 1); Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드:"+PutOrderCode+" /START:"+Start); } else { Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드: 지정한 가격대 종목이 없음"+" /START:"+Start); } } //exitshort신호 발생시 if ( Start == -1 && Signal.signalKind == 4) { Start = 0; if (PP > 0) { Account1.OrderSell(PutOrderCode, 1, 0, 1); Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드:"+PutOrderCode+" /START:"+Start); } else { Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드: 지정한 가격대 종목이 없음"+" /START:"+Start); } } }