선물 마감 동시호가시간에 시장가 청산주문을 넣고 싶습니다.
계좌는 5개정도 주문을 동시에 넣어야하는데, 어떻게 수식을 작성하는지 궁금합니다.
가능할까요??ㅜㅜ
답변 1
예스스탁
예스스탁 답변
2023-09-15 15:08:03.0
안녕하세요
예스스탁입니다.
아래 내용 참고하시기 바랍니다.
스크립트 객체화면에서 계좌객체를 추가하신 후에 객체명은 Account1로 지정하고 주문낼 계좌를 지정하시면 됩니다.
계좌가 여러개이면 동일식을 여러개 만들고 계좌번호만 달리 지정해서 적용하시면 됩니다.
var List = [],Pst = [],Vol = [];
var req;
function Main_OnStart()
{
Main.MessageList("Start");
Main.SetTimer(1, 1000);//10초 타이머
}
//타이머 동작
function Main_OnTimer(nEventID)
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
//15시40분이 되면
if (nEventID == 1 && HHMMSS >= 145800)
{
//타이머 종류
Main.KillTimer(1);
//계좌 보유종목수
var num = Account1.GetTheNumberOfBalances();
Main.MessageList("보유종목수:",num);
//1개 이상이면
if (num > 0)
{
//전종목 청산
for (var i = 0; i < num; i++)
{
//잔고셋팅
Account1.SetBalance(i);
//수량이 있고
if (Account1.Balance.count > 0 )
{
List.push(Account1.Balance.code);
Pst.push(Account1.Balance.position);
Vol.push(Account1.Balance.count);
}
}
if (List.length > 0)
{
req = 0;
Main.MessageList("보유종목수:",List.length );
Main.ReqMarketData(List[req]);
Main.MessageList("Req 종목객체:",List[req]);
}
}
}
if (nEventID == 2)
{
Main.KillTimer(2);
//재요청
Main.ReqMarketData(List[req]);
Main.MessageList("재요청");
}
}
function Main_OnRcvMarketData(MarketData)
{
Main.MessageList("Rcv 종목객체:",MarketData.code);
if (MarketData.code == List[req])
{
//매도포지션이면
if (Pst[req] == 1)
{
//청산(매수주문)
Account1.OrderBuy(List[req], Vol[req], MarketData.Ask(1), 0);
}
//매도포지션이면
if (Pst[req] == 2)
{
//청산(매도주문)
Account1.OrderSell(List[req], Vol[req], MarketData.Bid(1), 0);
}
req = req+1;
Main.MessageList("req ",req,List.length );
if (req < List.length)
{
//다음 종목 종목객체 요청
var X = Main.ReqMarketData(List[req]);
Main.MessageList("Req 종목객체:",List[req]);
//종목객체 생성제한
if (X == -1)
{
Main.MessageList("종목객체 생성제한");
//2번 타이머 15초
Main.SetTimer(2,15000);
}
}
else
{
Main.MessageList("청산끝");
}
}
}
즐거운 하루되세요
> 허브가든 님이 쓴 글입니다.
> 제목 : 수고하십니다. 문의드립니다.
> 선물 마감 동시호가시간에 시장가 청산주문을 넣고 싶습니다.
계좌는 5개정도 주문을 동시에 넣어야하는데, 어떻게 수식을 작성하는지 궁금합니다.
가능할까요??ㅜㅜ