안녕하세요.
현재 시스템트레이딩에서 고점/저점 돌파시 atstop으로 진입/청산을 하고 있는데, 진입가 체결이 안되고 그 이상으로 진행이 된 상태에서 stoptrailing으로 청산 조건이 만족되는 경우 청산이 먼저되어 반대 포지션으로 되는 경우가 자주 발생합니다.
그래서 atstop 진입가에 체결이 안된 상태에서 청산신호가 발생하면 진입주문 취소하고 청산신호도 무시하는 예스스팟 수식 좀 부탁드립니다.
종목은 해외선물 유로FX 입니다.
감사합니다.
답변 1
예스스탁
예스스탁 답변
2016-05-18 21:08:58
안녕하세요
예스스탁입니다.
아래 내용 참고하셔서 수정보완해 사용하시기 바랍니다.
진입청산주문을 모두 스팟에서 내게 하셔야 합니다.
차트에 시스템은 시험적용으로 적용하고
신호가 발생하면 스팟에서 주문을 내고 추적해야 합니다.
차트객체추가 --> 속성에서 객체명은 Chart1, 아이디 부여해 차트와 연결
종목객체추가 --> 속성에서 객체명은 MarketData1, 차트와 동일종목으로 지정
계좌객체추가 --> 속성에서 객체명은 Account1, 계좌번호 지정
var BID,Bnum;
var SID,Snum;
function Main_OnStart()
{
Main.MessageLog("시작");
T = 0;
}
function Chart1_OnRiseSignal(Signal)
{
//매수신호 발생하면 신호수량으로 현재가 매수주문
if (Signal.signalKind == 1)
{
T = 1;
//주문후 주문아이디 저장
BuyID = Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), Signal.count,MarketData1.current, 2);
}
if (T == 1 && Signal.signalKind == 2)
{
T = 0;
//주문번호로 미체결객체 셋팅
Account1.SetUnfillOrderNumber(Bnum);
//미체결 잔량이 있으면
if (Account1.Unfill.count > 0 && Account1.Unfill.code == Main.GetOrderCode(MarketData1.code))
{
//취소
Account1.OrderCancel(Bnum);
}
//잔고셋팅
Account1.SetBalanceItem(Main.GetOrderCode(MarketData1.code), 0);
//매수수량이 있으면 매도로 청산
if (Account1.Balance.count > 0 && Account1.Balance.position == 2)
{
Account1.OrderSell(Main.GetOrderCode(MarketData1.code), Account1.Balance.count, MarketData1.Bid(3), 2)
}
}
//매도신호 발생하면 신호수량으로 현재가 매도주문
if (Signal.signalKind == 3)
{
T = -1;
//주문후 주문아이디 저장
SID = Account1.OrderSell(Main.GetOrderCode(MarketData1.code), Signal.count,MarketData1.current, 2);
}
if (T == -1 && Signal.signalKind == 4)
{
T = 0;
//Snum에 저장된 주문번호로 미체결객체 셋팅
Account1.SetUnfillOrderNumber(Snum);
//미체결 잔량이 있으면
if (Account1.Unfill.count > 0 && Account1.Unfill.code == Main.GetOrderCode(MarketData1.code))
{
//취소
Account1.OrderCancel(Snum);
}
//잔고셋팅
Account1.SetBalanceItem(Main.GetOrderCode(MarketData1.code), 0);
//매도수량이 있으면 매수로 청산
if (Account1.Balance.count > 0 && Account1.Balance.position == 1)
{
Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), Account1.Balance.count, MarketData1.Ask(3), 2)
}
}
}
//주문응답수신
function Main_OnOrderResponse(OrderResponse)
{
//BID와 아이디가 같은 주문응답이면
if (OrderResponse.orderID == BID)
{
//매수주문번호를 Bnum에 저장
Bnum = OrderResponse.orderNum;
}
//SID와 아이디가 같은 주문응답이면
if (OrderResponse.orderID == SID)
{
//매도주문번호를 Snum에 저장
Snum = OrderResponse.orderNum;
}
}
즐거운 하루되세요
> 빌딩오너 님이 쓴 글입니다.
> 제목 : 스팟 수식 부탁드립니다
> 안녕하세요.
현재 시스템트레이딩에서 고점/저점 돌파시 atstop으로 진입/청산을 하고 있는데, 진입가 체결이 안되고 그 이상으로 진행이 된 상태에서 stoptrailing으로 청산 조건이 만족되는 경우 청산이 먼저되어 반대 포지션으로 되는 경우가 자주 발생합니다.
그래서 atstop 진입가에 체결이 안된 상태에서 청산신호가 발생하면 진입주문 취소하고 청산신호도 무시하는 예스스팟 수식 좀 부탁드립니다.
종목은 해외선물 유로FX 입니다.
감사합니다.