커뮤니티

예스스팟

프로필 이미지
노블레스
2013-01-17 14:20:22
241
글번호 58278
답변완료
안녕하세요? 새로 출시된 예스스팟으로 선물에서 매수.매도 신호가 발생할때 콜옵션과 풋옵션에 동시에 주문을 집행하여 합성전략 구현할수 있도록 부탁드립니다. 참고로 아래 내용은 시스메틱에서 발취했습니다. 수정할 내용이 있으면 고쳐주세요. 그리고 식이 완성되었으면 시스템 적용방법도 가르쳐 주세요? [전략략내용-리버셜매매] 선물차트에서 매수신호가 발생하면 콜매수+풋매도 선물차트에서 매도신호가 발생하면 콜매도+풋매수 var Start; var BuyC_code; var BuyP_code; var SellC_code; var SellP_code; function Main::OnStart() { Main.MessageLog("시작"); Start = 0; } function C1::OnRiseSignal(Signal) { Main.MessageLog("신호완성/"+Signal.signalKind); if (Signal.signalKind == 1 ) { Start = 1; BuyC_code = Option.GetATMCallRecent(0); BuyP_code = Option.GetATMPutRecent(0); var BuyC_price = Option.GetAskByCode(BuyC_code,2); var BuyP_price = Option.GetBidByCode(BuyP_code,2); A1.OrderBuy(BuyC_code, Vol, BuyC_price, 1); A1.OrderSell(BuyP_code, Vol, BuyP_price, 1); Main.MessageLog("합성선물매수"); } if (Start == 1 && Signal.signalKind == 2 ) { var BxC_price = Option.GetBidByCode(BuyC_code, 2); var BxP_price = Option.GetAskByCode(BuyP_code, 2); A1.OrderSell(BuyC_code, Vol, BxC_price, 1); A1.OrderBuy(BuyP_code, Vol, BxP_price, 1); Main.MessageLog("합성선물매수청산"); } if (Signal.signalKind == 3 ) { Start = 1; SellC_code = Option.GetATMCallRecent(0); SellP_code = Option.GetATMPutRecent(0); var SellC_price = Option.GetBidByCode(SellC_code,2); var SellP_price = Option.GetAskByCode(SellP_code,2); A1.OrderSell(SellC_code, Vol, SellC_price , 1); A1.OrderBuy(SellP_code, Vol, SellP_price, 1); Main.MessageLog("합성선물매도"); } if (Start == 1 && Signal.signalKind == 4 ) { var SxC_price = Option.GetAskByCode(SellC_code, 2); var SxP_price = Option.GetBidByCode(SellP_code, 2); A1.OrderBuy(SellC_code, Vol, SxC_price, 1); A1.OrderSell(SellP_code, Vol, SxP_price, 1); Main.MessageLog("합성선물매도청산"); } }
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2013-01-17 16:24:24

안녕하세요 예스스탁입니다. 이전버전 형태라 현재버전으로 수정했습니다. 스크립트 객체화면에서 차트객체, 계좌객체, 옵션객체, 외부변수1개 를 추가하시고 사용하시면 됩니다. 차트객체 --> 속성에서 차트객체명은 C1로 하시고 신호받을 차트와 차트아이디를 동일하게 부여하시면 됩니다. 계좌객체 --> 속성에서 계좌객체명명은 A1으로 지정하시고 계좌선택해 주시면 됩니다. 외부변수 --> 속성에서 외부변수 이름은 Vol로 지정하고 숫자형으로 하신다면 주문수량을 지정해 주시면 됩니다. var Start; var BuyCcode; var BuyPcode; var SellCcode; var SellPcode; function Main_OnStart() { Main.MessageLog("시작"); Start = 0; } function C1_OnRiseSignal(Signal) { Main.MessageLog("신호완성/"+Signal.signalKind); if (Signal.signalKind == 1 ) { Start = 1; BuyCcode = Option.GetATMCallRecent(0); BuyPcode = Option.GetATMPutRecent(0); var BuyCprice = Option.GetAskByCode(BuyC_code,2); var BuyPprice = Option.GetBidByCode(BuyP_code,2); A1.OrderBuy(BuyCcode, Vol, BuyCprice, 0); A1.OrderSell(BuyPcode, Vol, BuyPprice, 0); Main.MessageLog("합성선물매수"); } if (Start == 1 && Signal.signalKind == 2 ) { var BxCprice = Option.GetBidByCode(BuyC_code, 2); var BxPprice = Option.GetAskByCode(BuyP_code, 2); A1.OrderSell(BuyCcode, Vol, BxCprice, 0); A1.OrderBuy(BuyPcode, Vol, BxPprice, 0); Main.MessageLog("합성선물매수청산"); } if (Signal.signalKind == 3 ) { Start = 1; SellCcode = Option.GetATMCallRecent(0); SellPcode = Option.GetATMPutRecent(0); var SellCprice = Option.GetBidByCode(SellC_code,2); var SellPprice = Option.GetAskByCode(SellP_code,2); A1.OrderSell(SellCcode, Vol, SellCprice , 0); A1.OrderBuy(SellPcode, Vol, SellPprice, 0); Main.MessageLog("합성선물매도"); } if (Start == 1 && Signal.signalKind == 4 ) { var SxCprice = Option.GetAskByCode(SellC_code, 2); var SxPprice = Option.GetBidByCode(SellP_code, 2); A1.OrderBuy(SellCcode, Vol, SxCprice, 0); A1.OrderSell(SellPcode, Vol, SxPprice, 0); Main.MessageLog("합성선물매도청산"); } } 즐거운 하루되세요 > 노블레스 님이 쓴 글입니다. > 제목 : 예스스팟 > 안녕하세요? 새로 출시된 예스스팟으로 선물에서 매수.매도 신호가 발생할때 콜옵션과 풋옵션에 동시에 주문을 집행하여 합성전략 구현할수 있도록 부탁드립니다. 참고로 아래 내용은 시스메틱에서 발취했습니다. 수정할 내용이 있으면 고쳐주세요. 그리고 식이 완성되었으면 시스템 적용방법도 가르쳐 주세요? [전략략내용-리버셜매매] 선물차트에서 매수신호가 발생하면 콜매수+풋매도 선물차트에서 매도신호가 발생하면 콜매도+풋매수 var Start; var BuyC_code; var BuyP_code; var SellC_code; var SellP_code; function Main::OnStart() { Main.MessageLog("시작"); Start = 0; } function C1::OnRiseSignal(Signal) { Main.MessageLog("신호완성/"+Signal.signalKind); if (Signal.signalKind == 1 ) { Start = 1; BuyC_code = Option.GetATMCallRecent(0); BuyP_code = Option.GetATMPutRecent(0); var BuyC_price = Option.GetAskByCode(BuyC_code,2); var BuyP_price = Option.GetBidByCode(BuyP_code,2); A1.OrderBuy(BuyC_code, Vol, BuyC_price, 1); A1.OrderSell(BuyP_code, Vol, BuyP_price, 1); Main.MessageLog("합성선물매수"); } if (Start == 1 && Signal.signalKind == 2 ) { var BxC_price = Option.GetBidByCode(BuyC_code, 2); var BxP_price = Option.GetAskByCode(BuyP_code, 2); A1.OrderSell(BuyC_code, Vol, BxC_price, 1); A1.OrderBuy(BuyP_code, Vol, BxP_price, 1); Main.MessageLog("합성선물매수청산"); } if (Signal.signalKind == 3 ) { Start = 1; SellC_code = Option.GetATMCallRecent(0); SellP_code = Option.GetATMPutRecent(0); var SellC_price = Option.GetBidByCode(SellC_code,2); var SellP_price = Option.GetAskByCode(SellP_code,2); A1.OrderSell(SellC_code, Vol, SellC_price , 1); A1.OrderBuy(SellP_code, Vol, SellP_price, 1); Main.MessageLog("합성선물매도"); } if (Start == 1 && Signal.signalKind == 4 ) { var SxC_price = Option.GetAskByCode(SellC_code, 2); var SxP_price = Option.GetBidByCode(SellP_code, 2); A1.OrderBuy(SellC_code, Vol, SxC_price, 1); A1.OrderSell(SellP_code, Vol, SxP_price, 1); Main.MessageLog("합성선물매도청산"); } }