커뮤니티

스팟 수식 부탁드립니다

프로필 이미지
빌딩오너
2016-04-21 16:22:47
2161
글번호 223888
답변완료
안녕하세요. 현재 시스템트레이딩에서 고점/저점 돌파시 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 입니다. 감사합니다.