커뮤니티

간단한 질문 문의

프로필 이미지
탄젠트80
2014-06-09 22:40:46
1371
글번호 223014
답변완료
안녕하세요 기존 게시판에 공개된 스팟전략으로 공부중인데 초보라 이해부탁드려요 아래는 선물신호시 3.0~1.5의 프리값중 2.3에 가까운 옵션 종목을 매도하는 스팟전략인데요 장중의 프리값의 큰변동시 진입종목이 변경될때가 있는데 이와 상관없이 처음 진입한 종목을 당일 장중 내내 거래하고 싶습니다. 어려우셔도 아래식을 지정종목으로 거대될수 있도록 스팟전략 부탁드립니다. - 예)금일의 경우 장중내내 선물 매수신호시 ---> 풋 외가 1호가(P257.5) 매도 선물 매도신호시 ---> 콜 외가 1호가(C262.5) 매도 ============================================================================= 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) <= 3.0 && Option.GetCurrent(0, i) >= 1.5) { CallPrice[i+LNum] = Math.abs(Option.GetCurrent(0, i)-2.3); 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) <= 3.0 && Option.GetCurrent(1, ii) >= 1.5) { PutPrice[ii+UNum] = Math.abs(Option.GetCurrent(1, ii)-2.3); PutCode[ii+UNum] = Option.GetATMPutRecent(ii); } else { PutPrice[ii+UNum] = 9999999; PutCode[ii+UNum] = 9999999; } } //buy신호 발생시 if (Signal.signalKind == 1) { Start = 1; PP = 9999999; PutOrderCode = 9999999; for (var iii = -LNum; iii <= UNum; iii++) { if (PutPrice[iii+LNum] < PP) { PP = PutPrice[iii+LNum]; PutOrderCode = PutCode[iii+LNum] } } if (PP < 9999999) { Account1.OrderSell(PutOrderCode, 1, 0, 1); Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드:"+PutOrderCode+" /START:"+Start); } else { Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드: 지정한 가격대 종목이 없음"+" /START:"+Start); } } // Exitlong신호 발생시 if (Start == 1 && Signal.signalKind == 2) { Start = 0; 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); } } //sell신호 발생시 if (Signal.signalKind == 3) { Start = -1; CC = 9999999; CallOrderCode = 9999999; for (var iiii = -UNum; iiii <= LNum; iiii++) { if (CallPrice[iiii+UNum] < CC) { CC = CallPrice[iiii+UNum]; CallOrderCode = CallCode[iiii+UNum]; } } if (CC < 9999999) { Account1.OrderSell(CallOrderCode, 1, 0, 1); Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드:"+CallOrderCode+" /START:"+Start); } else { Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드: 지정한 가격대 종목이 없음"+" /START:"+Start); } } //exitshort신호 발생시 if ( Start == -1 && Signal.signalKind == 4) { Start = 0; 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); } } } ================================================================================ 수고하세요~
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2014-06-19 14:10:50

안녕하세요 예스스탁입니다. 아래식 참고하시기 바랍니다. 각각 Buy와 Sell신호가 처임발생할때 종목을 선정하고 이후에는 계속 해당 종목에 대해서 주문을 발생하게 수정했습니다. var Start; var UNum; var LNum; var CallCode; var CallPrice; var PutCode; var PutPrice; var CC; var PP; var CallOrderCode; var PutOrderCode; var BuyCnt, SellCnt; function Main_OnStart() { Start = 0; BuyCnt = 0; SellCnt = 0; } function Chart1_OnRiseSignal(Signal) { //buy신호 발생시 if (Signal.signalKind == 1) { BuyCnt = BuyCnt +1; //스팟 시작 후 첫 buy신호에서만 종목선정 if (BuyCnt == 1) { UNum = Option.uppersATM; LNum = Option.lowersATM; PutCode = new Array(UNum+LNum+1); PutPrice = new Array(UNum+LNum+1); for (var i = -UNum; i <= LNum; i++) { if (Option.GetCurrent(1, i) <= 3.0 && Option.GetCurrent(1, i) >= 1.5) { PutPrice[i+UNum] = Math.abs(Option.GetCurrent(1, i)-2.3); PutCode[i+UNum] = Option.GetATMPutRecent(i); } else { PutPrice[i+UNum] = 9999999; PutCode[i+UNum] = 9999999; } } PP = 9999999; PutOrderCode = 9999999; for (var i = -LNum; i <= UNum; i++) { if (PutPrice[i+LNum] < PP) { PP = PutPrice[i+LNum]; PutOrderCode = PutCode[i+LNum] } } if (PP < 9999999) { Main.MessageList("Buy 신호 발생 - 주문 종목",PutOrderCode); } else { Main.MessageList("Buy 신호 발생 - 지정한 가격대 종목이 없음"); } } if (PP < 9999999) { Account1.OrderSell(PutOrderCode, 1, 0, 1); Start = 1; } } // Exitlong신호 발생시 if (Start == 1 && Signal.signalKind == 2) { Start = 0; Account1.OrderBuy(PutOrderCode, 1, 0, 1); } //sell신호 발생시 if (Signal.signalKind == 3) { SellCnt = SellCnt+1; //스팟 시작 후 첫 Sell신호에서만 종목선정 if (SellCnt == 1) { UNum = Option.uppersATM; LNum = Option.lowersATM; CallCode = new Array(UNum+LNum+1); CallPrice = new Array(UNum+LNum+1); for (var i = -LNum; i <= UNum; i++) { if (Option.GetCurrent(0, i) <= 3.0 && Option.GetCurrent(0, i) >= 1.5) { CallPrice[i+LNum] = Math.abs(Option.GetCurrent(0, i)-2.3); CallCode[i+LNum] = Option.GetATMCallRecent(i); } else { CallPrice[i+LNum] = 9999999; CallCode[i+LNum] = 9999999; } } CC = 9999999; CallOrderCode = 9999999; for (var i = -UNum; i <= LNum; i++) { if (CallPrice[i+UNum] < CC) { CC = CallPrice[i+UNum]; CallOrderCode = CallCode[i+UNum]; } } if (CC < 9999999) { Main.MessageList("Sell 신호 발생 - 주문 종목",CallOrderCode); } else { Main.MessageList("Sell 신호 발생 - 지정한 가격대 종목이 없음"); } } if (CC < 9999999) { Account1.OrderSell(CallOrderCode, 1, 0, 1); } } //exitshort신호 발생시 if ( Start == -1 && Signal.signalKind == 4) { Start = 0; Account1.OrderBuy(CallOrderCode, 1, 0, 1); } } 즐거운 하루되세요 > 탄젠트80 님이 쓴 글입니다. > 제목 : 간단한 질문 문의 > 안녕하세요 기존 게시판에 공개된 스팟전략으로 공부중인데 초보라 이해부탁드려요 아래는 선물신호시 3.0~1.5의 프리값중 2.3에 가까운 옵션 종목을 매도하는 스팟전략인데요 장중의 프리값의 큰변동시 진입종목이 변경될때가 있는데 이와 상관없이 처음 진입한 종목을 당일 장중 내내 거래하고 싶습니다. 어려우셔도 아래식을 지정종목으로 거대될수 있도록 스팟전략 부탁드립니다. - 예)금일의 경우 장중내내 선물 매수신호시 ---> 풋 외가 1호가(P257.5) 매도 선물 매도신호시 ---> 콜 외가 1호가(C262.5) 매도 ============================================================================= 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) <= 3.0 && Option.GetCurrent(0, i) >= 1.5) { CallPrice[i+LNum] = Math.abs(Option.GetCurrent(0, i)-2.3); 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) <= 3.0 && Option.GetCurrent(1, ii) >= 1.5) { PutPrice[ii+UNum] = Math.abs(Option.GetCurrent(1, ii)-2.3); PutCode[ii+UNum] = Option.GetATMPutRecent(ii); } else { PutPrice[ii+UNum] = 9999999; PutCode[ii+UNum] = 9999999; } } //buy신호 발생시 if (Signal.signalKind == 1) { Start = 1; PP = 9999999; PutOrderCode = 9999999; for (var iii = -LNum; iii <= UNum; iii++) { if (PutPrice[iii+LNum] < PP) { PP = PutPrice[iii+LNum]; PutOrderCode = PutCode[iii+LNum] } } if (PP < 9999999) { Account1.OrderSell(PutOrderCode, 1, 0, 1); Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드:"+PutOrderCode+" /START:"+Start); } else { Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드: 지정한 가격대 종목이 없음"+" /START:"+Start); } } // Exitlong신호 발생시 if (Start == 1 && Signal.signalKind == 2) { Start = 0; 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); } } //sell신호 발생시 if (Signal.signalKind == 3) { Start = -1; CC = 9999999; CallOrderCode = 9999999; for (var iiii = -UNum; iiii <= LNum; iiii++) { if (CallPrice[iiii+UNum] < CC) { CC = CallPrice[iiii+UNum]; CallOrderCode = CallCode[iiii+UNum]; } } if (CC < 9999999) { Account1.OrderSell(CallOrderCode, 1, 0, 1); Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드:"+CallOrderCode+" /START:"+Start); } else { Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드: 지정한 가격대 종목이 없음"+" /START:"+Start); } } //exitshort신호 발생시 if ( Start == -1 && Signal.signalKind == 4) { Start = 0; 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); } } } ================================================================================ 수고하세요~