커뮤니티
수식 요청 드립니다.
2026-06-13 15:17:46
38
글번호 232410
미니 연결선물 오버 시스템에서
매월 미니선물 만기일 15시 15분에 기존 포지션 있는경우 청산하고,
청산 후 동일 방향으로 (매수 청산시 매수 / 매도 청산시 매도),
진입은 차월물 현재가로 누락없이 진입 하는 수식 요청 드립니다.
기존 에스랭귀지 수식으로 부탁 드립니다.
안될경우 기존 미니선물 예스스팟 수식에 추가하는 수식으로 요청 드립니다.
답변 1
예스스탁 예스스탁 답변
2026-06-15 13:47:51
안녕하세요
예스스탁입니다.
1
차트는 만기일 15시15분에 차월물에 대해 주문을 낼수 없습니다.
2
스팟으로 구현하셔야 하는데 기준 스팟수식이 어떤 구조인지 모르겠습니다.
아래식 참고하셔서 기존수식에 반영하시기 바랍니다.
아래식은 매월 만기일 15시15분에
MarketData1종목이 있으면 청산하고
MarketData2종목을 매수진입이나 매도진입을 하게 됩니다.
만기는 옵션데이터에서 제공하는 잔존일을 이용해서 체크합니다.
자동으로 차월물 코드를 알수 없습니다.
MarketData1은 연결데이터로 지정해 주시고
MarketData2종목은 차월물을 지정하셔야 하고 매월 변경해 주셔야 합니다.
스크립트객체화면 설정
계좌객체추가 -> 속성에서 객체명은 Account1, 주문계좌번호 지정
종목객체추가 -> 속성에서 객체명은 MarketData1, 연결선물 데이터 지정
종목객체추가 -> 속성에서 객체명은 MarketData2, 차월물 데이터 지정
옵션객체추가 -> 속성에서 객체명은 Option1, KP200옵션으로 지정
function Main_OnStart()
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
//만기일이고 15시15분 이전일때만 타이머 셋팅
if (Option1.GetRemainDays(0, 0) == 1 && HHMMSS < 151500)
{
Main.SetTimer(1,5000);//5초 타이머
Main.MessageList("15시15분 이전 -> 타이머 셋팅")
}
else
{
Main.MessageList("마기일이 아니거나 15시15분 이후 -> 타이머 셋팅 안함")
}
}
function Main_OnTimer(nEventID)
{
if (nEventID == 1)
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
//15시15분이 되면
if (HHMMSS >= 151500)
{
//타이머 종료
Main.KillTimer(nEventID);
//MarketData1종목 잔고셋팅
Account1.SetBalance(Main.GetOrderCode(MarketData1.code), 0);
//매도포지션 보유
if (Account1.Balance.count > 0 && Account1.Balance.position == 1)
{
//MarketData1종목 매도5호가로 청산주문
Account1.OrderBuy(Account1.Balance.code,Account1.Balance.count, MarketData1.Ask(5),0);
//MarketData2종목 매수5호가로 매도주문
Account1.OrderSell(Account1.Balance.code,Account1.Balance.count, MarketData1.Bid(5),0);
//시장가로 주문을 내실경우 아래 내용 사용하시면 됩니다.
//MarketData1종목 시장가로 청산주문
//Account1.OrderBuy(Account1.Balance.code,Account1.Balance.count, 0,1);
//MarketData2종목 시장가로 매도주문
//Account1.OrderSell(Account1.Balance.code,Account1.Balance.count, 0,1);
}
//매수포지션 보유
if (Account1.Balance.count > 0 && Account1.Balance.position == 2)
{
//MarketData1종목 매수5호가로 청산주문
Account1.OrderSell(Account1.Balance.code,Account1.Balance.count, MarketData1.Bid(5),0);
//MarketData2종목 매도5호가로 매수주문
Account1.OrderBuy(Account1.Balance.code,Account1.Balance.count, MarketData1.Ask(5),0);
//시장가로 주문을 내실경우 아래 내용 사용하시면 됩니다.
//MarketData1종목 시장가로 청산주문
//Account1.OrderSell(Account1.Balance.code,Account1.Balance.count, 0,1);
//MarketData2종목 시장가로 매수주문
//Account1.OrderBuy(Account1.Balance.code,Account1.Balance.count,0,1);
}
}
}
}
즐거운 하루되세요
다음글
이전글