커뮤니티

수식에 대하여

프로필 이미지
돌아온스머프
2019-02-18 07:48:34
3076
글번호 224735
답변완료
안녕하세요 늘 감사합니다 다름이 아니라 시스템트레이딩을 예스스팟에 적용하려고 합니다 매수 매도 신호시 30초내에 체결이 이루어지지 않으면 취소하고 환매 신호시 계좌 잔고를 파악하여 환매를 하고 환매 신호 후 30초 동안 매매가 이루어지지 않으면 시장가로 변경하여 매매를 하려고 하면 어떻게 해야 할지 잘 모르겠네요... 간단할것 같은데 전혀 모르겠네요.... 꼭 알고 싶습니다 이부분만 댓글로 힘들다면 직접 찾아가 배우고 싶습니다 감사합니다
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2019-02-28 16:21:34

안녕하세요 예스스탁입니다. 스팟의 수식답변은 식작성을 보조하는 가이드입니다. 아래 내용 참고하셔서 수정보완해 사용하시기 바랍니다. 스크립트 객체설정 계좌객체 추가 --> 속성에서 객체명은 Account1, 주무낼 계좌지정 차트객체 추가 --> 속성에서 객체명은 Chart1, 연결할 차트의 아이디지정 종목객체 추가 --> 속성에서 객체명은 MarketData1, 차트와 동일종목으로 지정 var BEid,BEnum,SEid,SEnum,BXcancel; var BXid,BXnum,SXid,SXnum,SXcancel; function Main_OnStart() { Main.MessageList("스팟시작"); } function Chart1_OnRiseSignal(Signal) { //Buy신호 발생하면 매도1호가로 매수 if (T == 0 && Signal.signalKind == 1) { T = 1; BEid = Account1.OrderBuy(Main.GetOrderCode(MarketData1.code),Signal.count, 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) { BXid = 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),1, 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) { SXid = Account1.OrderBuy(Main.GetOrderCode(MarketData1.code),Signal.count, MarketData1.Ask(1),0); } } } function Main_OnOrderResponse(OrderResponse) { //매수진입주문 응답 if (OrderResponse.orderID == BEid) { BEnum = OrderResponse.orderNum; Main.SetTimer(1, 30000);//1번타이머,30초 셋팅 } //매도진입주문 응답 if (OrderResponse.orderID == SEid) { SEnum = OrderResponse.orderNum; Main.SetTimer(2, 30000);//2번타이머,30초 셋팅 } //매수청산주문 응답 if (OrderResponse.orderID == BXid) { BXnum = OrderResponse.orderNum; Main.SetTimer(3, 30000);//3번타이머,30초 셋팅 } //매도청산주문 응답 if (OrderResponse.orderID == SXid) { SXnum = OrderResponse.orderNum; Main.SetTimer(4, 30000);//4번타이머,30초 셋팅 } //매수청산 취소주문 응답 if (OrderResponse.orderID == BXcancel) { //잔고셋팅 Account1.SetBalance(Main.GetOrderCode(MarketData1.code), 0); //보유한 매수포지션이 있으면 시장가로 매도(청산) if (Account1.Balance.count > 0 && Account1.Balance.position == 2) { Account1.OrderSell(Main.GetOrderCode(MarketData1.code),Account1.Balance.count,0,1); } } //매도청산주문 응답 if (OrderResponse.orderID == SXid) { //잔고셋팅 Account1.SetBalance(Main.GetOrderCode(MarketData1.code), 0); //보유한 매수포지션이 있으면 시장가로 매수(청산) if (Account1.Balance.count > 0 && Account1.Balance.position == 1) { Account1.OrderBuy(Main.GetOrderCode(MarketData1.code),Account1.Balance.count,0,1); } } } function Main_OnTimer(nEventID) { //매수진입주문 후 30초 뒤 if (nEventID == 1) { //매수진입주문번호로 미체결객체 셋팅 Account1.SetUnfill(BEnum); //미체결잔량이 있으면 취소 if (Account1.Unfill.count > 0) { Account1.OrderCancel(BEnum); } } //매도진입주문 후 30초 뒤 if (nEventID == 2) { //매도진입주문번호로 미체결객체 셋팅 Account1.SetUnfill(SEnum); //미체결잔량이 있으면 취소 if (Account1.Unfill.count > 0) { Account1.OrderCancel(SEnum); } } //매수청산주문 후 30초 뒤 if (nEventID == 3) { //매수청산주문번호로 미체결객체 셋팅 Account1.SetUnfill(BXnum); //미체결잔량이 있으면 취소 if (Account1.Unfill.count > 0) { BXcancel = Account1.OrderCancel(BEnum); } } //매도청산주문 후 30초 뒤 if (nEventID == 4) { //매도청산주문번호로 미체결객체 셋팅 Account1.SetUnfill(SXnum); //미체결잔량이 있으면 취소 if (Account1.Unfill.count > 0) { SXcancel = Account1.OrderCancel(SEnum); } } } 즐거운 하루되세요 > 돌아온스머프 님이 쓴 글입니다. > 제목 : 수식에 대하여 > 안녕하세요 늘 감사합니다 다름이 아니라 시스템트레이딩을 예스스팟에 적용하려고 합니다 매수 매도 신호시 30초내에 체결이 이루어지지 않으면 취소하고 환매 신호시 계좌 잔고를 파악하여 환매를 하고 환매 신호 후 30초 동안 매매가 이루어지지 않으면 시장가로 변경하여 매매를 하려고 하면 어떻게 해야 할지 잘 모르겠네요... 간단할것 같은데 전혀 모르겠네요.... 꼭 알고 싶습니다 이부분만 댓글로 힘들다면 직접 찾아가 배우고 싶습니다 감사합니다