답변완료
해외옵션 관련 에러수정
안녕하세요.
아래의 시스템으로 선물 신호를 받아 해외 선물 옵션을 거래하려하는데, 에러가 발생합니다.
에러를 수정해주시면 감사하겠습니다.
===============================================================================
/*스크립트시작-----------------------------------------------------*/
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
3228
글번호 224930