커뮤니티

문의드림니다

프로필 이미지
mao
2024-03-26 12:54:13.0
508
글번호 225977
답변완료
선물 분봉 당일매매 수식을 이용해서 옵션매수하는 수식부탁드림니다 즉 선물 매수신호시 콜옵션(3.0이하 중 3.0에 가장 가까운 가격) 매수하고 선물 매도신호시 풋옵션(3.0이하 중 3.0에 가장 가까운 가격) 매수하고 선물 매수청산 신호시 콜옵션 매수청산 선물 매도청산 신호시 풋옵션 매수청산 하는 수식 부탁드림니다
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2024-04-18 17:21:51.0

안녕하세요 예스스탁입니다. 아래 가이드 참고하시기 바랍니다. 스크립트 객체설정 옵션객체 추가 --> 속성에서 객체명 Option1, 옵션월물지정 차트객체 추가 --> 속성에서 객체명 Chart1, 차트와 동일한 아이디 부여 계좌객체 추가 --> 속성에서 객체명 Account1, 주문낼 계좌번호 지정 var 진입수량 = 1; var CallCode,CallMax,PutCode,PutMax; var BV,BID,BNUM,SV,SID,SNUM; //스팟시작 function Main_OnStart() { Main.MessageList("Start"); } function Chart1_OnRiseSignal(Signal) { //Buy신호 발생 if (Signal.signalKind == 1) { //콜 3.0이하 중 가장 큰 종목 선택 CallCode = ""; CallMax = 0; for (var i = -Option1.lowersATM; i <= Option1.uppersATM; i++) { if (Option1.GetCurrent(0,i) <= 3.0 && (CallMax == 0 || (CallMax > 0 && Option1.GetCurrent(0,i) > CallMax))) { CallMax = Option1.GetCurrent(0,i); CallCode = Option1.GetATMCallRecent(i); } } Main.MessageList("Buy발생 : 콜매수종목:",CallCode,CallMax); //콜종목 선정이 되었으면 if (CallMax > 0) { //진입주문 수량 BV = 진입수량; //매도3호가로 지정한 수량 매수주문 BID = Account1.OrderBuy(CallCode, BV, Option1.GetAsk(CallCode, 3), 0); } } //매수청산신호 발생(CallMax > 0은 스팟시작후 매수진입신호가 발생했음을 의미) if (Signal.signalKind == 2 && CallMax > 0) { //청산수량 기본값은 진입수량 var BXV = BV; //진입주문 미체결 체크 Account1.SetUnfill(BNUM); //미체결이 있으면 if (Account1.Unfill.count > 0) { //청산수량은 진입수량-미체결수량 BXV = BV-Account1.Unfill.count; //진입 미체결주문 취소 Account1.OrderCancel(BNUM); } //청산할 수량이 있으면 if (BXV > 0) { //매수3호가로 매도주 Account1.OrderSell(CallCode, BXV, Option1.GetBid(CallCode, 3),0); } } //Sell신호 발생 if (Signal.signalKind == 3) { //풋 3.0이하 중 가장 큰 종목 선택 PutCode = ""; PutMax = 0; for (var i = -Option1.lowersATM; i <= Option1.uppersATM; i++) { if (Option1.GetCurrent(1,-i) <= 3.0 && (PutMax == 0 || (PutMax > 0 && Option1.GetCurrent(1,-i) > PutMax))) { PutMax = Option1.GetCurrent(1,-i); PutCode = Option1.GetATMPutRecent(-i); } } Main.MessageList("Sell발생 : 풋매수종목:",PutCode,PutMax); //풋종목 선정이 되었으면 if (PutMax > 0) { //진입주문 수량 SV = 진입수량; //매도3호가로 지정한 수량 매수주문 SID = Account1.OrderBuy(PutCode, SV, Option1.GetAsk(PutCode, 3), 0); } } //매도청산신호 발생(PutMax > 0은 스팟시작후 매도진입신호가 발생했음을 의미) if (Signal.signalKind == 4 && PutMax > 0) { //청산수량 기본값은 진입수량 var SXV = SV; //진입주문 미체결 체크 Account1.SetUnfill(SNUM); //미체결이 있으면 if (Account1.Unfill.count > 0) { //청산수량은 진입수량-미체결 수량 SXV = SV-Account1.Unfill.count; //진입 미체결주문 주문취소 Account1.OrderCancel(SNUM); } //청산할 수량이 있으면 if (SXV > 0) { //매수3호가로 매도주문 Account1.OrderSell(PutCode, SXV, Option1.GetBid(PutCode, 3),0); } } } function Main_OnOrderResponse(OrderResponse) { //Buy신호시 콜매수 주문응답 if (OrderResponse.orderID == BID) { //주문번호 저장 BNUM = OrderResponse.orderNum; } //Sell신호시 풋매수 주문응답 if (OrderResponse.orderID == SID) { //주문번호 저장 SNUM = OrderResponse.orderNum; } } 즐거운 하루되세요 > mao 님이 쓴 글입니다. > 제목 : 문의드림니다 > 선물 분봉 당일매매 수식을 이용해서 옵션매수하는 수식부탁드림니다 즉 선물 매수신호시 콜옵션(3.0이하 중 3.0에 가장 가까운 가격) 매수하고 선물 매도신호시 풋옵션(3.0이하 중 3.0에 가장 가까운 가격) 매수하고 선물 매수청산 신호시 콜옵션 매수청산 선물 매도청산 신호시 풋옵션 매수청산 하는 수식 부탁드림니다