커뮤니티

질문드립니다.

프로필 이미지
극동해
2013-10-01 17:17:39
820
글번호 222597
답변완료
안녕하세요. 제가 아래와 같이 선물 챠트 신호에 따라 옵션을 매매하는 수식을 작성해 보았는데요. 다음과 같이 청산식을 수정하고자 질문드립니다. 진입 - 기존 수식과 동일 청산1 - 챠트1 그리고 챠트2의 동시매수신호 발생시점의 선물가격이 1pt상승하면... 보유한 콜옵션 3개를 청산한다. 청산2 - 챠트1 또는 챠트2에서 매수익절신호(2) 또는 매도신호(3)이 발생하면 보유한 콜옵션 전량을 청산한다. 감사합니다. -------------------------------------------------------------------------------------- var S1; var S2; var MP; var Callcode; function Main_OnStart() { S1 = 0; S2 = 0; MP = 0; } function Chart1_OnRiseSignal(Signal) { S1 = Signal.signalKind; if (S1 == 1 && S2 == 1) { Callcode = Option.GetATMCallRecent(2,0); Account1.OrderBuy(Callcode, 6, Option.GetAskByCode(Callcode, 2), 0); MP = 1; } if (MP == 1 &&(S1 == 2 || S1 == 3)) { MP = 0; { Account1.OrderSell(Callcode, 6, Option.GetBidByCode(Callcode, 2), 0); } }
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2013-10-04 17:33:35

안녕하세요 예스스탁입니다. 실시간으로 선물의 가격을 알아야 하므로 스크립트 객체화면에 종목객체를 추가하신 후에 객체명 MarketData1, 종목은 선물로 지정하시고 사용하시면 됩니다. 수식에 게시판 금칙어가 있어 영문 업데이트가 Up*date로 작성이 되었습니다. * 제거하고 사용하시기 바랍니다. var S1; var S2; var MP; var Buy1; var Callcode; function Main_OnStart() { S1 = 0; S2 = 0; MP = 0; } function Chart1_OnRiseSignal(Signal) { S1 = Signal.signalKind; if (S1 == 1 && S2 == 1) { Buy1 = Signal.price; //신호가격 저장 Callcode = Option.GetATMCallRecent(2,0); Account1.OrderBuy(Callcode, 6, Option.GetAskByCode(Callcode, 2), 0); MP = 1; } //차트1에서 매수청산이나 매도신호 발생하면 if (MP == 1 &&(S1 == 2 || S1 == 3)) { MP = 0; //Callcode에 대한 잔고셋팅 Account1.SetBalanceItem(Callcode,0); //잔고수량이 0이상이고 매수포지션이면 잔고수량만큼만 청산 if (Account1.Balance.count > 0 && Account1.Balance.position == 2) { Account1.OrderSell(Callcode, Account1.Balance.count, Option.GetBidByCode(Callcode, 2), 0); } } } function Chart2_OnRiseSignal(Signal) { S2 = Signal.signalKind; if (S1 == 1 && S2 == 1) { Buy1 = Signal.price; //신호가격 저장 Callcode = Option.GetATMCallRecent(2,0); Account1.OrderBuy(Callcode, 6, Option.GetAskByCode(Callcode, 2), 0); MP = 1; } //차트2에서 매수청산신호나 매도신호 발생하면 if (MP == 1 &&(S2 == 2 || S2 == 3)) { MP = 0; //Callcode에 대한 잔고셋팅 Account1.SetBalanceItem(Callcode,0); //잔고수량이 0이상이고 매수포지션이면 잔고수량만큼만 청산 if (Account1.Balance.count > 0 && Account1.Balance.position == 2) { Account1.OrderSell(Callcode, Account1.Balance.count, Option.GetBidByCode(Callcode, 2), 0); } } } function Main_OnUp*dateMarket(sItemCode, lUp*dateID)//*제거 { if ( lUp*dateID == 20001 && //*제거 MP == 1 && sItemCode == MarketData11.code && MarketData11.current >= Buy1+1 ) { MP = 0; //Callcode에 대한 잔고셋팅 Account1.SetBalanceItem(Callcode,0); //잔고수량이 0이상이고 매수포지션이면 3계약 청산 if (Account1.Balance.count > 0 && Account1.Balance.position == 2) { Account1.OrderSell(Callcode, 3, Option.GetBidByCode(Callcode, 2), 0); } } } 즐거운 하루되세요 > 극동해 님이 쓴 글입니다. > 제목 : 질문드립니다. > 안녕하세요. 제가 아래와 같이 선물 챠트 신호에 따라 옵션을 매매하는 수식을 작성해 보았는데요. 다음과 같이 청산식을 수정하고자 질문드립니다. 진입 - 기존 수식과 동일 청산1 - 챠트1 그리고 챠트2의 동시매수신호 발생시점의 선물가격이 1pt상승하면... 보유한 콜옵션 3개를 청산한다. 청산2 - 챠트1 또는 챠트2에서 매수익절신호(2) 또는 매도신호(3)이 발생하면 보유한 콜옵션 전량을 청산한다. 감사합니다. -------------------------------------------------------------------------------------- var S1; var S2; var MP; var Callcode; function Main_OnStart() { S1 = 0; S2 = 0; MP = 0; } function Chart1_OnRiseSignal(Signal) { S1 = Signal.signalKind; if (S1 == 1 && S2 == 1) { Callcode = Option.GetATMCallRecent(2,0); Account1.OrderBuy(Callcode, 6, Option.GetAskByCode(Callcode, 2), 0); MP = 1; } if (MP == 1 &&(S1 == 2 || S1 == 3)) { MP = 0; { Account1.OrderSell(Callcode, 6, Option.GetBidByCode(Callcode, 2), 0); } }