커뮤니티

수식 문의 드립니다.

프로필 이미지
ywesry
2024-07-28 13:57:18
927
글번호 181951
답변완료
안녕하세요. 예스스팟 수식 관련 문의드립니다. 예스스팟으로 아래 사항을 구현하고 싶습니다. - 현재가 기준으로 5일 이동평균선이 20일 이동평균선 돌파하면 매수 - 현재가 기준으로 5일 이동평균선이 20일 이동평균선 아래로 내려가면 매도 상세한 수식 알려주시면 고맙겠습니다. 감사합니다.
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2024-07-29 16:03:30

안녕하세요 예스스탁입니다. 올리신 내용은 예스랭귀지의 시스템식으로 작성하시고 차트에 적용하고 차트에서 신호가 발생하면 스팟에서 주문 나가게 구현하셔야 합니다. 스팟으로 식을 구현하실때 사용하는 값들이 차트와 관려이 되면 차트에서 해당식을 구현하고 스팟에서 차트객체로 연결해 이용하셔야 합니다. 1 아래 내용을 시스템식으로 구현하고 주문하고자 하는 차트에 적용 var1 = ma(C,5); Var2 = ma(C,20); if CrossUp(var1,Var2) Then Buy(); if CrossDown(var1,Var2) Then Sell(); 2 각 객체의 자세한 설정방법은 예스스팟 도움말 다운받으셔서 내용 참고하시기 바랍니다. 차트객체 Chart1, 위 식을 적용한 차트에 차트 아이디를 부여하고 동일이름을 동일아이디 부여 계좌객체 Account1 , 주문낼 계좌번호 종목객체 MarketData1, 차트와 동일종목으로 지정 var BID,SID,BNum,SNum; function Main_OnStart() { Main.MessageList("Start") } function Chart1_OnRiseSignal(Signal) { if (Signal.signalKind == 1) { BID = Account1.OrderBuy(Main.GetOrderCode(Signal.code),2,MarketData1.Bid(1),0); Main.SetTimer(1,60000); } if (Signal.signalKind == 2) { Account1.SetUnfill(BNum); if ( Account1.Unfill.count > 0 ) { Account1.OrderCancel(Bnum); } Account1.SetBalance(Main.GetOrderCode(Signal.code), 0); if (Account1.Balance.count > 0 && Account1.Balance.position == 2) { Account1.OrderSell(Main.GetOrderCode(Signal.code),Account1.Balance.count,MarketData1.Ask(1),0) } } if (Signal.signalKind == 3) { SID = Account1.OrderSell(Main.GetOrderCode(Signal.code),2,MarketData1.Ask(1),0); Main.SetTimer(2,60000); } if (Signal.signalKind == 4) { Account1.SetUnfill(SNum); if ( Account1.Unfill.count > 0) { Account1.OrderCancel(Snum); } Account1.SetBalance(Main.GetOrderCode(Signal.code), 0); if (Account1.Balance.count > 0 && Account1.Balance.position == 1) { Account1.OrderBuy(Main.GetOrderCode(Signal.code),Account1.Balance.count,MarketData1.Bid(1),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,MarketData1.Ask(3)); } } if (nEventID == 2) { Main.KillTimer(2); Account1.SetUnfill(SNum); if (Account1.Unfill.count > 0) { SID = Account1.OrderReplacePrice(Snum,MarketData1.Bid(3)); } } } 즐거운 하루되세요 > ywesry 님이 쓴 글입니다. > 제목 : 수식 문의 드립니다. > 안녕하세요. 예스스팟 수식 관련 문의드립니다. 예스스팟으로 아래 사항을 구현하고 싶습니다. - 현재가 기준으로 5일 이동평균선이 20일 이동평균선 돌파하면 매수 - 현재가 기준으로 5일 이동평균선이 20일 이동평균선 아래로 내려가면 매도 상세한 수식 알려주시면 고맙겠습니다. 감사합니다.