답변완료
해외옵션 관련 에러수정
안녕하세요.
아래의 시스템으로 선물 신호를 받아 해외 선물 옵션을 거래하려하는데, 에러가 발생합니다.
에러를 수정해주시면 감사하겠습니다.
===============================================================================
/*스크립트시작-----------------------------------------------------*/
var Start;
var BuyC1_code;
var BuyC2_code;
var BuyP1_code;
var BuyP2_code;
var SellC1_code;
var SellC2_code;
var SellP1_code;
var SellP2_code;
function Main_OnStart()
{
Main.MessageLog("시작");
Start = 0;
}
function Chart1_OnRiseSignal(Signal)
{
Main.MessageLog("신호완성/"+Signal.signalKind);
//Buy 신호발생
if (Signal.signalKind == 1 )
{
Start = 1;
BuyC2_code = Option.GetATMCallRecent(2,0); //콜 ATM+2 종목코드
BuyP2_code = Option.GetATMPutRecent(2,0); //풋 ATM+2 종목코드
SellP1_code = Option.GetATMPutRecent(0,0); //풋 ATM 종목코드
var BuyC2_price = Option.GetCurrent(BuyC2_code);
var BuyP2_price = Option.GetCurrent(BuyP2_code);
var SellP1_price = Option.GetCurrent(SellP1_code);
var Vol = Signal.count; //신호수량
Account1.OrderBuy(BuyC2_code, Vol*2, BuyC2_price, 1);
Account1.OrderBuy(BuyP2_code, Vol*2, BuyP2_price, 1);
Account1.OrderSell(SellP1_code, Vol, SellP1_price, 1);
Main.MessageLog("상방합성선물매수");
}
//매수청산신호
if (Start == 1 && Signal.signalKind == 2 )
{
//전체 종목수
var num = Account1.GetTheNumberOfBalances();
//전체 종목 중 옵션만 청산
for(var i = 0 ; i < num ; i++)
{
//잔고셋팅
Account1.SetBalance(i);
//옵션함수로 해당 종목이 옵션인지 확인
if (Option.GetCurrent(Account1.Balance.code) > 0 && Account1.Balance.count > 0)
{
//종목코드
var cc = Account1.Balance.code;
//잔고수량
var vv = Account1.Balance.count;
//매도포지션이면
if (Account1.Balance.position == 1)
{
//청산
Account1.OrderBuy(cc, vv,0,1);
}
//매수포지션이면
if (Account1.Balance.position == 2)
{
//청산
Account1.OrderSell(cc, vv,0,1);
}
}
Main.MessageLog("상방합성선물매수청산");
}
}
//Sell 신호발생
if (Signal.signalKind == 3 )
{
Start = 1;
BuyC2_code = Option.GetATMCallRecent(2,0); //콜 ATM+2 종목코드
SellC1_code = Option.GetATMCallRecent(0,0); //콜 ATM 종목코드
BuyP2_code = Option.GetATMPutRecent(2,0); //풋 ATM+2 종목코드
var BuyC2_price = Option.GetCurrent(BuyC2_code);
var SellC1_price = Option.GetCurrent(SellC1_code);
var BuyP2_price = Option.GetCurrent(BuyP2_code);
var Vol = Signal.count; //신호수량
Account1.OrderBuy(BuyC2_code, Vol*2, BuyC2_price , 1);
Account1.OrderSell(SellC1_code, Vol, SellC1_price , 1);
Account1.OrderBuy(BuyP2_code, Vol*2, BuyP2_price, 1);
Main.MessageLog("하방합성선물매도");
}
//매도청산신호
if (Start == 1 && Signal.signalKind == 4 )
{
//전체 종목수
var num = Account1.GetTheNumberOfBalances();
//전체 종목 중 옵션만 청산
for(var i = 0 ; i < num ; i++)
{
//잔고셋팅
Account1.SetBalance(i);
//옵션함수로 해당 종목이 옵션인지 확인
if (Option.GetCurrent(Account1.Balance.code) > 0 && Account1.Balance.count > 0)
{
//종목코드
var cc = Account1.Balance.code;
//잔고수량
var vv = Account1.Balance.count;
//매도포지션이면
if (Account1.Balance.position == 1)
{
//청산
Account1.OrderBuy(cc, vv,0,1);
}
//매수포지션이면
if (Account1.Balance.position == 2)
{
//청산
Account1.OrderSell(cc, vv,0,1);
}
}
Main.MessageLog("하방합성선물매도청산");
}
}
}
2019-07-20
3249
글번호 224930
답변완료
옵션의 역사적변동성과 내제변동성의 차이를 통한 매매를 하고싶습니다
옵션의 역사적변동성과 내제변동성의 차이를 통한 매매를 하고싶은데
내제변동성은 알려주는 함수가있는데
역사적변동성은 알려주는 함수가 없는거같아요.
option객체중 volatility를 사용하면 되는건가요?
콜 옵션 중에서 atm부터 가장 deep otm까지 돌면서 내제변동성이 역사적변동성보다
큰 종목중 가장 atm에 가까운 종목을 찾고싶은데 어떻게 코딩하면 되나요
for(var i =0; i<Option1.lowersATM, i++)
{
if(Option1.GetImpliedVolatility(0, i) > Option1.Volatility)
}
이와 비슷하게 나올거같긴한데 i가 0부터 시작하니까 atm 부터 끝의 호가까지 돌면서
서로 차례대로 비교하는게 맞나요? "> Option1.Volatility" 이 부분이 아마 틀릴거같고
Option1.GetImpliedVolatility(0, i) 이 부분에서 i를 써주면 atm부터 찾는건지 모르겠네요
답변부탁드릴게요. 감사합니다
2019-06-28
3411
글번호 224910