안녕하세요.
콜옵션을 진입한 상황에서,
진입이후 콜옵션 가격이 상승하여 평가이익 중이다가 진입가격+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틱에 도달하면 콜옵션 잔고수량을 청산한다.
감사합니다.