예스스탁
예스스탁 답변
2015-06-08 14:49:28
안녕하세요
예스스탁입니다.
아래 내용들 참고하시기 바랍니다.
1.
function 이벤트
{
var CM = 0;
var PM = 1;
var forward = 0;
if (Option.GetRemainDays(0, 0) <= 4)
{
CM = 2;
PM = 3;
forward = 1;
}
//3.0 이하의 콜옵션종목 찾기
for (var i = -LNum; i <= UNum; i++)
{
if (Option.GetCurrent(CM, i) > 1.0 && Option.GetCurrent(CM, i) < 3.0 && Option.GetDelta(CM,i) != 0)
{
CallPrice[i+LNum] = Math.abs(0.5 - Math.abs(Option.GetDelta(CM,i)));
CallCode[i+LNum] = Option.GetATMCallRecent(i,forward);
}
else
{
CallPrice[i+LNum] = 999999;
CallCode[i+LNum] = 999999;
}
}
//3.0 이하의 콜옵션종목중 델타가 0.5에 근접하는 종목 찾기
CC = 999999;
CallOrderCode = 999999;
for (var ii = -LNum; ii <= UNum; ii++)
{
if (CallPrice[ii+LNum] < CC)
{
CC = CallPrice[ii+LNum];
CallOrderCode = CallCode[ii+LNum]
}
}
//3.0 이하의 풋옵션종목 찾기
for (var iii = -UNum; iii <= LNum; iii++)
{
if (Option.GetCurrent(PM, iii) > 1.0 && Option.GetCurrent(PM, iii) < 3.0 && Option.GetDelta(PM,iii) != 0 )
{
PutPrice[iii+UNum] = Math.abs(0.5 - Math.abs(Option.GetDelta(1,iii)));
PutCode[iii+UNum] = Option.GetATMPutRecent(iii,forward);
}
else
{
PutPrice[iii+UNum] = 999999;
PutCode[iii+UNum] = 999999;
}
}
//3.0 이하의 풋옵션종목중 델타가 0.5에 근접하는 종목 찾기
PP = 999999;
PutOrderCode = 999999;
for (var iiii = -UNum; iiii <= LNum; iiii++)
{
if (PutPrice[iiii+UNum] < PP)
{
PP = PutPrice[iiii+UNum];
PutOrderCode = PutCode[iiii+UNum];
}
}
}
2.
var : SID1,SID2,BID1,BID2;
var : SNum1,SNum2,BNum1,BNum2;
function 이벤트
{
if (조건1)
{ SID1 = Account1.OrderSell(SellCallCode, SellCallCount, Option.GetAskByCode(SellCallCode, 1), 0);
SID2 = Account1.OrderSell(SellPutCode, SellPutCount, Option.GetAskByCode(SellPutCode, 1), 0);
}
if (조건2)
{
BID1 = Account1.OrderBuy(SellCallCode, SellCallCount, Option.GetBidByCode(SellCallCode, 1), 0);
BID2 = Account1.OrderBuy(SellPutCode, SellPutCount, Option.GetBidByCode(SellPutCode, 1), 0);
}
}
function Main_OnOrderResponse(OrderResponse)
{
if (OrderResponse.orderID == SID1)
{
SNum1 = OrderResponse.orderNum;
}
if (OrderResponse.orderID == SID2)
{
SNum2 = OrderResponse.orderNum;
}
if (OrderResponse.orderID == BID1)
{
BNum1 = OrderResponse.orderNum;
}
if (OrderResponse.orderID == BID2)
{
BNum2 = OrderResponse.orderNum;
}
}
function Main_OnNotifyFill(NotifyFill)
{
if (NotifyFill.orderNum == SNum1)
{
Account1.SetUnfillOrderNumber(SNum2);
if (Account1.Unfill.count > 0)
Account1.OrderReplacePrice(SNum2, Option.GetBidByCode(Account1.Unfill.code, 5))
}
if (NotifyFill.orderNum == SNum2)
{
Account1.SetUnfillOrderNumber(SNum1);
if (Account1.Unfill.count > 0)
Account1.OrderReplacePrice(SNum1, Option.GetBidByCode(Account1.Unfill.code, 5))
}
if (NotifyFill.orderNum == BNum1)
{
Account1.SetUnfillOrderNumber(BNum2);
if (Account1.Unfill.count > 0)
Account1.OrderReplacePrice(BNum2, Option.GetAskByCode(Account1.Unfill.code, 5))
}
if (NotifyFill.orderNum == BNum2)
{
Account1.SetUnfillOrderNumber(BNum1);
if (Account1.Unfill.count > 0)
Account1.OrderReplacePrice(BNum1, Option.GetAskByCode(Account1.Unfill.code, 5))
}
}
즐거운 하루되세요
> 착한이 님이 쓴 글입니다.
> 제목 : 수정부탁드려요.
> 안녕하세요. 2가지 질문드립니다.
1. 아래는 3.0이하의 델타가 0.5근접하는 콜, 풋 종목입니다.
만기주가 아니라면 근월물, 만기주에는 차월물(가격 3.0 이하, 델타0.5)을 주문할 수 있도록
GetRemainDays 또는 GetRemainDaysByCode 함수를 이용하여 수식을 수정 부탁드립니다.
//3.0 이하의 콜옵션종목 찾기
for (var i = -LNum; i <= UNum; i++)
{
if (Option.GetCurrent(0, i) > 1.0 && Option.GetCurrent(0, i) < 3.0 && Option.GetDelta(0,i) != 0)
{
CallPrice[i+LNum] = Math.abs(0.5 - Math.abs(Option.GetDelta(0,i)));
CallCode[i+LNum] = Option.GetATMCallRecent(i);
}
else
{
CallPrice[i+LNum] = 999999;
CallCode[i+LNum] = 999999;
}
}
//3.0 이하의 콜옵션종목중 델타가 0.5에 근접하는 종목 찾기
CC = 999999;
CallOrderCode = 999999;
for (var ii = -LNum; ii <= UNum; ii++)
{
if (CallPrice[ii+LNum] < CC)
{
CC = CallPrice[ii+LNum];
CallOrderCode = CallCode[ii+LNum]
}
}
//3.0 이하의 풋옵션종목 찾기
for (var iii = -UNum; iii <= LNum; iii++)
{
if (Option.GetCurrent(1, iii) > 1.0 && Option.GetCurrent(1, iii) < 3.0 && Option.GetDelta(1,iii) != 0 )
{
PutPrice[iii+UNum] = Math.abs(0.5 - Math.abs(Option.GetDelta(1,iii)));
PutCode[iii+UNum] = Option.GetATMPutRecent(iii);
}
else
{
PutPrice[iii+UNum] = 999999;
PutCode[iii+UNum] = 999999;
}
}
//3.0 이하의 풋옵션종목중 델타가 0.5에 근접하는 종목 찾기
PP = 999999;
PutOrderCode = 999999;
for (var iiii = -UNum; iiii <= LNum; iiii++)
{
if (PutPrice[iiii+UNum] < PP)
{
PP = PutPrice[iiii+UNum];
PutOrderCode = PutCode[iiii+UNum];
}
}
2. 체결을 보장하기위해, 보통은 매도시 매수5호가, 매수시 매도5호가로 주문하고 있는데,
양매도 전략에서는 콜풋 동시에 매도진입시 각각 매도1호가에 지정가 주문후 둘 중 하나가 전량체결되면 나머지 주문은 시장가(또는 상대5호가)로 수정주문.
환매수시에도 마찬가지로 각각 매수1호가에 지정가 주문후 둘 중 하나가 전량체결되면 시장가(또는 상대5호가)로 수정주문할 수 있도록 아래의 수식을 수정부탁드립니다.
Account1.OrderSell(SellCallCode, SellCallCount, Option.GetBidByCode(SellCallCode, 5), 0);
Account1.OrderSell(SellPutCode, SellPutCount, Option.GetBidByCode(SellPutCode, 5), 0);
Account1.OrderBuy(SellCallCode, SellCallCount, Option.GetAskByCode(SellCallCode, 5), 0);
Account1.OrderBuy(SellPutCode, SellPutCount, Option.GetAskByCode(SellPutCode, 5), 0);