커뮤니티

수식 검토 부탁드립니다

프로필 이미지
뽄때
2016-01-08 10:50:20
144
글번호 94218
답변완료
항상 도움을 주셔서 감사를 드립니다. 얼마전 아래와 같이 수식을 만들어 주셨는데.. 제가 원했던 거하고 수식이 맞지가 않는 것 같습니다 기본적으로 첫번째 매수는 전일 시가와 종가의 평균가격을 산정하고 그 평균가격보다 2% 높은 가격을 1차 매수, 평균가격을 2차매수, 평균가격보다 2% 낮은 가격대가 3차매수인데.. 당일 전일 종가보다 겝상으로 시작해서 1차 매수가격 이하로 진입하면 1차 매수가 되게 할려면 buy("b1",AtStop,var1*1.02,Floor(금액/C)); 에서 AtStop이 아니라 atlimit이 사용되야 하지 않나 싶습니다. 그러니까 첫번재 전제조건은 전일 종가보다 겝상승으로 시작해야 하며, 겝상승이후에 밀려서 첫번째 가격조건 이하로 진입하면 즉시 매수하는 것입니다.(봉완성 아님) 부탁드립니다 ^^ ======================================================== 안녕하세요 예스스탁입니다. 기준일 이후로 신호가 발생하게 작성했습니다. 기준일만 발생하고자 하시면 sdate == 기준일 로 변경하시면 됩니다. 진입을 누적하므로 적용시 시스템 트레이딩 설정창에서 피라미딩을 다른 진입신호만 허용으로 설정하고 적용하시면 됩니다. input : 금액(5000000),기준일(20151218); var1 = (DayOpen(1)+DayClose(1))/2; if sdate >= 기준일 then{ if MarketPosition == 0 and NextBarOpen >= var1*1.02 Then buy("b1",AtStop,var1*1.02,Floor(금액/C)); if MarketPosition == 1 and MaxEntries < 3 Then{ if NextBarOpen >= var1 Then buy("b2",AtStop,var1,Floor(금액/C)); if NextBarOpen >= var1*0.98 Then buy("b3",AtStop,var1*0.98,Floor(금액/C)); if MaxEntries == 1 Then ExitLong("BP1",atlimit,AvgEntryPrice*1.02); if MaxEntries == 2 Then ExitLong("BP2",atlimit,AvgEntryPrice*1.015); if MaxEntries == 3 Then{ ExitLong("BP3",atlimit,AvgEntryPrice*1.01); ExitLong("Bx",AtStop,LatestEntryPrice(0)*0.97); } } }
시스템
답변 3
프로필 이미지

예스스탁 예스스탁 답변

2016-01-08 14:55:09

안녕하세요 예스스탁입니다. 예 신호타입이 반대였습니다. atlimit이 맞습니다. 첫진입에 갭상승 조건도 추가했습니다. input : 금액(5000000),기준일(20151218); var1 = (DayOpen(1)+DayClose(1))/2; if sdate >= 기준일 then{ if MarketPosition == 0 and NextBarOpen >= var1*1.02 and dayopen > DayClose(1) Then buy("b1",atlimit,var1*1.02,Floor(금액/C)); if MarketPosition == 1 and MaxEntries < 3 Then{ if NextBarOpen >= var1 Then buy("b2",AtLimit,var1,Floor(금액/C)); if NextBarOpen >= var1*0.98 Then buy("b3",AtLimit,var1*0.98,Floor(금액/C)); if MaxEntries == 1 Then ExitLong("BP1",atlimit,AvgEntryPrice*1.02); if MaxEntries == 2 Then ExitLong("BP2",atlimit,AvgEntryPrice*1.015); if MaxEntries == 3 Then{ ExitLong("BP3",atlimit,AvgEntryPrice*1.01); ExitLong("Bx",AtStop,LatestEntryPrice(0)*0.97); } } } 첫진입이 전일평균가+2% 지점입니다. 갭상승을 한다고 해도 전일음봉이면 해당 값 이하에서 시작할 경우도 있는데 이때는 이후에 가격이 상승해서 해당값 이상 기록한 이후에 신호가 발생하게 됩니다. 참고하시기 바랍니다. 즐거운 하루되세요 > 뽄때 님이 쓴 글입니다. > 제목 : 수식 검토 부탁드립니다 > 항상 도움을 주셔서 감사를 드립니다. 얼마전 아래와 같이 수식을 만들어 주셨는데.. 제가 원했던 거하고 수식이 맞지가 않는 것 같습니다 기본적으로 첫번째 매수는 전일 시가와 종가의 평균가격을 산정하고 그 평균가격보다 2% 높은 가격을 1차 매수, 평균가격을 2차매수, 평균가격보다 2% 낮은 가격대가 3차매수인데.. 당일 전일 종가보다 겝상으로 시작해서 1차 매수가격 이하로 진입하면 1차 매수가 되게 할려면 buy("b1",AtStop,var1*1.02,Floor(금액/C)); 에서 AtStop이 아니라 atlimit이 사용되야 하지 않나 싶습니다. 그러니까 첫번재 전제조건은 전일 종가보다 겝상승으로 시작해야 하며, 겝상승이후에 밀려서 첫번째 가격조건 이하로 진입하면 즉시 매수하는 것입니다.(봉완성 아님) 부탁드립니다 ^^ ======================================================== 안녕하세요 예스스탁입니다. 기준일 이후로 신호가 발생하게 작성했습니다. 기준일만 발생하고자 하시면 sdate == 기준일 로 변경하시면 됩니다. 진입을 누적하므로 적용시 시스템 트레이딩 설정창에서 피라미딩을 다른 진입신호만 허용으로 설정하고 적용하시면 됩니다. input : 금액(5000000),기준일(20151218); var1 = (DayOpen(1)+DayClose(1))/2; if sdate >= 기준일 then{ if MarketPosition == 0 and NextBarOpen >= var1*1.02 Then buy("b1",AtStop,var1*1.02,Floor(금액/C)); if MarketPosition == 1 and MaxEntries < 3 Then{ if NextBarOpen >= var1 Then buy("b2",AtStop,var1,Floor(금액/C)); if NextBarOpen >= var1*0.98 Then buy("b3",AtStop,var1*0.98,Floor(금액/C)); if MaxEntries == 1 Then ExitLong("BP1",atlimit,AvgEntryPrice*1.02); if MaxEntries == 2 Then ExitLong("BP2",atlimit,AvgEntryPrice*1.015); if MaxEntries == 3 Then{ ExitLong("BP3",atlimit,AvgEntryPrice*1.01); ExitLong("Bx",AtStop,LatestEntryPrice(0)*0.97); } } }
프로필 이미지

뽄때

2016-01-08 16:29:33

아래 수식으로 하이트진로 적용해 봤는데 매수신호가 안나오네요 무슨 문제인지 모르겠습니다 하이트진로 전일 시가 : 23,850 전일 종가 : 26,550 평균가 : 25,00 아래의 식에서 시가 겝으로 상승을 안해서 적용안했으며 평균가에서 3% 높은 가격으로 변경했습니다. 그러면 var1*1.03 값이 25,956입니다 그러면 오늘 저가가 25,800 이므로 매수가 체결되야 하는데 신호가 안들어 옵니다 검토 부탁드립니다 input : 금액(5000000),기준일(20160105); var1 = (DayOpen(1)+DayClose(1))/2; if sdate >= 기준일 then{ if MarketPosition == 0 and NextBarOpen >= var1*1.03 # and dayopen > DayClose(1) Then buy("b1",atlimit,var1*1.03,Floor(금액/C)); if MarketPosition == 1 and MaxEntries < 3 Then{ if NextBarOpen >= var1 Then buy("b2",AtLimit,var1,Floor(금액/C)); if NextBarOpen >= var1*0.98 Then buy("b3",AtLimit,var1*0.98,Floor(금액/C)); if MaxEntries == 1 Then ExitLong("BP1",atlimit,AvgEntryPrice*1.02); if MaxEntries == 2 Then ExitLong("BP2",atlimit,AvgEntryPrice*1.015); if MaxEntries == 3 Then{ ExitLong("BP3",atlimit,AvgEntryPrice*1.01); ExitLong("Bx",AtStop,LatestEntryPrice(0)*0.97); } } } ================================================================================ > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 수식 검토 부탁드립니다 > 안녕하세요 예스스탁입니다. 예 신호타입이 반대였습니다. atlimit이 맞습니다. 첫진입에 갭상승 조건도 추가했습니다. input : 금액(5000000),기준일(20151218); var1 = (DayOpen(1)+DayClose(1))/2; if sdate >= 기준일 then{ if MarketPosition == 0 and NextBarOpen >= var1*1.02 and dayopen > DayClose(1) Then buy("b1",atlimit,var1*1.02,Floor(금액/C)); if MarketPosition == 1 and MaxEntries < 3 Then{ if NextBarOpen >= var1 Then buy("b2",AtLimit,var1,Floor(금액/C)); if NextBarOpen >= var1*0.98 Then buy("b3",AtLimit,var1*0.98,Floor(금액/C)); if MaxEntries == 1 Then ExitLong("BP1",atlimit,AvgEntryPrice*1.02); if MaxEntries == 2 Then ExitLong("BP2",atlimit,AvgEntryPrice*1.015); if MaxEntries == 3 Then{ ExitLong("BP3",atlimit,AvgEntryPrice*1.01); ExitLong("Bx",AtStop,LatestEntryPrice(0)*0.97); } } } 첫진입이 전일평균가+2% 지점입니다. 갭상승을 한다고 해도 전일음봉이면 해당 값 이하에서 시작할 경우도 있는데 이때는 이후에 가격이 상승해서 해당값 이상 기록한 이후에 신호가 발생하게 됩니다. 참고하시기 바랍니다. 즐거운 하루되세요 > 뽄때 님이 쓴 글입니다. > 제목 : 수식 검토 부탁드립니다 > 항상 도움을 주셔서 감사를 드립니다. 얼마전 아래와 같이 수식을 만들어 주셨는데.. 제가 원했던 거하고 수식이 맞지가 않는 것 같습니다 기본적으로 첫번째 매수는 전일 시가와 종가의 평균가격을 산정하고 그 평균가격보다 2% 높은 가격을 1차 매수, 평균가격을 2차매수, 평균가격보다 2% 낮은 가격대가 3차매수인데.. 당일 전일 종가보다 겝상으로 시작해서 1차 매수가격 이하로 진입하면 1차 매수가 되게 할려면 buy("b1",AtStop,var1*1.02,Floor(금액/C)); 에서 AtStop이 아니라 atlimit이 사용되야 하지 않나 싶습니다. 그러니까 첫번재 전제조건은 전일 종가보다 겝상승으로 시작해야 하며, 겝상승이후에 밀려서 첫번째 가격조건 이하로 진입하면 즉시 매수하는 것입니다.(봉완성 아님) 부탁드립니다 ^^ ======================================================== 안녕하세요 예스스탁입니다. 기준일 이후로 신호가 발생하게 작성했습니다. 기준일만 발생하고자 하시면 sdate == 기준일 로 변경하시면 됩니다. 진입을 누적하므로 적용시 시스템 트레이딩 설정창에서 피라미딩을 다른 진입신호만 허용으로 설정하고 적용하시면 됩니다. input : 금액(5000000),기준일(20151218); var1 = (DayOpen(1)+DayClose(1))/2; if sdate >= 기준일 then{ if MarketPosition == 0 and NextBarOpen >= var1*1.02 Then buy("b1",AtStop,var1*1.02,Floor(금액/C)); if MarketPosition == 1 and MaxEntries < 3 Then{ if NextBarOpen >= var1 Then buy("b2",AtStop,var1,Floor(금액/C)); if NextBarOpen >= var1*0.98 Then buy("b3",AtStop,var1*0.98,Floor(금액/C)); if MaxEntries == 1 Then ExitLong("BP1",atlimit,AvgEntryPrice*1.02); if MaxEntries == 2 Then ExitLong("BP2",atlimit,AvgEntryPrice*1.015); if MaxEntries == 3 Then{ ExitLong("BP3",atlimit,AvgEntryPrice*1.01); ExitLong("Bx",AtStop,LatestEntryPrice(0)*0.97); } } }
프로필 이미지

예스스탁 예스스탁 답변

2016-01-08 16:50:27

안녕하세요 예스스탁입니다. 해당식은 분봉차트에 적용하셔야 하는 식입니다. 첨부된 그림과 같이 분봉에 적용하시면 신호가 발생합니다 수식에서 특정값을 터치하면 즉시 신호를 내는 타입은 atstop과 atlimit입니다. 2개의 타입은 완성봉에서 지정한 값을 셋팅하고 다음봉시세와 셋팅한 값을 비교합니다. 일봉에 적용하시면 최근완성봉이 1월7일 봉이므로 1월7일에 그전날(1월6일)의 중간값을 셋팅하고 다음날에 셋팅된값(1월6일의 중간값) 이하의 시세가 발생하는지를 감시하게 됩니다. 즉 1월 8일에 1월 7일값으로 신호가 아닌 1월 6일값으로 신호가 발생합니다. 일봉에 적용하신 다면 진입신호는 일봉에 적용하는 것으로 변경해 드릴수 있지만 해당식 평단가 대비 청산식이 진입한일봉에서는 발생을 하게 할수가 없습니다. 분봉에서만 구현되는 내용이므로 분봉차트에 적용하셔야 합니다. 1분봉 차트에 적용해 구동하시면 됩니다. 즐거운 하루되세요 > 뽄때 님이 쓴 글입니다. > 제목 : Re : Re : 수식 검토 부탁드립니다 > 아래 수식으로 하이트진로 적용해 봤는데 매수신호가 안나오네요 무슨 문제인지 모르겠습니다 하이트진로 전일 시가 : 23,850 전일 종가 : 26,550 평균가 : 25,00 아래의 식에서 시가 겝으로 상승을 안해서 적용안했으며 평균가에서 3% 높은 가격으로 변경했습니다. 그러면 var1*1.03 값이 25,956입니다 그러면 오늘 저가가 25,800 이므로 매수가 체결되야 하는데 신호가 안들어 옵니다 검토 부탁드립니다 input : 금액(5000000),기준일(20160105); var1 = (DayOpen(1)+DayClose(1))/2; if sdate >= 기준일 then{ if MarketPosition == 0 and NextBarOpen >= var1*1.03 # and dayopen > DayClose(1) Then buy("b1",atlimit,var1*1.03,Floor(금액/C)); if MarketPosition == 1 and MaxEntries < 3 Then{ if NextBarOpen >= var1 Then buy("b2",AtLimit,var1,Floor(금액/C)); if NextBarOpen >= var1*0.98 Then buy("b3",AtLimit,var1*0.98,Floor(금액/C)); if MaxEntries == 1 Then ExitLong("BP1",atlimit,AvgEntryPrice*1.02); if MaxEntries == 2 Then ExitLong("BP2",atlimit,AvgEntryPrice*1.015); if MaxEntries == 3 Then{ ExitLong("BP3",atlimit,AvgEntryPrice*1.01); ExitLong("Bx",AtStop,LatestEntryPrice(0)*0.97); } } } ================================================================================ > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 수식 검토 부탁드립니다 > 안녕하세요 예스스탁입니다. 예 신호타입이 반대였습니다. atlimit이 맞습니다. 첫진입에 갭상승 조건도 추가했습니다. input : 금액(5000000),기준일(20151218); var1 = (DayOpen(1)+DayClose(1))/2; if sdate >= 기준일 then{ if MarketPosition == 0 and NextBarOpen >= var1*1.02 and dayopen > DayClose(1) Then buy("b1",atlimit,var1*1.02,Floor(금액/C)); if MarketPosition == 1 and MaxEntries < 3 Then{ if NextBarOpen >= var1 Then buy("b2",AtLimit,var1,Floor(금액/C)); if NextBarOpen >= var1*0.98 Then buy("b3",AtLimit,var1*0.98,Floor(금액/C)); if MaxEntries == 1 Then ExitLong("BP1",atlimit,AvgEntryPrice*1.02); if MaxEntries == 2 Then ExitLong("BP2",atlimit,AvgEntryPrice*1.015); if MaxEntries == 3 Then{ ExitLong("BP3",atlimit,AvgEntryPrice*1.01); ExitLong("Bx",AtStop,LatestEntryPrice(0)*0.97); } } } 첫진입이 전일평균가+2% 지점입니다. 갭상승을 한다고 해도 전일음봉이면 해당 값 이하에서 시작할 경우도 있는데 이때는 이후에 가격이 상승해서 해당값 이상 기록한 이후에 신호가 발생하게 됩니다. 참고하시기 바랍니다. 즐거운 하루되세요 > 뽄때 님이 쓴 글입니다. > 제목 : 수식 검토 부탁드립니다 > 항상 도움을 주셔서 감사를 드립니다. 얼마전 아래와 같이 수식을 만들어 주셨는데.. 제가 원했던 거하고 수식이 맞지가 않는 것 같습니다 기본적으로 첫번째 매수는 전일 시가와 종가의 평균가격을 산정하고 그 평균가격보다 2% 높은 가격을 1차 매수, 평균가격을 2차매수, 평균가격보다 2% 낮은 가격대가 3차매수인데.. 당일 전일 종가보다 겝상으로 시작해서 1차 매수가격 이하로 진입하면 1차 매수가 되게 할려면 buy("b1",AtStop,var1*1.02,Floor(금액/C)); 에서 AtStop이 아니라 atlimit이 사용되야 하지 않나 싶습니다. 그러니까 첫번재 전제조건은 전일 종가보다 겝상승으로 시작해야 하며, 겝상승이후에 밀려서 첫번째 가격조건 이하로 진입하면 즉시 매수하는 것입니다.(봉완성 아님) 부탁드립니다 ^^ ======================================================== 안녕하세요 예스스탁입니다. 기준일 이후로 신호가 발생하게 작성했습니다. 기준일만 발생하고자 하시면 sdate == 기준일 로 변경하시면 됩니다. 진입을 누적하므로 적용시 시스템 트레이딩 설정창에서 피라미딩을 다른 진입신호만 허용으로 설정하고 적용하시면 됩니다. input : 금액(5000000),기준일(20151218); var1 = (DayOpen(1)+DayClose(1))/2; if sdate >= 기준일 then{ if MarketPosition == 0 and NextBarOpen >= var1*1.02 Then buy("b1",AtStop,var1*1.02,Floor(금액/C)); if MarketPosition == 1 and MaxEntries < 3 Then{ if NextBarOpen >= var1 Then buy("b2",AtStop,var1,Floor(금액/C)); if NextBarOpen >= var1*0.98 Then buy("b3",AtStop,var1*0.98,Floor(금액/C)); if MaxEntries == 1 Then ExitLong("BP1",atlimit,AvgEntryPrice*1.02); if MaxEntries == 2 Then ExitLong("BP2",atlimit,AvgEntryPrice*1.015); if MaxEntries == 3 Then{ ExitLong("BP3",atlimit,AvgEntryPrice*1.01); ExitLong("Bx",AtStop,LatestEntryPrice(0)*0.97); } } }