예스스탁
예스스탁 답변
2022-03-07 09:41:14
안녕하세요
예스스탁입니다.
기본차트(data1)로도 만드실수 있습니다.
ChartEx1.GetClose로 값 가져와 사용하시면 됩니다.
var Start;
var B1CallCode;
var B1PutCode;
var S1CallCode;
var S1PutCode;
function Main_OnStart()
{
Main.MessageLog("시작");
Start = 0;
}
function C1_OnRiseSignal(Signal)
{
Main.MessageLog("신호완성/"+Signal.signalKind);
var n;
if (ChartEx1.GetClose(1, 0) > 0) n = Math.ceil(c2*7/2.5);
if (ChartEx1.GetClose(1, 0) > 1) n = Math.ceil(c2*5/2.5);
if (ChartEx1.GetClose(1, 0) > 2) n = Math.ceil(c2*4/2.5);
if (ChartEx1.GetClose(1, 0) > 3) n = Math.ceil(c2*3/2.5);
if (ChartEx1.GetClose(1, 0) > 7) n = Math.ceil(c2*2.5/2.5);
if (Signal.signalKind == 1 )
{
Start = 1;
B1CallCode = Option.GetATMCallRecent(n);
var B1CallPrice = Option.GetAskByCode(B1CallCode,2);
A1.OrderBuy(B1CallCode, Vol1, B1CallPrice, 0);
Main.MessageLog("콜매수");
}
if (Start == 1 && Signal.signalKind == 2 )
{
var B1xCallPrice = Option.GetBidByCode(B1CallCode, 2);
A1.OrderSell(B1CallCode, Vol1, B1xCallPrice, 0);
Main.MessageLog("콜매수청산");
}
if (Signal.signalKind == 3 )
{
Start = 1;
S1PutCode = Option.GetATMPutRecent(n);
var S1PutPrice = Option.GetAskByCode(S1PutCode,2);
A1.OrderBuy(S1PutCode, Vol1, S1PutPrice, 0);
Main.MessageLog("풋매수");
}
if (Start == 1 && Signal.signalKind == 4 )
{
var S1xPutPrice = Option.GetBidByCode(S1PutCode, 2);
A1.OrderSell(S1PutCode, Vol1, S1xPutPrice, 0);
Main.MessageLog("합성선물매도청산");
}
}
즐거운 하루되세요
> 캣피쉬 님이 쓴 글입니다.
> 제목 : 수식 질문드립니다.
> 수식 합치는거좀 부 탁드립니다.
Option.GetATMCallRecent(n)
Option.GetATMPutRecent(n)
요걸 수정하기 위함입니다.
1. 홈페이지 스팟 메뉴얼에 있는식입니다.
var Start;
var B1CallCode;
var B1PutCode;
var S1CallCode;
var S1PutCode;
function Main_OnStart()
{
Main.MessageLog("시작");
Start = 0;
}
function C1_OnRiseSignal(Signal)
{
Main.MessageLog("신호완성/"+Signal.signalKind);
if (Signal.signalKind == 1 )
{
Start = 1;
B1CallCode = Option.GetATMCallRecent(n);
var B1CallPrice = Option.GetAskByCode(B1CallCode,2);
A1.OrderBuy(B1CallCode, Vol1, B1CallPrice, 0);
Main.MessageLog("콜매수");
}
if (Start == 1 && Signal.signalKind == 2 )
{
var B1xCallPrice = Option.GetBidByCode(B1CallCode, 2);
A1.OrderSell(B1CallCode, Vol1, B1xCallPrice, 0);
Main.MessageLog("콜매수청산");
}
if (Signal.signalKind == 3 )
{
Start = 1;
S1PutCode = Option.GetATMPutRecent(n);
var S1PutPrice = Option.GetAskByCode(S1PutCode,2);
A1.OrderBuy(S1PutCode, Vol1, S1PutPrice, 0);
Main.MessageLog("풋매수");
}
if (Start == 1 && Signal.signalKind == 4 )
{
var S1xPutPrice = Option.GetBidByCode(S1PutCode, 2);
A1.OrderSell(S1PutCode, Vol1, S1xPutPrice, 0);
Main.MessageLog("합성선물매도청산");
}
}
2.1번의 식에다가 아래 easy language 식을 넣고 싶습니다.
var : c2(0,Data2);
var : n(0);
c2 = Data2(c);
if c2>0 Then n=ceiling(c2*7/2.5);
if c2>1 Then n=ceiling(c2*5/2.5);
if c2>2 Then n=ceiling(c2*4/2.5);
if c2>3 Then n=ceiling(c2*3/2.5);
if c2>7 Then n=ceiling(c2*2.5/2.5);
#Plot1(n);
3. 여기서 문제가 메뉴얼에는 data2 부터 쓰라고 나와있는데
사진처럼 data1 써도 상관없는거죠? data1에서 datamanager 불러지던데요.
"888"은 data manager의 data 입니다.
감사합니다.