예스스탁
예스스탁 답변
2024-12-12 09:10:53.0
안녕하세요
예스스탁입니다.
var ID1,ID2,num1,num2;
var Entry,CallCode,PutCode;
var Xv1,Xv2;
function Main_OnStart()
{
Main.MessageList("Start");
Entry = 0;
}
//차트에서 신호발생
function Chart1_OnRiseSignal(Signal)
{
//sell신호이면
if (Signal.signalKind == 3)
{
//타이머 동작
Main.SetTimer(1, 5000);
}
}
function Main_OnTimer(nEventID)
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
if (HHMMSS >= 84500)
{
var sum = Option1.GetCurrent(0,0)+Option1.GetCurrent(1, 0);
var diff = Math.abs(Option1.GetCurrent(0,0)-Option1.GetCurrent(1, 0));
if (Entry == 0 && sum <= 20 && diff <= 0.10)
{
Entry = sum;
CallCode = Option1.GetATMCallRecent(0);
PutCode = Option1.GetATMPutRecent(0);
ID1 = Account1.OrderBuy(CallCode, 1, Option1.GetAsk(CallCode, 5), 0);
ID2 = Account1.OrderBuy(PutCode, 1, Option1.GetAsk(PutCode, 5), 0);
Xv1 = 1;
Xv2 = 1;
}
if (Entry > 0 && HHMMSS < 151500 &&
(Option1.GetCurrent(CallCode)+Option1.GetCurrent(PutCode) >= Entry+1) ||
(Option1.GetCurrent(CallCode)+Option1.GetCurrent(PutCode) <= Entry-1))
{
if (Xv1 > 0)
{
Account1.SetUnfill(num1);
if (Account1.Unfill.count > 0)
{
Xv1 = Xv1-Account1.Unfill.count;
Account1.OrderCancel(num1);
}
}
if (Xv2 > 0)
{
Account1.SetUnfill(num2);
if (Account1.Unfill.count > 0)
{
Xv2 = Xv2-Account1.Unfill.count;
Account1.OrderCancel(num2);
}
}
if (Xv1 > 0)
{
Account1.OrderSell(CallCode, Xv1, Option1.GetBid(CallCode, 5), 0);
}
if (Xv2 > 0)
{
Account1.OrderSell(PutCode, Xv2, Option1.GetBid(PutCode, 5), 0);
}
//Entry = 0;
Main.KillTimer(1);
}
//15시15분이면
if (Entry > 0 && HHMMSS >= 85500)
{
Main.MessageList("청산")
if (Xv1 > 0)
{
Account1.SetUnfill(num1);
if (Account1.Unfill.count > 0)
{
Xv1 = Xv1-Account1.Unfill.count;
Account1.OrderCancel(num1);
}
}
if (Xv2 > 0)
{
Account1.SetUnfill(num2);
if (Account1.Unfill.count > 0)
{
Xv2 = Xv2-Account1.Unfill.count;
Account1.OrderCancel(num2);
}
}
if (Xv1 > 0)
{
Account1.OrderSell(CallCode, Xv1, Option1.GetBid(CallCode, 5), 0);
}
if (Xv2 > 0)
{
Account1.OrderSell(PutCode, Xv2, Option1.GetBid(PutCode, 5), 0);
}
//Entry = 0;
Main.KillTimer(1);
}
}
}
function Main_OnOrderResponse(OrderResponse)
{
if (OrderResponse.orderID == ID1)
{
num1 = OrderResponse.orderNum;
}
if (OrderResponse.orderID == ID2)
{
num2 = OrderResponse.orderNum;
}
}
즐거운 하루되세요
> 좌오비우오비 님이 쓴 글입니다.
> 제목 : 문의
> 요청내용은 2가지 입니다.
1. 아래 수식은 "084500 부터" 시세감시와 계산을 통해 진입합니다.
이 수식을 "차트에서 sell 신호가 나오면" 그때부터 시세감시와 계산을 하는 수식으로 변경하고 싶습니다.
084500 작동 내용은 삭제하여 주십시요.
2. 오후 3시 15분에 손절 또는 익절이 안된 상태로 미결제 콜풋 한쌍이 남아있을 때 청산하는 수식 추가해 주십시요.
항상 고맙습니다.
*********************************************************************************
var ID1,ID2,num1,num2;
var Entry,CallCode,PutCode;
var Xvol1,Xvol2;
function Main_OnStart()
{
Main.MessageList("Start");
Main.SetTimer(1, 5000);
Entry = 0;
}
function Main_OnTimer(nEventID)
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
if (HHMMSS >= 84500)
{
var sum = Option1.GetCurrent(0,0)+Option1.GetCurrent(1, 0);
var diff = Math.abs(Option1.GetCurrent(0,0)-Option1.GetCurrent(1, 0));
if (Entry == 0 && sum <= 20 && diff <= 0.10)
{
Entry = sum;
CallCode = Option1.GetATMCallRecent(0);
PutCode = Option1.GetATMPutRecent(0);
ID1 = Account1.OrderBuy(CallCode, 1, Option1.GetAsk(CallCode, 5), 0);
ID2 = Account1.OrderBuy(PutCode, 1, Option1.GetAsk(PutCode, 5), 0);
Xvo11 = 1;
Xvo12 = 1;
}
if (Entry > 0 &&
(Option1.GetCurrent(CallCode)+Option1.GetCurrent(PutCode) >= Entry+1) ||
(Option1.GetCurrent(CallCode)+Option1.GetCurrent(PutCode) <= Entry-1))
{
if (Xvol1 > 0)
{
Account1.SetUnfill(num1);
if (Account1.Unfill.count > 0)
{
Xvol1 = Xvol1-Account1.Unfill.count;
Account1.OrderCancel(num1);
}
}
if (Xvol2 > 0)
{
Account1.SetUnfill(num2);
if (Account1.Unfill.count > 0)
{
Xvol2 = Xvol2-Account1.Unfill.count;
Account1.OrderCancel(num2);
}
}
if (Xvol1 > 0)
{
Account1.OrderSell(CallCode, Xvol1, Option1.GetBid(CallCode, 5), 0);
}
if (Xvol2 > 0)
{
Account1.OrderSell(PutCode, Xvol2, Option1.GetBid(PutCode, 5), 0);
}
//Entry = 0;
Main.KillTimer(1);
}
}
}
function Main_OnOrderResponse(OrderResponse)
{
if (OrderResponse.orderID == ID1)
{
num1 = OrderResponse.orderNum;
}
if (OrderResponse.orderID == ID2)
{
num2 = OrderResponse.orderNum;
}
}
예스스탁
예스스탁 답변
2024-12-12 09:13:58.0
안녕하세요
예스스탁입니다.
var ID1,ID2,num1,num2;
var Entry,CallCode,PutCode;
var Xv1,Xv2;
function Main_OnStart()
{
Main.MessageList("Start");
Entry = 0;
}
//차트에서 신호발생
function Chart1_OnRiseSignal(Signal)
{
//sell신호이면
if (Signal.signalKind == 3)
{
//타이머 동작
Main.SetTimer(1, 5000);
}
//exitshort신호이면
if (Signal.signalKind == 4)
{
if (Entry > 0 && HHMMSS < 151500)
{
if (Xv1 > 0)
{
Account1.SetUnfill(num1);
if (Account1.Unfill.count > 0)
{
Xv1 = Xv1-Account1.Unfill.count;
Account1.OrderCancel(num1);
}
}
if (Xv2 > 0)
{
Account1.SetUnfill(num2);
if (Account1.Unfill.count > 0)
{
Xv2 = Xv2-Account1.Unfill.count;
Account1.OrderCancel(num2);
}
}
if (Xv1 > 0)
{
Account1.OrderSell(CallCode, Xv1, Option1.GetBid(CallCode, 5), 0);
}
if (Xv2 > 0)
{
Account1.OrderSell(PutCode, Xv2, Option1.GetBid(PutCode, 5), 0);
}
//Entry = 0;
Main.KillTimer(1);
}
}
}
function Main_OnTimer(nEventID)
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
if (HHMMSS >= 84500)
{
var sum = Option1.GetCurrent(0,0)+Option1.GetCurrent(1, 0);
var diff = Math.abs(Option1.GetCurrent(0,0)-Option1.GetCurrent(1, 0));
if (Entry == 0 && sum <= 20 && diff <= 0.10)
{
Entry = sum;
CallCode = Option1.GetATMCallRecent(0);
PutCode = Option1.GetATMPutRecent(0);
ID1 = Account1.OrderBuy(CallCode, 1, Option1.GetAsk(CallCode, 5), 0);
ID2 = Account1.OrderBuy(PutCode, 1, Option1.GetAsk(PutCode, 5), 0);
Xv1 = 1;
Xv2 = 1;
}
//15시15분이면
if (Entry > 0 && HHMMSS >= 85500)
{
Main.MessageList("청산")
if (Xv1 > 0)
{
Account1.SetUnfill(num1);
if (Account1.Unfill.count > 0)
{
Xv1 = Xv1-Account1.Unfill.count;
Account1.OrderCancel(num1);
}
}
if (Xv2 > 0)
{
Account1.SetUnfill(num2);
if (Account1.Unfill.count > 0)
{
Xv2 = Xv2-Account1.Unfill.count;
Account1.OrderCancel(num2);
}
}
if (Xv1 > 0)
{
Account1.OrderSell(CallCode, Xv1, Option1.GetBid(CallCode, 5), 0);
}
if (Xv2 > 0)
{
Account1.OrderSell(PutCode, Xv2, Option1.GetBid(PutCode, 5), 0);
}
//Entry = 0;
Main.KillTimer(1);
}
}
}
function Main_OnOrderResponse(OrderResponse)
{
if (OrderResponse.orderID == ID1)
{
num1 = OrderResponse.orderNum;
}
if (OrderResponse.orderID == ID2)
{
num2 = OrderResponse.orderNum;
}
}
즐거운 하루되세요
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 문의
> 안녕하세요
예스스탁입니다.
var ID1,ID2,num1,num2;
var Entry,CallCode,PutCode;
var Xv1,Xv2;
function Main_OnStart()
{
Main.MessageList("Start");
Entry = 0;
}
//차트에서 신호발생
function Chart1_OnRiseSignal(Signal)
{
//sell신호이면
if (Signal.signalKind == 3)
{
//타이머 동작
Main.SetTimer(1, 5000);
}
}
function Main_OnTimer(nEventID)
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
if (HHMMSS >= 84500)
{
var sum = Option1.GetCurrent(0,0)+Option1.GetCurrent(1, 0);
var diff = Math.abs(Option1.GetCurrent(0,0)-Option1.GetCurrent(1, 0));
if (Entry == 0 && sum <= 20 && diff <= 0.10)
{
Entry = sum;
CallCode = Option1.GetATMCallRecent(0);
PutCode = Option1.GetATMPutRecent(0);
ID1 = Account1.OrderBuy(CallCode, 1, Option1.GetAsk(CallCode, 5), 0);
ID2 = Account1.OrderBuy(PutCode, 1, Option1.GetAsk(PutCode, 5), 0);
Xv1 = 1;
Xv2 = 1;
}
if (Entry > 0 && HHMMSS < 151500 &&
(Option1.GetCurrent(CallCode)+Option1.GetCurrent(PutCode) >= Entry+1) ||
(Option1.GetCurrent(CallCode)+Option1.GetCurrent(PutCode) <= Entry-1))
{
if (Xv1 > 0)
{
Account1.SetUnfill(num1);
if (Account1.Unfill.count > 0)
{
Xv1 = Xv1-Account1.Unfill.count;
Account1.OrderCancel(num1);
}
}
if (Xv2 > 0)
{
Account1.SetUnfill(num2);
if (Account1.Unfill.count > 0)
{
Xv2 = Xv2-Account1.Unfill.count;
Account1.OrderCancel(num2);
}
}
if (Xv1 > 0)
{
Account1.OrderSell(CallCode, Xv1, Option1.GetBid(CallCode, 5), 0);
}
if (Xv2 > 0)
{
Account1.OrderSell(PutCode, Xv2, Option1.GetBid(PutCode, 5), 0);
}
//Entry = 0;
Main.KillTimer(1);
}
//15시15분이면
if (Entry > 0 && HHMMSS >= 85500)
{
Main.MessageList("청산")
if (Xv1 > 0)
{
Account1.SetUnfill(num1);
if (Account1.Unfill.count > 0)
{
Xv1 = Xv1-Account1.Unfill.count;
Account1.OrderCancel(num1);
}
}
if (Xv2 > 0)
{
Account1.SetUnfill(num2);
if (Account1.Unfill.count > 0)
{
Xv2 = Xv2-Account1.Unfill.count;
Account1.OrderCancel(num2);
}
}
if (Xv1 > 0)
{
Account1.OrderSell(CallCode, Xv1, Option1.GetBid(CallCode, 5), 0);
}
if (Xv2 > 0)
{
Account1.OrderSell(PutCode, Xv2, Option1.GetBid(PutCode, 5), 0);
}
//Entry = 0;
Main.KillTimer(1);
}
}
}
function Main_OnOrderResponse(OrderResponse)
{
if (OrderResponse.orderID == ID1)
{
num1 = OrderResponse.orderNum;
}
if (OrderResponse.orderID == ID2)
{
num2 = OrderResponse.orderNum;
}
}
즐거운 하루되세요
> 좌오비우오비 님이 쓴 글입니다.
> 제목 : 문의
> 요청내용은 2가지 입니다.
1. 아래 수식은 "084500 부터" 시세감시와 계산을 통해 진입합니다.
이 수식을 "차트에서 sell 신호가 나오면" 그때부터 시세감시와 계산을 하는 수식으로 변경하고 싶습니다.
084500 작동 내용은 삭제하여 주십시요.
2. 오후 3시 15분에 손절 또는 익절이 안된 상태로 미결제 콜풋 한쌍이 남아있을 때 청산하는 수식 추가해 주십시요.
항상 고맙습니다.
*********************************************************************************
var ID1,ID2,num1,num2;
var Entry,CallCode,PutCode;
var Xvol1,Xvol2;
function Main_OnStart()
{
Main.MessageList("Start");
Main.SetTimer(1, 5000);
Entry = 0;
}
function Main_OnTimer(nEventID)
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
if (HHMMSS >= 84500)
{
var sum = Option1.GetCurrent(0,0)+Option1.GetCurrent(1, 0);
var diff = Math.abs(Option1.GetCurrent(0,0)-Option1.GetCurrent(1, 0));
if (Entry == 0 && sum <= 20 && diff <= 0.10)
{
Entry = sum;
CallCode = Option1.GetATMCallRecent(0);
PutCode = Option1.GetATMPutRecent(0);
ID1 = Account1.OrderBuy(CallCode, 1, Option1.GetAsk(CallCode, 5), 0);
ID2 = Account1.OrderBuy(PutCode, 1, Option1.GetAsk(PutCode, 5), 0);
Xvo11 = 1;
Xvo12 = 1;
}
if (Entry > 0 &&
(Option1.GetCurrent(CallCode)+Option1.GetCurrent(PutCode) >= Entry+1) ||
(Option1.GetCurrent(CallCode)+Option1.GetCurrent(PutCode) <= Entry-1))
{
if (Xvol1 > 0)
{
Account1.SetUnfill(num1);
if (Account1.Unfill.count > 0)
{
Xvol1 = Xvol1-Account1.Unfill.count;
Account1.OrderCancel(num1);
}
}
if (Xvol2 > 0)
{
Account1.SetUnfill(num2);
if (Account1.Unfill.count > 0)
{
Xvol2 = Xvol2-Account1.Unfill.count;
Account1.OrderCancel(num2);
}
}
if (Xvol1 > 0)
{
Account1.OrderSell(CallCode, Xvol1, Option1.GetBid(CallCode, 5), 0);
}
if (Xvol2 > 0)
{
Account1.OrderSell(PutCode, Xvol2, Option1.GetBid(PutCode, 5), 0);
}
//Entry = 0;
Main.KillTimer(1);
}
}
}
function Main_OnOrderResponse(OrderResponse)
{
if (OrderResponse.orderID == ID1)
{
num1 = OrderResponse.orderNum;
}
if (OrderResponse.orderID == ID2)
{
num2 = OrderResponse.orderNum;
}
}