커뮤니티

예스트레드

프로필 이미지
와글이
2022-07-18 11:48:12.0
1297
글번호 225683
답변완료
예스트레드로 사용중인 챠트와 참조챠트, 지표를 변경없이 그대로 이용해서 주문부분만 예스팟으로 작성 가능한가요? 예스트레드로 불가능 한부분이 많아서 예스팟을 추가해 수정해 보려합니다. 혹, 예스팟에서 프로그램 동작 중 시작/종료 또는 수량등의 버튼 입력을 받아 처리할 수 있는 기능은 없나요?
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2022-08-04 15:54:28.0

안녕하세요 예스스탁입니다. 예스스팟에 차트객체가 제공되고 차트객체를 통해서 차트에서 신호가 발생하는 것을 즉시 인지합니다. 차트에서 신호가 발생하면 신호의 종류에 따라 주문을 집행하게 구현가능합니다. 실제 올리신 내용이 사용자분들이 가장 많이 사용하는 스팟전략입니다. 아래 예제식 참고하시기 바랍니다. 아래 내용으로 동작하는 수식입니다. 매수진입신호 발생 --> 현재가로 매수주문, 60초 후 매도5호가로 정정, 매수청산신호 발생 --> 진입미체결 있으면 취소, 체결된 수량만 매수5호가로 매도주문 매도진입신호 발생 --> 현재가로 매도주문, 60초 후 매수5호가로 정정, 매도청산신호 발생 --> 진입미체결 있으면 취소, 체결된 수량만 매도5호가로 매수주문 스크립트 객체설정 차트객체 추가 --> 객체명 Chart1, 차트와 동일한 아이디 지정 계좌객체 추가 --> 객체명 Account1, 주문낼 계좌번호 지정 var OC, BV, BID, SID, SV, BNum, SNum; function Main_OnStart() { Main.MessageList("Start"); OC = Main.GetOrderCode(Chart1.GetCode(1)); Main.ReqMarketData(OC)); } function Main_OnRcvMarketData(MarketData) { if (MarketData.code == OC) { MK = MarketData; } } function Chart1_OnRiseSignal(Signal) { if (Signal.signalKind == 1) { BV = Signal.count; BID = Account1.OrderBuy(OC, BV, MK.current, 0); Main.SetTimer(1,60*1000); } if (Signal.signalKind == 2) { Account1.SetUnfill(BNum); var BXV = BV; if ( Account1.Unfill.count > 0 ) { BXV = BV-Account1.Unfill.count; Account1.OrderCancel(BNum); } if (BXV > 0) { Account1.OrderSell(OC, BXV, MK.Bid(5), 0); } } if (Signal.signalKind == 3) { SV = Signal.count; SID = Account1.OrderSell(OC, SV, MK.current, 0); Main.SetTimer(2,60*1000); } if (Signal.signalKind == 4) { Account1.SetUnfill(SNum); SXV = SV; if ( Account1.Unfill.count > 0) { SXV = SV-Account1.Unfill.count; Account1.OrderCancel(SNum); } if (SXV > 0) { Account1.OrderBuy(OC, SXV, MK.Ask(5), 0); } } } function Main_OnOrderResponse(OrderResponse) { if (OrderResponse.orderID == BID) { BNum = OrderResponse.orderNum; } if (OrderResponse.orderID == SID) { SNum = OrderResponse.orderNum; } } function Main_OnTimer(nEventID) { if (nEventID == 1) { Main.KillTimer(1); Account1.SetUnfill(BNum); if (Account1.Unfill.count > 0) { BID = Account1.OrderReplacePrice(BNum, MK.Ask(5)); } } if (nEventID == 2) { Main.KillTimer(2); Account1.SetUnfill(SNum); if (Account1.Unfill.count > 0) { SID = Account1.OrderReplacePrice(SNum, MK.Bid(5)); } } } 즐거운 하루되세요 > 와글이 님이 쓴 글입니다. > 제목 : 예스트레드 > 예스트레드로 사용중인 챠트와 참조챠트, 지표를 변경없이 그대로 이용해서 주문부분만 예스팟으로 작성 가능한가요? 예스트레드로 불가능 한부분이 많아서 예스팟을 추가해 수정해 보려합니다. 혹, 예스팟에서 프로그램 동작 중 시작/종료 또는 수량등의 버튼 입력을 받아 처리할 수 있는 기능은 없나요?