답변완료
스팟 오류 내용 확인
주문후 체결되지 못해 포지션만 잡힌 상태에서
청산 주문이 체결되어 반대로 진입하는 현상을 막기위해
예스스팟을 사용하여 현진입수량이 0이면 청산 주문이 취소되는 코드를 작성하였습니다.
참고로 아래 코드는 수식작성 게시판에서 답변받을 내용을 조금 수정한 코드입니다.
그런데 그림처럼 전송오류가 나오면서 주문이 들어가지 않는거 같습니다.
업로드한 그림은 모의투자에서 발동시킨 화면 입니다.
어떤 문제가 있는건지 확인 부탁드립니다.
그리고 스팟에서 주문하게 수식을 만들면
시스템 수식에의한 주문은 실제 실행하지 않나요?
스팟에서 주문은 오류났지만 시스템 주문 신호가 발생했는데 거래내역 조회 화면(4250)에서 확인되는 거래가 0건으로 확인 됩니다.
var BID,SID,BNum,SNum;
var vol = 2; //진입수량 1걔
function Main_OnStart()
{
Main.MessageList("Start")
}
//연결된 차트에서 신호발생
function C1_OnRiseSignal(Signal)
{
//매수진입신호이면
if (Signal.signalKind == 1)
{
//매도3호가로 지정가 주문하고 주문아이디는 BID에 저장
BID = A1.OrderBuy(Main.GetOrderCode(Signal.code),vol,Signal.price,2);
}
if (Signal.signalKind == 2)
{
//매수진입주문의 주문번호로 미체결 셋팅
A1.SetUnfill(BNum);
//미체결 수량이 잇으면
if ( A1.Unfill.count > 0 )
{
//취소
A1.OrderCancel(Bnum);
}
//잔고셋팅
A1.SetBalance(Main.GetOrderCode(Signal.code), 0);
//매수포지션 잔고가 있으면
if (A1.Balance.count > 0 && A1.Balance.position == 2)
{
//매수3호가로 잔고수량만큼 매도주문
A1.OrderSell(Main.GetOrderCode(Signal.code),A1.Balance.count,Signal.price,1)
}
}
//매도진입신호 발생
if (Signal.signalKind == 3)
{
//매수3호가로 지정가 주문하고 주문아이디는 SID에 저장
SID = A1.OrderSell(Main.GetOrderCode(Signal.code),vol,Signal.price,2);
}
//매도청산신호 발생
if (Signal.signalKind == 4)
{
//매도진입주문 미체결객체 셋팅
A1.SetUnfill(SNum);
//미체결수량이 있으면
if ( A1.Unfill.count > 0)
{
//취소
A1.OrderCancel(Snum);
}
//잔고셋팅
A1.SetBalance(Main.GetOrderCode(Signal.code), 0);
//매도포지션 잔고가 있으면
if (A1.Balance.count > 0 && A1.Balance.position == 1)
{
//매도3호가로 잔고수량만큼 매수주문
A1.OrderBuy(Main.GetOrderCode(Signal.code),A1.Balance.count,Signal.price,1)
}
}
}
//주문응답
function Main_OnOrderResponse(OrderResponse)
{
//BID에 저장된값과 동일아이디의 주문응답이면
if (OrderResponse.orderID == BID)
{
//주문번호 BNum에 저장
BNum = OrderResponse.orderNum;
}
//SID에 저장된값과 동일아이디의 주문응답이면
if (OrderResponse.orderID == SID)
{
//주문번호 SNum에 저장
SNum = OrderResponse.orderNum;
}
}
2019-10-01
2653
글번호 214919
예스글로벌 (NH선물)