예스스탁
예스스탁 답변
2013-04-18 21:50:31
안녕하세요
예스스탁입니다.
주문함수가 반대로 되어 있습니다.
아래는 수정한 식입니다.
var BStart;
var SStart;
var BuyCallCode;
var BuyPutCode;
var SellCallCode;
var SellPutCode;
function Main_OnStart()
{
Main.MessageLog("시작");
BStart = 0;
SStart = 0;
}
function C1_OnRiseSignal(Signal)
{
Kind = Signal.signalKind;
Main.MessageLog("신호완성/"+Kind);
//선물차트에서 매수신호발생하면 콜 매수
if (Signal.signalKind ==1)
{
BStart = 1;
BuyCallCode = Option.GetATMCallRecent(0);//ATM콜 종목코드
var BuyCallPrice = Option.GetBidByCode(BuyCallCode, 2);//ATM콜 매수2호가
A1.OrderBuy(BuyCallCode, vol, BuyCallPrice, 0);
Main.MessageLog("등가콜매수 : "+BuyCallCode);
}
//선물차트에서 매도신호발생하면 풋 매수
if (Signal.signalKind ==3)
{
SStart =1;
BuyPutCode = Option.GetATMPutRecent(0);//ATM풋 종목코드
var BuyPutPrice = Option.GetBidByCode(BuyPutCode, 2);//ATM풋 매수 2호가
A1.OrderBuy(BuyPutCode, vol, BuyPutPrice, 0);
Main.MessageLog("등가풋매수 : "+BuyPutCode);
}
if (BStart == 1 && Signal.signalKind == 2)//선물차트 매수 청산신호발생하면 콜 매수 청산
{
var BxCallPrice = Option.GetBidByCode(BuyCallCode, 2);
A1.OrderSell(BuyCallCode, vol, BxCallPrice, 0);
Main.MessageLog("등가콜청산 : "+BuyCallCode);
}
if (SStart == 1 && Signal.signalKind == 4)//선물차트 매도 청산신호발생하면 풋 매수 청산
{
var BxPutPrice = Option.GetBidByCode(BuyPutCode, 2);
A1.OrderSell(BuyPutCode, vol, BxPutPrice, 0);
Main.MessageLog("등가풋청산 : "+BuyPutCode);
}
}
위식은 차트에서 매수(buy)신호 발생하면 콜을 매수하고
매도(Sell)신호 발생하면 풋을 매수하는데
각 주문가격이 매수2호가로 되어 있습니다.
각 매수주문시에 매도2호가로 주문하고자 하시면
var BuyCallPrice = Option.GetBidByCode(BuyCallCode, 2);//ATM콜 매수2호가
를
var BuyCallPrice = Option.GetAskByCode(BuyCallCode, 2);//ATM콜 매도2호가
로 변경하시면 되며
var BuyPutPrice = Option.GetBidByCode(BuyPutCode, 2);//ATM풋 매수 2호가
는
var BuyPutPrice = Option.GetAskByCode(BuyPutCode, 2);//ATM풋 매도 2호가
로 변경하시면 됩니다.
즐거운 하루되세요
> 몬자 님이 쓴 글입니다.
> 제목 : 수식문의드립니다.
> 선물 신호로 스팟 옵션주문을 사용합니다.
여기서 제공하는 예제파일로 스팟주문을 사용하는데 반대신호가 나옵니다.
선물 매도신호 - > 풋옵션 매수 (이렇게 나와야 합니다)
그러나
선물 매도신호 - > 풋옵션 매도 (오늘 발생한 주문) 으로 인해 제법 손실을 봤습니다.
초보적인 실력이라 무엇이 잘못된 것인지 모르겠습니다. 부탁드립니다.
// 아래는 스팟로직 입니다.
var BStart;
var SStart;
var BuyCallCode;
var BuyPutCode;
var SellCallCode;
var SellPutCode;
function Main_OnStart()
{
Main.MessageLog("시작");
BStart = 0;
SStart = 0;
}
function C1_OnRiseSignal(Signal)
{
Kind = Signal.signalKind;
Main.MessageLog("신호완성/"+Kind);
if (Signal.signalKind ==1)//선물차트에서 매수신호발생하면 콜 매수
{
BStart = 1;
BuyCallCode = Option.GetATMCallRecent(0);
var BuyCallPrice = Option.GetBidByCode(BuyCallCode, 2);
A1.OrderBuy(BuyCallCode, vol, BuyCallPrice, 0);
Main.MessageLog("등가콜매수 : "+BuyCallCode);
}
if (Signal.signalKind ==3)//선물차트에서 매도신호발생하면 풋 매수
{
SStart =1;
BuyPutCode = Option.GetATMPutRecent(0);
var BuyPutPrice = Option.GetBidByCode(BuyPutCode, 2);
A1.OrderSell(BuyPutCode, vol, BuyPutPrice, 0);
Main.MessageLog("등가풋매수 : "+BuyPutCode);
}
if (BStart == 1 && Signal.signalKind == 2)//선물차트 매수 청산신호발생하면 콜 매수 청산
{
var BxCallPrice = Option.GetBidByCode(BuyCallCode, 2);
A1.OrderSell(BuyCallCode, vol, BxCallPrice, 0);
Main.MessageLog("등가콜청산 : "+BuyCallCode);
}
if (SStart == 1 && Signal.signalKind == 4)//선물차트 매도 청산신호발생하면 풋 매수 청산
{
var BxPutPrice = Option.GetBidByCode(BuyPutCode, 2);
A1.OrderSell(BuyPutCode, vol, BxPutPrice, 0);
Main.MessageLog("등가풋청산 : "+BuyPutCode);
}
}