커뮤니티

수식 문의

프로필 이미지
흑수돌
2018-11-15 20:23:11
195
글번호 123717
답변완료
아래는 일전에 도움 주신 수식입니다. 1. 아래 신호에 쓰이는 지표 수식을 dataN 에 따라 적용되도록 변환하고 신호는 data1에서 뿌려주고 싶습니다. 2. 아래의 신호를 바탕으로 몇가지 필터를 걸어보려고 하는데요, 필터 중 다음과 같은 수식을 넣으니 신호가 싹 사라집니다. 신호 수식에 아무런 영향을 주지 않는 단순 설정들인데도, (F4 누르면 이상없이 나옴) 신호가 왜 사라지는지 모르겠습니다. ###### 다음 ###### var : a1(0,data1),a2(0,data1),a3(0,data1),a4(0,data1),a5(0,data1); a1 = abs((data2(C))-(data3(C))); a2 = abs((data4(C))-(data5(C))); a3 = abs((data6(C))-(data7(C))); a4 = abs((data8(C))-(data9(C))); a5 = abs((data10(C))-(Data11(C))); ###### 아래 ###### input: period(20),dv(2),n(20); var: efratio(0), smooth(1), fastend(0.666), slowend(0.0645); var: AMA(0),diff(0), signal(0), noise(0); Var: SumSqrt(0), Avgv(0), Counter(0),Stdv(0),idx(0); # 시초가 if bdate != bdate[1] THen idx = 0; Else idx = idx+1; # 쿠프먼 efratio = 1; diff = absvalue(C - C[1]); if currentbar > period then { signal = absvalue(C - C[period]); noise = accumN(diff,period); if noise <> 0 then efratio = signal / noise; smooth = power(efratio*(fastend - slowend) + slowend,2); AMA = AMA[1] + smooth*(C - AMA[1]); } else AMA = C; # 중심선 If period != 0 Then Begin Avgv = ama; SumSqrt = 0; For Counter = 0 To period - 1 Begin SumSqrt = SumSqrt + (c[Counter] - Avgv) * (c[Counter] - Avgv); End; Stdv = SquareRoot(SumSqrt / period); End Else Stdv = 0; value1 = ama+(stdv*dv); # 상단선 value2 = ama-(stdv*dv); # 하단선 if idx < n then { if (idx == 0 and c > ama) or (idx > 0 and crossup(C,ama)) then buy("K"); if (idx == 0 and c < ama) or (idx > 0 and CrossDown(C,ama)) then sell("K."); }
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2018-11-16 11:00:06

안녕하세요 예스스탁입니다. 식을 수정했습니다. 아래 지표는 data2의 대한 내용으로 변경했습니다. 참조데이터는 별도로 변수처리가 가능하지 않으므로 원하는 데이터 번호로 직접 변경하셔야 합니다. 식상 currentbar는 data1기준으로 봉수를 리턴하므로 참조데이터를 이용시 필요한 index로 별도로 처리하셔야 합니다. ###### 다음 ###### var : a1(0,data1),a2(0,data1),a3(0,data1),a4(0,data1),a5(0,data1); a1 = abs((data2(C))-(data3(C))); a2 = abs((data4(C))-(data5(C))); a3 = abs((data6(C))-(data7(C))); a4 = abs((data8(C))-(data9(C))); a5 = abs((data10(C))-(Data11(C))); ###### 아래 ###### input: period(20),dv(2),n(20); var: efratio(0,data2), smooth(1,data2), fastend(0.666,data2), slowend(0.0645,data2); var: AMA(0,data2),diff(0,data2), signal(0,data2), noise(0,data2); Var: SumSqrt(0,data2), Avgv(0,data2), Counter(0,data2),Stdv(0,data2),idx(0,data2); var: V1(0,data2),v2(0,data2); # 시초가 if data2(bdate != bdate[1]) THen idx = 0; Else idx = idx+1; # 쿠프먼 efratio = 1; diff = data2(absvalue(C - C[1])); if data2(index > period) then { signal = data2(absvalue(C - C[period])); noise = data2(accumN(diff,period)); if noise <> 0 then efratio = signal / noise; smooth = power(efratio*(fastend - slowend) + slowend,2); AMA = AMA[1] + smooth*(data2(C) - AMA[1]); } else AMA = data2(C); # 중심선 If period != 0 Then Begin Avgv = ama; SumSqrt = 0; For Counter = 0 To period - 1 Begin SumSqrt = SumSqrt + (data2(c[Counter]) - Avgv) * (data2(c[Counter]) - Avgv); End; Stdv = SquareRoot(SumSqrt / period); End Else Stdv = 0; v1 = ama+(stdv*dv); # 상단선 v2 = ama-(stdv*dv); # 하단선 if idx < n then { if data2((idx == 0 and c > ama) or (idx > 0 and crossup(C,ama))) then buy("K"); if data2((idx == 0 and c < ama) or (idx > 0 and CrossDown(C,ama))) then sell("K."); } 즐거운 하루되세요 > 흑수돌 님이 쓴 글입니다. > 제목 : 수식 문의 > 아래는 일전에 도움 주신 수식입니다. 1. 아래 신호에 쓰이는 지표 수식을 dataN 에 따라 적용되도록 변환하고 신호는 data1에서 뿌려주고 싶습니다. 2. 아래의 신호를 바탕으로 몇가지 필터를 걸어보려고 하는데요, 필터 중 다음과 같은 수식을 넣으니 신호가 싹 사라집니다. 신호 수식에 아무런 영향을 주지 않는 단순 설정들인데도, (F4 누르면 이상없이 나옴) 신호가 왜 사라지는지 모르겠습니다. ###### 다음 ###### var : a1(0,data1),a2(0,data1),a3(0,data1),a4(0,data1),a5(0,data1); a1 = abs((data2(C))-(data3(C))); a2 = abs((data4(C))-(data5(C))); a3 = abs((data6(C))-(data7(C))); a4 = abs((data8(C))-(data9(C))); a5 = abs((data10(C))-(Data11(C))); ###### 아래 ###### input: period(20),dv(2),n(20); var: efratio(0), smooth(1), fastend(0.666), slowend(0.0645); var: AMA(0),diff(0), signal(0), noise(0); Var: SumSqrt(0), Avgv(0), Counter(0),Stdv(0),idx(0); # 시초가 if bdate != bdate[1] THen idx = 0; Else idx = idx+1; # 쿠프먼 efratio = 1; diff = absvalue(C - C[1]); if currentbar > period then { signal = absvalue(C - C[period]); noise = accumN(diff,period); if noise <> 0 then efratio = signal / noise; smooth = power(efratio*(fastend - slowend) + slowend,2); AMA = AMA[1] + smooth*(C - AMA[1]); } else AMA = C; # 중심선 If period != 0 Then Begin Avgv = ama; SumSqrt = 0; For Counter = 0 To period - 1 Begin SumSqrt = SumSqrt + (c[Counter] - Avgv) * (c[Counter] - Avgv); End; Stdv = SquareRoot(SumSqrt / period); End Else Stdv = 0; value1 = ama+(stdv*dv); # 상단선 value2 = ama-(stdv*dv); # 하단선 if idx < n then { if (idx == 0 and c > ama) or (idx > 0 and crossup(C,ama)) then buy("K"); if (idx == 0 and c < ama) or (idx > 0 and CrossDown(C,ama)) then sell("K."); }