커뮤니티

문의드립니다.

프로필 이미지
하늘북
2018-03-01 13:51:40
2700
글번호 224345
답변완료
선물옵션 거래시 옵션 양매도를 할경우 가격교차지점에서 양매도 포지션을 진입하거나, 일정시간즉 매일 11시에 양매도 진입하고, 양합이 50틱 수익 발생시 일괄청산하거나, 매일 15에 일괄청산하는 수식을 부탁드려도 될까요?
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2018-03-20 11:08:12

안녕하세요 예스스탁입니다. 11시 양매도로 작성한 식입니다. 아래 내용 참고하셔서 수정보완해 사용하시기 바랍니다. var CallCode,CallID,CallNum,CallFill; var PutCode,PutID,PutNum,PutFill; var entry; var vol = 1;//진입수량 function Main_OnStart() { //타이머 5초단위 Main.SetTimer(1, 5000); step = 0; CallFill = false; PutFill = false; } function Main_OnTimer(nEventID) { var d = new Date(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (step == 0 && HHHMMSS > 110000) { //step은 1로 변경 step = 1; //ATM콜 종목코드 CallCode = Option1.GetATMCallRecent(0); //ATM풋 종목코드 PutCode = Option1.GetATMPutRecent(0); //Call종목 매수3호가로 매도주문하고 주문아이디는 CallID에 저장 CallID = Account1.OrderSell(CallCode,vol,Option1.GetBid(CallCode,3),0); //Put종목 매수3호가로 매도주문하고 주문아이디는 PutID에 저장 PutID = Account1.OrderSell(PutCode,vol,Option1.GetBid(PutCode,3),0); } //양매도 후 콜/풋 모두 체결이 되었으면 if (HHHMMSS > 110000 && step == 1 && CallFill == true && PutCall == true ) { //손익저장할 변수(초기값0) var sumPL = 0; //CallCode 잔고셋팅 Account1.SetBalance(CallCode,0); //수량이 1이상이고 매도포지션이면 손익을 sumPL에 합산저장 if (Account1.Balance.count >= 1 && Account1.Balance.position == 1) { sumPL = SumPL + (Account1.Balance.avgUnitCost - Account1.Balance.current); } //PutlCode 잔고셋팅 Account1.SetBalance(CallCode,0); //수량이 1이상이고 매도포지션이면 손익을 sumPL에 합산저장 if (Account1.Balance.count >= 1 && Account1.Balance.position == 1) { sumPL = SumPL + (Account1.Balance.avgUnitCost - Account1.Balance.current); } //합산손익이 +0.5 이상이면 if (sumPL >= 0.5) { //step은 2로 변경 step = 2; //콜풋 모두 매도3호가로 매수주문 Account1.OrderBuy(CallCode, vol, Option1.GetAsk(CallCode, 3), 0); Account1.OrderBuy(PutCode, vol, Option1.GetAsk(PutCode, 3), 0); } } //수익청산되지 않고 15시가 되면 if (step == 1 && HHHMMSS >= 150000) { //step은 2로 변경 step = 2; Main.KillTimer(1); //콜풋 모두 매도3호가로 매수주문 Account1.OrderBuy(CallCode, vol, Option1.GetAsk(CallCode, 3), 0); Account1.OrderBuy(PutCode, vol, Option1.GetAsk(PutCode, 3), 0); } } //주문응답수신 function Main_OnOrderResponse(OrderResponse) { //수신된 주문응답의 아이디가 CallID와 같으면 if (OrderResponse.orderID == CallID) { //CallNum에 주문번호저장 CallNum = OrderResponse.orderNum; } //수신된 주문응답의 아이디가 PutID와 같으면 if (OrderResponse.orderID == PutID) { //PutNum에 주문번호저장 PutNum = OrderResponse.orderNum; } } //체결응답수신 function Main_OnNotifyFill(NotifyFill) { //CallNum에 대한 체결응답이면 if (NotifyFill.orderNum == CallNum) { //CallNum에 대한 미체결객체 세팅하고 Account1.SetUnfill(CallNum); //미체결수량이 없으면(주문전량체결) if (Account1.Unfill.count == 0) { //CallFill에 true 저장 CallFill = true; } } //PutNum에 대한 체결응답이면 if (NotifyFill.orderNum == PutNum) { //PutNum에 대한 미체결객체 세팅하고 Account1.SetUnfill(PutNum); //미체결수량이 없으면(주문전량체결) if (Account1.Unfill.count == 0) { //PutFill에 true 저장 PutFill = true; } } } 즐거운 하루되세요 > 하늘북 님이 쓴 글입니다. > 제목 : 문의드립니다. > 선물옵션 거래시 옵션 양매도를 할경우 가격교차지점에서 양매도 포지션을 진입하거나, 일정시간즉 매일 11시에 양매도 진입하고, 양합이 50틱 수익 발생시 일괄청산하거나, 매일 15에 일괄청산하는 수식을 부탁드려도 될까요?