커뮤니티
14시 0.12체결(저점 0.09 이상) , 개장후 0.12체결(시가 0.12 이상)
2025-12-05 09:36:13
161
글번호 228693
문의 1)
데이트레이딩이며, 옵션 매수거래 용도입니다.
140000 이후부터
행사가 중 옵션가격 0.12 체결이 발생하면 그 행사가의 당일 저점을 확인합니다.
당일저점이 0.09 이상이였을 경우에만 매수주문 합니다( 그 행사가의 당일 저점이 0.08 이하면 주문실행하지 않습니다).
- 거래횟수 : 1회
- buy 주문 : 지정가 0.12 // 상대매도+5호가도 수식 요청드립니다.
- 수량 : 5개
- 익절 : 1.99
- 손절 : 0.08
- end of day : 151800
문의 2)
데이트레이딩이며, 옵션 매수거래 용도입니다.
084500 이후부터
행사가 중 옵션가격 0.12 체결이 발생하면
그 행사가의 시가를 확인합니다.
당일시가가 0.12 이상이였을 경우에만 매수주문 합니다( 그 행사가의 당일 시가가 0.11 이하면 주문실행하지 않습니다).
- 거래횟수 : 1회
- buy 주문 : 지정가 0.12 // 상대매도+5호가도 수식 요청드립니다.
- 수량 : 5개
- 익절 : 1.00
- 손절 : 0.02
- end of day : 151800
답변 1
예스스탁 예스스탁 답변
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);
}
}
}
즐거운 하루되세요