커뮤니티

문의드립니다.

프로필 이미지
지나리
2015-12-03 14:39:30
2134
글번호 223732
답변완료
안녕하세요. 콜옵션을 진입한 상황에서, 진입이후 콜옵션 가격이 상승하여 평가이익 중이다가 진입가격+1틱에 도달하면 콜옵션 잔고수량을 청산한다. 감사합니다.
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2015-12-11 17:32:15

안녕하세요 예스스탁입니다. 예스스팟 문의에 대한 답변은 식작성의 가이드입니다. 아래 내용 참고하셔서 수정보완해 사용하시기 바랍니다. 콜옵션매수는 특별히 지정할 이벤트가 없어 시작이벤트에서 매수하게 했습니다. 이용에 참고하시기 바랍니다. var CallCode,BuyID,BuyNum,BuyFillPrice,EntrySinceHigh; //콜옵션 매수 function Main_OnStart() { //주문종목 ATM콜 CallCode = Option1.GetATMCallRecent(0,0);//ATM콜 //매수주문후 주문 아이디를 BuyID에 저장 BuyID = Account1.OrderBuy(CallCode, 1, Option1.GetAsk(CallCode, 3), 0); //체결여부 판단변수 BuyFill = false; //체결이후 최고가 계산위한 변수 EntrySinceHigh = 0; //타이머 셋팅(1번타이머, 1초) Main.SetTimer(1, 1000); } function Main_OnTimer(nEventID) { //1번 타이머 동작하고 체결수신된 이후에 if (nEventID == 1 && BuyFill == true ) { //CallCode종목의 현재가가 EntrySinceHigh보다 크면 //EntrySinceHigh변수의 값은 현재가로 변경 if (Option1.GetCurrent(CallCode) > EntrySinceHigh) { EntrySinceHigh = Option1.GetCurrent(CallCode); } //EntrySinceHigh가 체결가 +0.01보다 크고 //현재가가 체결가 +0.01 이하이면 //매도 주문 if (EntrySinceHigh > BuyFillPrice+0.01 && Option1.GetCurrent(CallCode) <= BuyFillPrice+0.01 ) { Account1.OrderSell(CallCode, 1, Option1.GetBid(CallCode, 3), 0); Main.KillTimer(1);//매도했으므로 타이머 종료 } } } //주문응답수신 function Main_OnOrderResponse(OrderResponse) { //수신받은 주문응답 아이디가 BuyID와 같으면 if (OrderResponse.orderID == BuyID) { //BuyNum에 주문번호 저장 BuyNum = OrderResponse.orderNum; } } //체결응답 수신 function Main_OnNotifyFill(NotifyFill) { //주문번호가 BuyNum과 같으면 if (NotifyFill.orderNum == BuyNum) { //체결여부 확인 변수는 true BuyFill = true; //매수체결가 저장 BuyFillPrice = NotifyFill.fillPrice; //매수체결이후 최고가 계산할 변수 초기값으로 체결가 저장 EntrySinceHigh = BuyFillPrice; } } 즐거운 하루되세요 > 지나리 님이 쓴 글입니다. > 제목 : 문의드립니다. > 안녕하세요. 콜옵션을 진입한 상황에서, 진입이후 콜옵션 가격이 상승하여 평가이익 중이다가 진입가격+1틱에 도달하면 콜옵션 잔고수량을 청산한다. 감사합니다.