커뮤니티

신호좀 자주 나오게 해주세요.

프로필 이미지
천왕봉
2016-09-06 12:24:09
102
글번호 101720
답변완료
지난번 질문에 수식 작성해주셔서 고맙습니다. 아래는 "최근 20개 봉의 평균 가격 기준 상 하 3% 이내에서는 조건을 만족해도 신호 발생하지 않는다." 라는 수식을 작성해주신건데 실행해보니까 신호가 3일에 한번 정도 나옵니다. 조금더 민감하게 해보려고 봉 수를 20개가 아닌 2개로 줄이고( var4 = (highest(H,20)+lowest(L,20))/2;), --> 이 부분에서 20을 2로 변경함 상하 3% 이내를 1% 이내로 줄이고 (C >= var4*1.03 or C <= var4*0.97) --> 이 부분을 1.03을 1.01로, 0.97을 0.99로 변경함 이렇게 수정하고 실행해도 신호가 안나옵니다. 좀더 민감하게 하려면 어떻게 해야 하는지요? var1 = ma(c,3); var2 = ma(c,6); var3 = ma(C,9); var4 = (highest(H,20)+lowest(L,20))/2; #기존매수는 피라미딩이 되지 않게 MarketPosition <= 0 조건 추가 if MarketPosition <= 0 and var1 > var2 and C > var3 and C > O and (C >= var4*1.03 or C <= var4*0.97) Then buy("b"); #기존매도는 피라미딩이 되지 않게 MarketPosition >= 0 조건 추가 if MarketPosition >= 0 and var1 < var2 and C < var3 and C < O and (C >= var4*1.03 or C <= var4*0.97) Then sell("s"); #피라미딩매수(매수상태이고 첫봉에서 동일조건이면 추가매수) if dayindex == 0 and MarketPosition == 1 and var1 > var2 and C > var3 and C > O and (C >= var4*1.03 or C <= var4*0.97) Then buy("bb"); #피라미딩매도(매도진입상태이고 첫봉에서 동일조건이면 추가매도) if dayindex == 0 and MarketPosition == -1 and var1 < var2 and C < var3 and C < O and (C >= var4*1.03 or C <= var4*0.97) Then sell("ss"); if MarketPosition == 1 Then{ var1 = Floor((highest(H,BarsSinceEntry)-EntryPrice)/(PriceScale*10)); if var1 > var1[1] Then Text_New(sdate,stime,H,NumToStr(var1*10,0)+"틱"); } if MarketPosition == -1 Then{ var1 = Floor((EntryPrice-Lowest(L,BarsSinceEntry))/(PriceScale*10)); if var1 > var1[1] Then Text_New(sdate,stime,H,NumToStr(var1*10,0)+"틱"); }
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2016-09-06 14:40:15

안녕하세요 예스스탁입니다. 중심선기간과 상하폭을 틱수로 지정할수 있게 수식을 변경해 드립니다. 틱수는 작을수록 신호가 많이 발생합니다. 기간도 작을수록 많이 발생하지만 항상 작게 발생하는 것이 아닙니다. 일정기간 평균가의 위치에 따라 다릅니다. input : 기간(20),틱수(1); var1 = ma(c,3); var2 = ma(c,6); var3 = ma(C,9); var4 = (highest(H,기간)+lowest(L,기간))/2; #기존매수는 피라미딩이 되지 않게 MarketPosition <= 0 조건 추가 if MarketPosition <= 0 and var1 > var2 and C > var3 and C > O and (C >= var4+PriceScale*틱수 or C <= var4-PriceScale*틱수) Then buy("b"); #기존매도는 피라미딩이 되지 않게 MarketPosition >= 0 조건 추가 if MarketPosition >= 0 and var1 < var2 and C < var3 and C < O and (C >= var4+PriceScale*틱수 or C <= var4-PriceScale*틱수) Then sell("s"); #피라미딩매수(매수상태이고 첫봉에서 동일조건이면 추가매수) if dayindex == 0 and MarketPosition == 1 and var1 > var2 and C > var3 and C > O and (C >= var4+PriceScale*틱수 or C <= var4-PriceScale*틱수) Then buy("bb"); #피라미딩매도(매도진입상태이고 첫봉에서 동일조건이면 추가매도) if dayindex == 0 and MarketPosition == -1 and var1 < var2 and C < var3 and C < O and (C >= var4+PriceScale*틱수 or C <= var4-PriceScale*틱수) Then sell("ss"); if MarketPosition == 1 Then{ var1 = Floor((highest(H,BarsSinceEntry)-EntryPrice)/(PriceScale*10)); if var1 > var1[1] Then Text_New(sdate,stime,H,NumToStr(var1*10,0)+"틱"); } if MarketPosition == -1 Then{ var1 = Floor((EntryPrice-Lowest(L,BarsSinceEntry))/(PriceScale*10)); if var1 > var1[1] Then Text_New(sdate,stime,H,NumToStr(var1*10,0)+"틱"); } 즐거운 하루되세요 > 천왕봉 님이 쓴 글입니다. > 제목 : 신호좀 자주 나오게 해주세요. > 지난번 질문에 수식 작성해주셔서 고맙습니다. 아래는 "최근 20개 봉의 평균 가격 기준 상 하 3% 이내에서는 조건을 만족해도 신호 발생하지 않는다." 라는 수식을 작성해주신건데 실행해보니까 신호가 3일에 한번 정도 나옵니다. 조금더 민감하게 해보려고 봉 수를 20개가 아닌 2개로 줄이고( var4 = (highest(H,20)+lowest(L,20))/2;), --> 이 부분에서 20을 2로 변경함 상하 3% 이내를 1% 이내로 줄이고 (C >= var4*1.03 or C <= var4*0.97) --> 이 부분을 1.03을 1.01로, 0.97을 0.99로 변경함 이렇게 수정하고 실행해도 신호가 안나옵니다. 좀더 민감하게 하려면 어떻게 해야 하는지요? var1 = ma(c,3); var2 = ma(c,6); var3 = ma(C,9); var4 = (highest(H,20)+lowest(L,20))/2; #기존매수는 피라미딩이 되지 않게 MarketPosition <= 0 조건 추가 if MarketPosition <= 0 and var1 > var2 and C > var3 and C > O and (C >= var4*1.03 or C <= var4*0.97) Then buy("b"); #기존매도는 피라미딩이 되지 않게 MarketPosition >= 0 조건 추가 if MarketPosition >= 0 and var1 < var2 and C < var3 and C < O and (C >= var4*1.03 or C <= var4*0.97) Then sell("s"); #피라미딩매수(매수상태이고 첫봉에서 동일조건이면 추가매수) if dayindex == 0 and MarketPosition == 1 and var1 > var2 and C > var3 and C > O and (C >= var4*1.03 or C <= var4*0.97) Then buy("bb"); #피라미딩매도(매도진입상태이고 첫봉에서 동일조건이면 추가매도) if dayindex == 0 and MarketPosition == -1 and var1 < var2 and C < var3 and C < O and (C >= var4*1.03 or C <= var4*0.97) Then sell("ss"); if MarketPosition == 1 Then{ var1 = Floor((highest(H,BarsSinceEntry)-EntryPrice)/(PriceScale*10)); if var1 > var1[1] Then Text_New(sdate,stime,H,NumToStr(var1*10,0)+"틱"); } if MarketPosition == -1 Then{ var1 = Floor((EntryPrice-Lowest(L,BarsSinceEntry))/(PriceScale*10)); if var1 > var1[1] Then Text_New(sdate,stime,H,NumToStr(var1*10,0)+"틱"); }