커뮤니티

예스트레이더를 활용해서

프로필 이미지
기똥찬
2019-01-21 16:08:00
2991
글번호 224704
답변완료
수고가 많으십니다 저는 예스트레이더를 이용하여 시장가주문이 아닌 지정가주문(시스템 매매 설정창에서 종가로 설정)으로 시스템트레이딩을 하려고 합니다. 그런데, 이럴 경우 가장 문제가 미체결이 발생할 경우 그 다음부터 제가 수동으로 개입하지 않으면 원하는 수량의 매매가 안되고 수량이 자꾸 꼬인다는 것입니다. 그래서 이를 해결하고자 예스스팟을 이용하려고 합니다. 그런데, 저는 예스스팟의 수식작성법을 전혀 몰라서 도움을 받고자 합니다. 예스트레이더로 매매수식은 작성완료했습니다. 그리고, 유진투자선물에서 해외선물을 매매할 계획입니다. 한번 매매할 때 마다 9계약씩 매매한다고 가정하겠습니다. 피라미딩은 적용하지 않습니다. 제가 원하는 것은... 예스트레이더의 매매신호에 따라 지정가로 주문이 발생하되, 앞전 매매신호에서 혹시 미체결이 발생하더라도 자동으로 현재 잔고를 확인하여 잔고만큼만 청산하고 새로운 9계약이 진입되도록 하고자 합니다. 그리고, 이렇게 새로운 매매신호가 발생하면 앞선 미체결(부분 미체결 포함)은 자동취소가 되도록 하고 싶습니다. 참고로, 제가 현재 작성한 예스트레이더의 매매수식은 하나의 시스템식안에 매수되는 경우가 몇가지 있고(매수명 : 매수A, 매수B, ... 등), 매도되는 경우에도 몇가지(매도명 : 매도A, 매도B, ... 등)가 있습니다. 제가 수동으로 개입하지 않더라도 예스트레이더 신호를 이용하여 지정가 매매를 할수 있도록 예스스팟 수식을 만들어 주시면 감사하겠습니다.
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2019-02-01 15:10:02

안녕하세요 예스스탁입니다. 스팟의 수식답변은 식작성을 보조하는 가이드입니다. 아래 내용 참고하셔서 수정보완해 사용하시기 바랍니다. 스크립트 객체설정 계좌객체 추가 --> 속성에서 객체명은 Account1, 주무낼 계좌지정 차트객체 추가 --> 속성에서 객체명은 Chart1, 연결할 차트의 아이디지정 종목객체 추가 --> 속성에서 객체명은 MarketData1, 차트와 동일종목으로 지정 var EntryVol = 9; //진입수량 var BEid,BEnum,SEid,SEnum; function Main_OnStart() { Main.MessageList("스팟시작"); } function Chart1_OnRiseSignal(Signal) { //Buy신호 발생하면 9개약 매도1호가로 매수 if (T == 0 && Signal.signalKind == 1) { T = 1; BEid = Account1.OrderBuy(Main.GetOrderCode(MarketData1.code),EntryVol, MarketData1.Ask(1),0); } //Exitlong신호 발생하면 if (T == 1 && Signal.signalKind == 2) { T = 0; //매수진입의 주문번호로 미체결 객체 셋팅 Account1.SetUnfill(BEnum); //미체결이 있으면 취소 if (Account1.Unfill.count > 0) { Account1.OrderCancel(BEnum) } //잔고셋팅 Account1.SetBalance(Main.GetOrderCode(MarketData1.code), 0); //보유한 매수포지션이 있으면 매수1호가로 전량 매도(청산) if (Account1.Balance.count > 0 && Account1.Balance.position == 2) { Account1.OrderSell(Main.GetOrderCode(MarketData1.code),Account1.Balance.count, MarketData1.Bid(1),0); } } //Sell신호 발생하면 9개약 매수1호가로 매도 if (T == 0 && Signal.signalKind == 3) { SEid = Account1.OrderSell(Main.GetOrderCode(MarketData1.code),EntryVol, MarketData1.Bid(1),0); } if (T == 1 && Signal.signalKind == 4) { T = 0; //매수진입의 주문번호로 미체결 객체 셋팅 Account1.SetUnfill(SEnum); //미체결이 있으면 취소 if (Account1.Unfill.count > 0) { Account1.OrderCancel(SEnum) } //잔고셋팅 Account1.SetBalance(Main.GetOrderCode(MarketData1.code), 0); //보유한 매도포지션이 있으면 매도1호가로 전량 매수(청산) if (Account1.Balance.count > 0 && Account1.Balance.position == 2) { Account1.OrderBuy(Main.GetOrderCode(MarketData1.code),Account1.Balance.count, MarketData1.Ask(1),0); } } } function Main_OnOrderResponse(OrderResponse) { if (OrderResponse.orderID == BEid) { BEnum = OrderResponse.orderNum; } if (OrderResponse.orderID == SEid) { SEnum = OrderResponse.orderNum; } } 즐거운 하루되세요 > 기똥찬 님이 쓴 글입니다. > 제목 : 예스트레이더를 활용해서 > 수고가 많으십니다 저는 예스트레이더를 이용하여 시장가주문이 아닌 지정가주문(시스템 매매 설정창에서 종가로 설정)으로 시스템트레이딩을 하려고 합니다. 그런데, 이럴 경우 가장 문제가 미체결이 발생할 경우 그 다음부터 제가 수동으로 개입하지 않으면 원하는 수량의 매매가 안되고 수량이 자꾸 꼬인다는 것입니다. 그래서 이를 해결하고자 예스스팟을 이용하려고 합니다. 그런데, 저는 예스스팟의 수식작성법을 전혀 몰라서 도움을 받고자 합니다. 예스트레이더로 매매수식은 작성완료했습니다. 그리고, 유진투자선물에서 해외선물을 매매할 계획입니다. 한번 매매할 때 마다 9계약씩 매매한다고 가정하겠습니다. 피라미딩은 적용하지 않습니다. 제가 원하는 것은... 예스트레이더의 매매신호에 따라 지정가로 주문이 발생하되, 앞전 매매신호에서 혹시 미체결이 발생하더라도 자동으로 현재 잔고를 확인하여 잔고만큼만 청산하고 새로운 9계약이 진입되도록 하고자 합니다. 그리고, 이렇게 새로운 매매신호가 발생하면 앞선 미체결(부분 미체결 포함)은 자동취소가 되도록 하고 싶습니다. 참고로, 제가 현재 작성한 예스트레이더의 매매수식은 하나의 시스템식안에 매수되는 경우가 몇가지 있고(매수명 : 매수A, 매수B, ... 등), 매도되는 경우에도 몇가지(매도명 : 매도A, 매도B, ... 등)가 있습니다. 제가 수동으로 개입하지 않더라도 예스트레이더 신호를 이용하여 지정가 매매를 할수 있도록 예스스팟 수식을 만들어 주시면 감사하겠습니다.