예스스탁
예스스탁 답변
2025-12-18 15:27:12
안녕하세요
예스스탁입니다.
1
var 시작시간 = 140000;
var 현재가 = 0.12;
var 당일저가 = 0.09;
var 수량 = 5;
var 익절 = 1.99;
var 손절 = 0.08;
var 당일청산 = 151800;
var B = 0,OC,BID,BNUM;
function Main_OnStart()
{
var d = new Date();
HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
Main.SetTimer(1, 1000);
B = 0;
Main.MessageList("Start:",B);
}
function Main_OnTimer(nEventID)
{
var d = new Date();
HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
//14시~당일청산 사이
if (HHMMSS >= 시작시간 && HHMMSS < 당일청산 && B == 0)
{
//전체 콜종목 대상
for(var i = -Option1.lowersATM; i <= Option1.uppersATM; i++)
{
//현재가 0.12이고 당일저가 0.09이상 발생
if (Option1.GetCurrent(0,i) == 현재가 && Option1.GetLow(0,i) >= 당일저가)
{
//종목코드
OC = Option1.GetATMCallRecent(i);
//0.12로 5계약 매수주문
BID = Account1.OrderBuy(OC,수량, 현재가,0);
//BID = Account1.OrderBuy(OC,수량, Option1.GetAsk(OC, 5),0);
//B는 1로 변경
B = 1;
Main.MessageList(HHMMSS,"매수:",OC);
//for문 빠져나감
break;
}
}
}
//진입주문 정상접수 이후
if (B == 2)
{
//매수종목 현재가
var cur = Option1.GetCurrent(OC);
Main.MessageList(HHMMSS,"청산체크:현재가:",cur);
//익절, 손절, 당일청산조건이 충족하면
if (cur >= 익절 || cur <= 손절 || HHMMSS >= 당일청산)
{
//타이머 종료
Main.KillTimer(1);
Main.MessageList(HHMMSS,"청산조건충족:",OC);
//초기 청산수량은 진입수량
var XV = 수량;
//매수진입주문 미체결 셋팅
Account1.SetUnfill(BNUM);
//미체결 있으면
if (Account1.Unfill.count > 0)
{
//미체결수량 만큼 청산수량 차감
XV = XV-Account1.Unfill.count;
Main.MessageList(HHMMSS,"미체결수량:",Account1.Unfill.count);
//미체결 취소
Account1.OrderCancel(BNUM);
}
Main.MessageList(HHMMSS,"청산수량:",XV);
Account1.OrderSell(OC,XV,cur,0);
}
}
}
//주문응답 수신
function Main_OnOrderResponse(OrderResponse)
{
if (OrderResponse.orderID == BID)
{
//정상접수되었으면
if (OrderResponse.isNormal == true)
{
//B는 2
B = 2;
//주문번호 저장
BNUM = OrderResponse.orderNum;
Main.MessageList(HHMMSS,"매수주문정상접수:",B);
}
else
{
//주문거부등 주문오류이면 B는 -1;
B = -1;
//타이머 중지하고 더이상 진행 안함
Main.KillTimer(1);
Main.MessageList(HHMMSS,"매수주문 주문오류:",B);
}
}
}
2
var 시작시간 = 84500;
var 현재가 = 0.13;
var 수량 = 5;
var 익절 = 1.00;
var 손절 = 0.02;
var 당일청산 = 151800;
var B = 0,OC,BID,BNUM;
function Main_OnStart()
{
var d = new Date();
HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
Main.SetTimer(1, 1000);
B = 0;
Main.MessageList("Start:",B);
}
function Main_OnTimer(nEventID)
{
var d = new Date();
HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
//14시~당일청산 사이
if (HHMMSS >= 시작시간 && HHMMSS < 당일청산 && B == 0)
{
//전체 콜종목 대상
for(var i = -Option1.lowersATM; i <= Option1.uppersATM; i++)
{
//현재가 0.12이고 당일저가 0.09이상 발생
if (Option1.GetCurrent(0,i) == 현재가 && Option1.GetOpen(0,i) >= 현재가)
{
//종목코드
OC = Option1.GetATMCallRecent(i);
//0.12로 5계약 매수주문
BID = Account1.OrderBuy(OC,수량, 현재가,0);
//BID = Account1.OrderBuy(OC,수량, Option1.GetAsk(OC, 5),0);
//B는 1로 변경
B = 1;
Main.MessageList(HHMMSS,"매수:",OC);
//for문 빠져나감
break;
}
}
}
//진입주문 정상접수 이후
if (B == 2)
{
//매수종목 현재가
var cur = Option1.GetCurrent(OC);
Main.MessageList(HHMMSS,"청산체크:현재가:",cur);
//익절, 손절, 당일청산조건이 충족하면
if (cur >= 익절 || cur <= 손절 || HHMMSS >= 당일청산)
{
//타이머 종료
Main.KillTimer(1);
Main.MessageList(HHMMSS,"청산조건충족:",OC);
//초기 청산수량은 진입수량
var XV = 수량;
//매수진입주문 미체결 셋팅
Account1.SetUnfill(BNUM);
//미체결 있으면
if (Account1.Unfill.count > 0)
{
//미체결수량 만큼 청산수량 차감
XV = XV-Account1.Unfill.count;
Main.MessageList(HHMMSS,"미체결수량:",Account1.Unfill.count);
//미체결 취소
Account1.OrderCancel(BNUM);
}
Main.MessageList(HHMMSS,"청산수량:",XV);
Account1.OrderSell(OC,XV,cur,0);
}
}
}
//주문응답 수신
function Main_OnOrderResponse(OrderResponse)
{
if (OrderResponse.orderID == BID)
{
//정상접수되었으면
if (OrderResponse.isNormal == true)
{
//B는 2
B = 2;
//주문번호 저장
BNUM = OrderResponse.orderNum;
Main.MessageList(HHMMSS,"매수주문정상접수:",B);
}
else
{
//주문거부등 주문오류이면 B는 -1;
B = -1;
//타이머 중지하고 더이상 진행 안함
Main.KillTimer(1);
Main.MessageList(HHMMSS,"매수주문 주문오류:",B);
}
}
}
즐거운 하루되세요