예를 들어
1. 기존에 선물 롱포지션 10계약이 있는 상태
2. 차트 연계로 장중 매도 포지션 5계약 진입
3. 장중 매도 포지션 종가 단일가 청산.
이렇게 하려고 하면 매도 진입을 했을때 잔고는 여전히 롱포지션 5계약으로 되기때문에
메뉴얼에 당일청산 수식이 작동하지 않는 상황이 되어서
이런 상황을 감안하여 연계된 차트에 진입 수량만큼만 종가 단일가에 청산시키는 수식을 만들어주시면 감사히 쓰겠습니다.
답변 1
예스스탁
예스스탁 답변
2021-10-15 11:38:06
안녕하세요
예스스탁입니다.
차트객체의 Chart1.GetOpenContracts()함수 이용하시면 됩니다.
Chart1.GetOpenContracts()가 차트 현재봉(마지막봉)의 포지션 수량을 리턴합니다.
0보다 크면 매수수량이고 0보다 작으면 매도수량이고 무포지션이면 0입니다.
15시40분에 차트의 마지막포지션이 매도포지션이면 청산하게 작성해 드립니다.
var : MK;
function Main_OnStart()
{
Main.MessageList(HHMMSS,"Start");
Main.SetTimer(1, 5000);//5초 타이머
//차트종목 종목객체 요청
Main.ReqMarketData(Main.GetOrderCode(Chart1.GetCode(1)));
}
function Main_OnRcvMarketData(MarketData)
{
if (MarketData.code == Main.GetOrderCode(Chart1.GetCode(1)))
{
MK = MarketData;
}
}
function Main_OnTimer(nEventID)
{
var d = new Date();
var YYYYMMDD = d.getFullYear()*10000+(d.getMonth()+1)*100+d.getDate();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
Main.MessageList(HHMMSS,"nEventID ",nEventID);
//15시40분 이후가 되면
if (nEventID == 1 and HHMMSS >= 154000)
{
//타이머종료
Main.KillTimer(1);
//차트 미청산포지션 수량 가져와 - 이면
if (Chart1.GetOpenContracts() < 0)
{
//해당수량만큼 매수주문
Account1.OrderBuy(Main.GetOrderCode(Chart1.GetCode(1)), Math.abs(Chart1.GetOpenContracts()),MarketData1.current,0);
}
}
}
즐거운 하루되세요
> 시고르시고르 님이 쓴 글입니다.
> 제목 : 문의드립니다
> 예를 들어
1. 기존에 선물 롱포지션 10계약이 있는 상태
2. 차트 연계로 장중 매도 포지션 5계약 진입
3. 장중 매도 포지션 종가 단일가 청산.
이렇게 하려고 하면 매도 진입을 했을때 잔고는 여전히 롱포지션 5계약으로 되기때문에
메뉴얼에 당일청산 수식이 작동하지 않는 상황이 되어서
이런 상황을 감안하여 연계된 차트에 진입 수량만큼만 종가 단일가에 청산시키는 수식을 만들어주시면 감사히 쓰겠습니다.