커뮤니티

문의드립니다.

프로필 이미지
잡다백수
2018-03-22 12:19:12
170
글번호 117594
답변완료
도움주시는 덕분에 도전하고 있습니다. 매번 감사합니다. 1.기타 이 지표에서 시스템차트에는 필요없는 지표를 삭제부탁드립니다. 그리고 Filt로 이평과 그에 따른 볼린저밴드 표시도 부탁드립니다. Inputs : N(0),Period(20),delta1(0.1),Type(1); #Type : ema(1), sma(2),Gauss(3),Butter(4),Smooth(5),HP(6),2PHP(7),BP(8),BS(9) Vars: Price(0), c0(1),c1(0),b0(1),b1(0),b2(0),a1(0),a2(0),alpha(0),beta1(0),gamma1(0),Filt(0); Price = (H+L)/2; If Type == 1 Then Begin If CurrentBar <= N then Filt = Price; alpha = (Cosine(360/Period) + Sine(360/Period) - 1) / Cosine(360/Period); b0 = alpha; a1 = 1 - alpha; End; If Type == 2 Then Begin If CurrentBar <= N then Filt = Price; c1 = 1 / N; b0 = 1 / N; a1 = 1; End; If Type == 3 Then Begin If CurrentBar <= N then Filt = Price; beta1 = 2.415*(1 - Cosine(360 / Period)); alpha = -beta1 + SquareRoot(beta1*beta1 + 2*beta1); c0 = alpha*alpha; a1 = 2*(1 - alpha); a2 = -(1 - alpha)*(1 - alpha); End; If Type == 4 Then Begin If CurrentBar <= N then Filt = Price; beta1 = 2.415*(1 - Cosine(360 / Period)); alpha = -beta1 + SquareRoot(beta1*beta1 + 2*beta1); c0 = alpha*alpha / 4; b1 = 2; b2 = 1; a1 = 2*(1 - alpha); a2 = -(1 - alpha)*(1 - alpha); End; If Type == 5 Then Begin c0 = 1 / 4; b1 = 2; b2 = 1; End; If Type == 6 Then Begin If CurrentBar <= N then Filt = 0; alpha = (Cosine(360/Period) + Sine(360/Period) - 1) / Cosine(360/Period); c0 = 1 - alpha / 2; b1 = -1; a1 = 1 - alpha; End; If Type == 7 Then Begin If CurrentBar <= N then Filt = 0; beta1 = 2.415*(1 - Cosine(360 / Period)); alpha = -beta1 + SquareRoot(beta1*beta1 + 2*beta1); c0 = (1 - alpha / 2)*(1 - alpha / 2); b1 = -2; b2 = 1; a1 = 2*(1 - alpha); a2 = -(1 - alpha)*(1 - alpha); End; If Type == 8 Then Begin If CurrentBar <= N then Filt = Price; beta1 = Cosine(360 / Period); gamma1 = 1 / Cosine(720*delta1 / Period); alpha = gamma1 - SquareRoot(gamma1*gamma1 - 1); c0 = (1 - alpha) / 2; b2 = -1; a1 = beta1*(1 + alpha); a2 = -alpha; End; If Type == 9 Then Begin If CurrentBar <= N then Filt = Price; beta1 = Cosine(360 / Period); gamma1 = 1 / Cosine(720*delta1 / Period); alpha = gamma1 - SquareRoot(gamma1*gamma1 - 1); c0 = (1 + alpha) / 2; b1 = -2*beta1; b2 = 1; a1 = beta1*(1 + alpha); a2 = -alpha; End; If CurrentBar > N Then Begin Filt = c0*(b0*price + b1*Price[1] + b2*Price[2]) + a1*Filt[1] +a2*Filt[2] - c1*Price[N]; Plot1(Filt, "Swiss"); End; 2. 기타 아래와 같이 간단하게 크로스업 전략을 짰는데요. 이상하게도 지표에는 나오는데 전략은 신호가 안나옵니다. 뭐가 문제인 지 잘 모르겠습니다. Inputs : N(0),Period(20),delta1(0.1),Type(1); #Type : ema(1), sma(2),Gauss(3),Butter(4),Smooth(5),HP(6),2PHP(7),BP(8),BS(9) Vars: Price(0), c0(1),c1(0),b0(1),b1(0),b2(0),a1(0),a2(0),alpha(0),beta1(0),gamma1(0),Filt(0); Price = (H+L)/2; If Type == 1 Then Begin If CurrentBar <= N then Filt = Price; alpha = (Cosine(360/Period) + Sine(360/Period) - 1) / Cosine(360/Period); b0 = alpha; a1 = 1 - alpha; End; If Type == 2 Then Begin If CurrentBar <= N then Filt = Price; c1 = 1 / N; b0 = 1 / N; a1 = 1; End; If Type == 3 Then Begin If CurrentBar <= N then Filt = Price; beta1 = 2.415*(1 - Cosine(360 / Period)); alpha = -beta1 + SquareRoot(beta1*beta1 + 2*beta1); c0 = alpha*alpha; a1 = 2*(1 - alpha); a2 = -(1 - alpha)*(1 - alpha); End; If Type == 4 Then Begin If CurrentBar <= N then Filt = Price; beta1 = 2.415*(1 - Cosine(360 / Period)); alpha = -beta1 + SquareRoot(beta1*beta1 + 2*beta1); c0 = alpha*alpha / 4; b1 = 2; b2 = 1; a1 = 2*(1 - alpha); a2 = -(1 - alpha)*(1 - alpha); End; If Type == 5 Then Begin c0 = 1 / 4; b1 = 2; b2 = 1; End; If Type == 6 Then Begin If CurrentBar <= N then Filt = 0; alpha = (Cosine(360/Period) + Sine(360/Period) - 1) / Cosine(360/Period); c0 = 1 - alpha / 2; b1 = -1; a1 = 1 - alpha; End; If Type == 7 Then Begin If CurrentBar <= N then Filt = 0; beta1 = 2.415*(1 - Cosine(360 / Period)); alpha = -beta1 + SquareRoot(beta1*beta1 + 2*beta1); c0 = (1 - alpha / 2)*(1 - alpha / 2); b1 = -2; b2 = 1; a1 = 2*(1 - alpha); a2 = -(1 - alpha)*(1 - alpha); End; If Type == 8 Then Begin If CurrentBar <= N then Filt = Price; beta1 = Cosine(360 / Period); gamma1 = 1 / Cosine(720*delta1 / Period); alpha = gamma1 - SquareRoot(gamma1*gamma1 - 1); c0 = (1 - alpha) / 2; b2 = -1; a1 = beta1*(1 + alpha); a2 = -alpha; End; If Type == 9 Then Begin If CurrentBar <= N then Filt = Price; beta1 = Cosine(360 / Period); gamma1 = 1 / Cosine(720*delta1 / Period); alpha = gamma1 - SquareRoot(gamma1*gamma1 - 1); c0 = (1 + alpha) / 2; b1 = -2*beta1; b2 = 1; a1 = beta1*(1 + alpha); a2 = -alpha; End; If CurrentBar > N Then Begin Filt = c0*(b0*price + b1*Price[1] + b2*Price[2]) + a1*Filt[1] +a2*Filt[2] - c1*Price[N]; End; input: p(40); if crossup(Filt,ma(Filt,P)) then buy(); if crossdown(filt,ma(Filt,P)) then sell(); 3. 57154 재질문 답변 부탁드립니다.
시스템
답변 3
프로필 이미지

예스스탁 예스스탁 답변

2018-03-22 13:47:19

안녕하세요 예스스탁입니다. 1. 필요없는 지표는 없습니다. 단지 1~9까지 type을 정해 다른 계산방법을 사용하는 부분일 뿐입니다. 볼밴처리해서 답변드립니다. Inputs : N(0),Period(20),delta1(0.1),Type(1),BBP(20),dv(2); #Type : ema(1), sma(2),Gauss(3),Butter(4),Smooth(5),HP(6),2PHP(7),BP(8),BS(9) Var : Price(0), c0(1),c1(0),b0(1),b1(0),b2(0),a1(0),a2(0),alpha(0),beta1(0),gamma1(0),Filt(0); var : SumSqrt(0),cnt(0),Stdv(0),bbup(0),bbdn(0); Price = (H+L)/2; If Type == 1 Then Begin If CurrentBar <= N then Filt = Price; alpha = (Cosine(360/Period) + Sine(360/Period) - 1) / Cosine(360/Period); b0 = alpha; a1 = 1 - alpha; End; If Type == 2 Then Begin If CurrentBar <= N then Filt = Price; c1 = 1 / N; b0 = 1 / N; a1 = 1; End; If Type == 3 Then Begin If CurrentBar <= N then Filt = Price; beta1 = 2.415*(1 - Cosine(360 / Period)); alpha = -beta1 + SquareRoot(beta1*beta1 + 2*beta1); c0 = alpha*alpha; a1 = 2*(1 - alpha); a2 = -(1 - alpha)*(1 - alpha); End; If Type == 4 Then Begin If CurrentBar <= N then Filt = Price; beta1 = 2.415*(1 - Cosine(360 / Period)); alpha = -beta1 + SquareRoot(beta1*beta1 + 2*beta1); c0 = alpha*alpha / 4; b1 = 2; b2 = 1; a1 = 2*(1 - alpha); a2 = -(1 - alpha)*(1 - alpha); End; If Type == 5 Then Begin c0 = 1 / 4; b1 = 2; b2 = 1; End; If Type == 6 Then Begin If CurrentBar <= N then Filt = 0; alpha = (Cosine(360/Period) + Sine(360/Period) - 1) / Cosine(360/Period); c0 = 1 - alpha / 2; b1 = -1; a1 = 1 - alpha; End; If Type == 7 Then Begin If CurrentBar <= N then Filt = 0; beta1 = 2.415*(1 - Cosine(360 / Period)); alpha = -beta1 + SquareRoot(beta1*beta1 + 2*beta1); c0 = (1 - alpha / 2)*(1 - alpha / 2); b1 = -2; b2 = 1; a1 = 2*(1 - alpha); a2 = -(1 - alpha)*(1 - alpha); End; If Type == 8 Then Begin If CurrentBar <= N then Filt = Price; beta1 = Cosine(360 / Period); gamma1 = 1 / Cosine(720*delta1 / Period); alpha = gamma1 - SquareRoot(gamma1*gamma1 - 1); c0 = (1 - alpha) / 2; b2 = -1; a1 = beta1*(1 + alpha); a2 = -alpha; End; If Type == 9 Then Begin If CurrentBar <= N then Filt = Price; beta1 = Cosine(360 / Period); gamma1 = 1 / Cosine(720*delta1 / Period); alpha = gamma1 - SquareRoot(gamma1*gamma1 - 1); c0 = (1 + alpha) / 2; b1 = -2*beta1; b2 = 1; a1 = beta1*(1 + alpha); a2 = -alpha; End; If CurrentBar > N Then Begin Filt = c0*(b0*price + b1*Price[1] + b2*Price[2]) + a1*Filt[1] +a2*Filt[2] - c1*Price[N]; SumSqrt = 0; For cnt = 0 To BBP - 1 { SumSqrt = SumSqrt + (C[cnt] - Filt)^2; } Stdv = SquareRoot(SumSqrt / BBP); BBup = Filt+stdv*dv; BBdn = Filt-stdv*dv; Plot1(Filt, "Swiss"); Plot2(bbup, "상단"); Plot3(bbdn, "하단"); End; 2 첨부된 그림과 같이 신호 많이 나오고 있습니다. 3 수정한 식입니다. 적용해 보시고 의도와 다르시면 다시 글 올려주시기 바랍니다. Var : PP(0), R3(0),R2(0), R1(0), S1(0), S2(0), S3(0); var : score(0); PP = ( DayHigh(1) + DayClose(1) + DayLow(1) )/3; //피봇선 R3 = DayHigh(1) + 2*(PP - DayLow(1)); //3차저항 R2 = PP+DayHigh(1)-DayLow(1); //2차저항 R1 = 2 * PP - DayLow(1); //1차저항 S1 = 2 * PP - DayHigh(1); //1차지지 S2 = PP-DayHigh(1)+DayLow(1); //2차지지 S3 = DayLow(1) - 2*(DayHigh(1) - PP); //3차지지 if bdate != bdate[1] Then{ var1 = 0; if dayopen > S1 Then var1 = 1; if dayopen > S2 Then var1 = 2; if dayopen > S3 Then var1 = 3; if dayopen > PP Then var1 = 4; if dayopen > R1 Then var1 = 5; if dayopen > R2 Then var1 = 6; if dayopen > R3 Then var1 = 7; } var2 = 0; if c > S1 Then var2 = 1; if c > S2 Then var2 = 2; if c > S3 Then var2 = 3; if c > PP Then var2 = 4; if c > R1 Then var2 = 5; if c > R2 Then var2 = 6; if c > R3 Then var2 = 7; plot1(var2-var1); 즐거운 하루되세요 > 잡다백수 님이 쓴 글입니다. > 제목 : 문의드립니다. > 도움주시는 덕분에 도전하고 있습니다. 매번 감사합니다. 1.기타 이 지표에서 시스템차트에는 필요없는 지표를 삭제부탁드립니다. 그리고 Filt로 이평과 그에 따른 볼린저밴드 표시도 부탁드립니다. Inputs : N(0),Period(20),delta1(0.1),Type(1); #Type : ema(1), sma(2),Gauss(3),Butter(4),Smooth(5),HP(6),2PHP(7),BP(8),BS(9) Vars: Price(0), c0(1),c1(0),b0(1),b1(0),b2(0),a1(0),a2(0),alpha(0),beta1(0),gamma1(0),Filt(0); Price = (H+L)/2; If Type == 1 Then Begin If CurrentBar <= N then Filt = Price; alpha = (Cosine(360/Period) + Sine(360/Period) - 1) / Cosine(360/Period); b0 = alpha; a1 = 1 - alpha; End; If Type == 2 Then Begin If CurrentBar <= N then Filt = Price; c1 = 1 / N; b0 = 1 / N; a1 = 1; End; If Type == 3 Then Begin If CurrentBar <= N then Filt = Price; beta1 = 2.415*(1 - Cosine(360 / Period)); alpha = -beta1 + SquareRoot(beta1*beta1 + 2*beta1); c0 = alpha*alpha; a1 = 2*(1 - alpha); a2 = -(1 - alpha)*(1 - alpha); End; If Type == 4 Then Begin If CurrentBar <= N then Filt = Price; beta1 = 2.415*(1 - Cosine(360 / Period)); alpha = -beta1 + SquareRoot(beta1*beta1 + 2*beta1); c0 = alpha*alpha / 4; b1 = 2; b2 = 1; a1 = 2*(1 - alpha); a2 = -(1 - alpha)*(1 - alpha); End; If Type == 5 Then Begin c0 = 1 / 4; b1 = 2; b2 = 1; End; If Type == 6 Then Begin If CurrentBar <= N then Filt = 0; alpha = (Cosine(360/Period) + Sine(360/Period) - 1) / Cosine(360/Period); c0 = 1 - alpha / 2; b1 = -1; a1 = 1 - alpha; End; If Type == 7 Then Begin If CurrentBar <= N then Filt = 0; beta1 = 2.415*(1 - Cosine(360 / Period)); alpha = -beta1 + SquareRoot(beta1*beta1 + 2*beta1); c0 = (1 - alpha / 2)*(1 - alpha / 2); b1 = -2; b2 = 1; a1 = 2*(1 - alpha); a2 = -(1 - alpha)*(1 - alpha); End; If Type == 8 Then Begin If CurrentBar <= N then Filt = Price; beta1 = Cosine(360 / Period); gamma1 = 1 / Cosine(720*delta1 / Period); alpha = gamma1 - SquareRoot(gamma1*gamma1 - 1); c0 = (1 - alpha) / 2; b2 = -1; a1 = beta1*(1 + alpha); a2 = -alpha; End; If Type == 9 Then Begin If CurrentBar <= N then Filt = Price; beta1 = Cosine(360 / Period); gamma1 = 1 / Cosine(720*delta1 / Period); alpha = gamma1 - SquareRoot(gamma1*gamma1 - 1); c0 = (1 + alpha) / 2; b1 = -2*beta1; b2 = 1; a1 = beta1*(1 + alpha); a2 = -alpha; End; If CurrentBar > N Then Begin Filt = c0*(b0*price + b1*Price[1] + b2*Price[2]) + a1*Filt[1] +a2*Filt[2] - c1*Price[N]; Plot1(Filt, "Swiss"); End; 2. 기타 아래와 같이 간단하게 크로스업 전략을 짰는데요. 이상하게도 지표에는 나오는데 전략은 신호가 안나옵니다. 뭐가 문제인 지 잘 모르겠습니다. Inputs : N(0),Period(20),delta1(0.1),Type(1); #Type : ema(1), sma(2),Gauss(3),Butter(4),Smooth(5),HP(6),2PHP(7),BP(8),BS(9) Vars: Price(0), c0(1),c1(0),b0(1),b1(0),b2(0),a1(0),a2(0),alpha(0),beta1(0),gamma1(0),Filt(0); Price = (H+L)/2; If Type == 1 Then Begin If CurrentBar <= N then Filt = Price; alpha = (Cosine(360/Period) + Sine(360/Period) - 1) / Cosine(360/Period); b0 = alpha; a1 = 1 - alpha; End; If Type == 2 Then Begin If CurrentBar <= N then Filt = Price; c1 = 1 / N; b0 = 1 / N; a1 = 1; End; If Type == 3 Then Begin If CurrentBar <= N then Filt = Price; beta1 = 2.415*(1 - Cosine(360 / Period)); alpha = -beta1 + SquareRoot(beta1*beta1 + 2*beta1); c0 = alpha*alpha; a1 = 2*(1 - alpha); a2 = -(1 - alpha)*(1 - alpha); End; If Type == 4 Then Begin If CurrentBar <= N then Filt = Price; beta1 = 2.415*(1 - Cosine(360 / Period)); alpha = -beta1 + SquareRoot(beta1*beta1 + 2*beta1); c0 = alpha*alpha / 4; b1 = 2; b2 = 1; a1 = 2*(1 - alpha); a2 = -(1 - alpha)*(1 - alpha); End; If Type == 5 Then Begin c0 = 1 / 4; b1 = 2; b2 = 1; End; If Type == 6 Then Begin If CurrentBar <= N then Filt = 0; alpha = (Cosine(360/Period) + Sine(360/Period) - 1) / Cosine(360/Period); c0 = 1 - alpha / 2; b1 = -1; a1 = 1 - alpha; End; If Type == 7 Then Begin If CurrentBar <= N then Filt = 0; beta1 = 2.415*(1 - Cosine(360 / Period)); alpha = -beta1 + SquareRoot(beta1*beta1 + 2*beta1); c0 = (1 - alpha / 2)*(1 - alpha / 2); b1 = -2; b2 = 1; a1 = 2*(1 - alpha); a2 = -(1 - alpha)*(1 - alpha); End; If Type == 8 Then Begin If CurrentBar <= N then Filt = Price; beta1 = Cosine(360 / Period); gamma1 = 1 / Cosine(720*delta1 / Period); alpha = gamma1 - SquareRoot(gamma1*gamma1 - 1); c0 = (1 - alpha) / 2; b2 = -1; a1 = beta1*(1 + alpha); a2 = -alpha; End; If Type == 9 Then Begin If CurrentBar <= N then Filt = Price; beta1 = Cosine(360 / Period); gamma1 = 1 / Cosine(720*delta1 / Period); alpha = gamma1 - SquareRoot(gamma1*gamma1 - 1); c0 = (1 + alpha) / 2; b1 = -2*beta1; b2 = 1; a1 = beta1*(1 + alpha); a2 = -alpha; End; If CurrentBar > N Then Begin Filt = c0*(b0*price + b1*Price[1] + b2*Price[2]) + a1*Filt[1] +a2*Filt[2] - c1*Price[N]; End; input: p(40); if crossup(Filt,ma(Filt,P)) then buy(); if crossdown(filt,ma(Filt,P)) then sell(); 3. 57154 재질문 답변 부탁드립니다.
프로필 이미지

잡다백수

2018-03-22 14:03:27

코딩감사합니다. 1번식 FIlt 말고 FILT의 이평값의 볼린저밴드를 그리려면 어떻게 수정해야 하나요? > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 문의드립니다. > 안녕하세요 예스스탁입니다. 1. 필요없는 지표는 없습니다. 단지 1~9까지 type을 정해 다른 계산방법을 사용하는 부분일 뿐입니다. 볼밴처리해서 답변드립니다. Inputs : N(0),Period(20),delta1(0.1),Type(1),BBP(20),dv(2); #Type : ema(1), sma(2),Gauss(3),Butter(4),Smooth(5),HP(6),2PHP(7),BP(8),BS(9) Var : Price(0), c0(1),c1(0),b0(1),b1(0),b2(0),a1(0),a2(0),alpha(0),beta1(0),gamma1(0),Filt(0); var : SumSqrt(0),cnt(0),Stdv(0),bbup(0),bbdn(0); Price = (H+L)/2; If Type == 1 Then Begin If CurrentBar <= N then Filt = Price; alpha = (Cosine(360/Period) + Sine(360/Period) - 1) / Cosine(360/Period); b0 = alpha; a1 = 1 - alpha; End; If Type == 2 Then Begin If CurrentBar <= N then Filt = Price; c1 = 1 / N; b0 = 1 / N; a1 = 1; End; If Type == 3 Then Begin If CurrentBar <= N then Filt = Price; beta1 = 2.415*(1 - Cosine(360 / Period)); alpha = -beta1 + SquareRoot(beta1*beta1 + 2*beta1); c0 = alpha*alpha; a1 = 2*(1 - alpha); a2 = -(1 - alpha)*(1 - alpha); End; If Type == 4 Then Begin If CurrentBar <= N then Filt = Price; beta1 = 2.415*(1 - Cosine(360 / Period)); alpha = -beta1 + SquareRoot(beta1*beta1 + 2*beta1); c0 = alpha*alpha / 4; b1 = 2; b2 = 1; a1 = 2*(1 - alpha); a2 = -(1 - alpha)*(1 - alpha); End; If Type == 5 Then Begin c0 = 1 / 4; b1 = 2; b2 = 1; End; If Type == 6 Then Begin If CurrentBar <= N then Filt = 0; alpha = (Cosine(360/Period) + Sine(360/Period) - 1) / Cosine(360/Period); c0 = 1 - alpha / 2; b1 = -1; a1 = 1 - alpha; End; If Type == 7 Then Begin If CurrentBar <= N then Filt = 0; beta1 = 2.415*(1 - Cosine(360 / Period)); alpha = -beta1 + SquareRoot(beta1*beta1 + 2*beta1); c0 = (1 - alpha / 2)*(1 - alpha / 2); b1 = -2; b2 = 1; a1 = 2*(1 - alpha); a2 = -(1 - alpha)*(1 - alpha); End; If Type == 8 Then Begin If CurrentBar <= N then Filt = Price; beta1 = Cosine(360 / Period); gamma1 = 1 / Cosine(720*delta1 / Period); alpha = gamma1 - SquareRoot(gamma1*gamma1 - 1); c0 = (1 - alpha) / 2; b2 = -1; a1 = beta1*(1 + alpha); a2 = -alpha; End; If Type == 9 Then Begin If CurrentBar <= N then Filt = Price; beta1 = Cosine(360 / Period); gamma1 = 1 / Cosine(720*delta1 / Period); alpha = gamma1 - SquareRoot(gamma1*gamma1 - 1); c0 = (1 + alpha) / 2; b1 = -2*beta1; b2 = 1; a1 = beta1*(1 + alpha); a2 = -alpha; End; If CurrentBar > N Then Begin Filt = c0*(b0*price + b1*Price[1] + b2*Price[2]) + a1*Filt[1] +a2*Filt[2] - c1*Price[N]; SumSqrt = 0; For cnt = 0 To BBP - 1 { SumSqrt = SumSqrt + (C[cnt] - Filt)^2; } Stdv = SquareRoot(SumSqrt / BBP); BBup = Filt+stdv*dv; BBdn = Filt-stdv*dv; Plot1(Filt, "Swiss"); Plot2(bbup, "상단"); Plot3(bbdn, "하단"); End; 2 첨부된 그림과 같이 신호 많이 나오고 있습니다. 3 수정한 식입니다. 적용해 보시고 의도와 다르시면 다시 글 올려주시기 바랍니다. Var : PP(0), R3(0),R2(0), R1(0), S1(0), S2(0), S3(0); var : score(0); PP = ( DayHigh(1) + DayClose(1) + DayLow(1) )/3; //피봇선 R3 = DayHigh(1) + 2*(PP - DayLow(1)); //3차저항 R2 = PP+DayHigh(1)-DayLow(1); //2차저항 R1 = 2 * PP - DayLow(1); //1차저항 S1 = 2 * PP - DayHigh(1); //1차지지 S2 = PP-DayHigh(1)+DayLow(1); //2차지지 S3 = DayLow(1) - 2*(DayHigh(1) - PP); //3차지지 if bdate != bdate[1] Then{ var1 = 0; if dayopen > S1 Then var1 = 1; if dayopen > S2 Then var1 = 2; if dayopen > S3 Then var1 = 3; if dayopen > PP Then var1 = 4; if dayopen > R1 Then var1 = 5; if dayopen > R2 Then var1 = 6; if dayopen > R3 Then var1 = 7; } var2 = 0; if c > S1 Then var2 = 1; if c > S2 Then var2 = 2; if c > S3 Then var2 = 3; if c > PP Then var2 = 4; if c > R1 Then var2 = 5; if c > R2 Then var2 = 6; if c > R3 Then var2 = 7; plot1(var2-var1); 즐거운 하루되세요 > 잡다백수 님이 쓴 글입니다. > 제목 : 문의드립니다. > 도움주시는 덕분에 도전하고 있습니다. 매번 감사합니다. 1.기타 이 지표에서 시스템차트에는 필요없는 지표를 삭제부탁드립니다. 그리고 Filt로 이평과 그에 따른 볼린저밴드 표시도 부탁드립니다. Inputs : N(0),Period(20),delta1(0.1),Type(1); #Type : ema(1), sma(2),Gauss(3),Butter(4),Smooth(5),HP(6),2PHP(7),BP(8),BS(9) Vars: Price(0), c0(1),c1(0),b0(1),b1(0),b2(0),a1(0),a2(0),alpha(0),beta1(0),gamma1(0),Filt(0); Price = (H+L)/2; If Type == 1 Then Begin If CurrentBar <= N then Filt = Price; alpha = (Cosine(360/Period) + Sine(360/Period) - 1) / Cosine(360/Period); b0 = alpha; a1 = 1 - alpha; End; If Type == 2 Then Begin If CurrentBar <= N then Filt = Price; c1 = 1 / N; b0 = 1 / N; a1 = 1; End; If Type == 3 Then Begin If CurrentBar <= N then Filt = Price; beta1 = 2.415*(1 - Cosine(360 / Period)); alpha = -beta1 + SquareRoot(beta1*beta1 + 2*beta1); c0 = alpha*alpha; a1 = 2*(1 - alpha); a2 = -(1 - alpha)*(1 - alpha); End; If Type == 4 Then Begin If CurrentBar <= N then Filt = Price; beta1 = 2.415*(1 - Cosine(360 / Period)); alpha = -beta1 + SquareRoot(beta1*beta1 + 2*beta1); c0 = alpha*alpha / 4; b1 = 2; b2 = 1; a1 = 2*(1 - alpha); a2 = -(1 - alpha)*(1 - alpha); End; If Type == 5 Then Begin c0 = 1 / 4; b1 = 2; b2 = 1; End; If Type == 6 Then Begin If CurrentBar <= N then Filt = 0; alpha = (Cosine(360/Period) + Sine(360/Period) - 1) / Cosine(360/Period); c0 = 1 - alpha / 2; b1 = -1; a1 = 1 - alpha; End; If Type == 7 Then Begin If CurrentBar <= N then Filt = 0; beta1 = 2.415*(1 - Cosine(360 / Period)); alpha = -beta1 + SquareRoot(beta1*beta1 + 2*beta1); c0 = (1 - alpha / 2)*(1 - alpha / 2); b1 = -2; b2 = 1; a1 = 2*(1 - alpha); a2 = -(1 - alpha)*(1 - alpha); End; If Type == 8 Then Begin If CurrentBar <= N then Filt = Price; beta1 = Cosine(360 / Period); gamma1 = 1 / Cosine(720*delta1 / Period); alpha = gamma1 - SquareRoot(gamma1*gamma1 - 1); c0 = (1 - alpha) / 2; b2 = -1; a1 = beta1*(1 + alpha); a2 = -alpha; End; If Type == 9 Then Begin If CurrentBar <= N then Filt = Price; beta1 = Cosine(360 / Period); gamma1 = 1 / Cosine(720*delta1 / Period); alpha = gamma1 - SquareRoot(gamma1*gamma1 - 1); c0 = (1 + alpha) / 2; b1 = -2*beta1; b2 = 1; a1 = beta1*(1 + alpha); a2 = -alpha; End; If CurrentBar > N Then Begin Filt = c0*(b0*price + b1*Price[1] + b2*Price[2]) + a1*Filt[1] +a2*Filt[2] - c1*Price[N]; Plot1(Filt, "Swiss"); End; 2. 기타 아래와 같이 간단하게 크로스업 전략을 짰는데요. 이상하게도 지표에는 나오는데 전략은 신호가 안나옵니다. 뭐가 문제인 지 잘 모르겠습니다. Inputs : N(0),Period(20),delta1(0.1),Type(1); #Type : ema(1), sma(2),Gauss(3),Butter(4),Smooth(5),HP(6),2PHP(7),BP(8),BS(9) Vars: Price(0), c0(1),c1(0),b0(1),b1(0),b2(0),a1(0),a2(0),alpha(0),beta1(0),gamma1(0),Filt(0); Price = (H+L)/2; If Type == 1 Then Begin If CurrentBar <= N then Filt = Price; alpha = (Cosine(360/Period) + Sine(360/Period) - 1) / Cosine(360/Period); b0 = alpha; a1 = 1 - alpha; End; If Type == 2 Then Begin If CurrentBar <= N then Filt = Price; c1 = 1 / N; b0 = 1 / N; a1 = 1; End; If Type == 3 Then Begin If CurrentBar <= N then Filt = Price; beta1 = 2.415*(1 - Cosine(360 / Period)); alpha = -beta1 + SquareRoot(beta1*beta1 + 2*beta1); c0 = alpha*alpha; a1 = 2*(1 - alpha); a2 = -(1 - alpha)*(1 - alpha); End; If Type == 4 Then Begin If CurrentBar <= N then Filt = Price; beta1 = 2.415*(1 - Cosine(360 / Period)); alpha = -beta1 + SquareRoot(beta1*beta1 + 2*beta1); c0 = alpha*alpha / 4; b1 = 2; b2 = 1; a1 = 2*(1 - alpha); a2 = -(1 - alpha)*(1 - alpha); End; If Type == 5 Then Begin c0 = 1 / 4; b1 = 2; b2 = 1; End; If Type == 6 Then Begin If CurrentBar <= N then Filt = 0; alpha = (Cosine(360/Period) + Sine(360/Period) - 1) / Cosine(360/Period); c0 = 1 - alpha / 2; b1 = -1; a1 = 1 - alpha; End; If Type == 7 Then Begin If CurrentBar <= N then Filt = 0; beta1 = 2.415*(1 - Cosine(360 / Period)); alpha = -beta1 + SquareRoot(beta1*beta1 + 2*beta1); c0 = (1 - alpha / 2)*(1 - alpha / 2); b1 = -2; b2 = 1; a1 = 2*(1 - alpha); a2 = -(1 - alpha)*(1 - alpha); End; If Type == 8 Then Begin If CurrentBar <= N then Filt = Price; beta1 = Cosine(360 / Period); gamma1 = 1 / Cosine(720*delta1 / Period); alpha = gamma1 - SquareRoot(gamma1*gamma1 - 1); c0 = (1 - alpha) / 2; b2 = -1; a1 = beta1*(1 + alpha); a2 = -alpha; End; If Type == 9 Then Begin If CurrentBar <= N then Filt = Price; beta1 = Cosine(360 / Period); gamma1 = 1 / Cosine(720*delta1 / Period); alpha = gamma1 - SquareRoot(gamma1*gamma1 - 1); c0 = (1 + alpha) / 2; b1 = -2*beta1; b2 = 1; a1 = beta1*(1 + alpha); a2 = -alpha; End; If CurrentBar > N Then Begin Filt = c0*(b0*price + b1*Price[1] + b2*Price[2]) + a1*Filt[1] +a2*Filt[2] - c1*Price[N]; End; input: p(40); if crossup(Filt,ma(Filt,P)) then buy(); if crossdown(filt,ma(Filt,P)) then sell(); 3. 57154 재질문 답변 부탁드립니다.
프로필 이미지

예스스탁 예스스탁 답변

2018-03-22 14:10:20

안녕하세요 예스스탁입니다. Inputs : N(0),Period(20),delta1(0.1),Type(1),BBP(20),dv(2); #Type : ema(1), sma(2),Gauss(3),Butter(4),Smooth(5),HP(6),2PHP(7),BP(8),BS(9) Var : Price(0), c0(1),c1(0),b0(1),b1(0),b2(0),a1(0),a2(0),alpha(0),beta1(0),gamma1(0),Filt(0); var : SumSqrt(0),cnt(0),Stdv(0),bbup(0),bbdn(0),mav(0); Price = (H+L)/2; If Type == 1 Then Begin If CurrentBar <= N then Filt = Price; alpha = (Cosine(360/Period) + Sine(360/Period) - 1) / Cosine(360/Period); b0 = alpha; a1 = 1 - alpha; End; If Type == 2 Then Begin If CurrentBar <= N then Filt = Price; c1 = 1 / N; b0 = 1 / N; a1 = 1; End; If Type == 3 Then Begin If CurrentBar <= N then Filt = Price; beta1 = 2.415*(1 - Cosine(360 / Period)); alpha = -beta1 + SquareRoot(beta1*beta1 + 2*beta1); c0 = alpha*alpha; a1 = 2*(1 - alpha); a2 = -(1 - alpha)*(1 - alpha); End; If Type == 4 Then Begin If CurrentBar <= N then Filt = Price; beta1 = 2.415*(1 - Cosine(360 / Period)); alpha = -beta1 + SquareRoot(beta1*beta1 + 2*beta1); c0 = alpha*alpha / 4; b1 = 2; b2 = 1; a1 = 2*(1 - alpha); a2 = -(1 - alpha)*(1 - alpha); End; If Type == 5 Then Begin c0 = 1 / 4; b1 = 2; b2 = 1; End; If Type == 6 Then Begin If CurrentBar <= N then Filt = 0; alpha = (Cosine(360/Period) + Sine(360/Period) - 1) / Cosine(360/Period); c0 = 1 - alpha / 2; b1 = -1; a1 = 1 - alpha; End; If Type == 7 Then Begin If CurrentBar <= N then Filt = 0; beta1 = 2.415*(1 - Cosine(360 / Period)); alpha = -beta1 + SquareRoot(beta1*beta1 + 2*beta1); c0 = (1 - alpha / 2)*(1 - alpha / 2); b1 = -2; b2 = 1; a1 = 2*(1 - alpha); a2 = -(1 - alpha)*(1 - alpha); End; If Type == 8 Then Begin If CurrentBar <= N then Filt = Price; beta1 = Cosine(360 / Period); gamma1 = 1 / Cosine(720*delta1 / Period); alpha = gamma1 - SquareRoot(gamma1*gamma1 - 1); c0 = (1 - alpha) / 2; b2 = -1; a1 = beta1*(1 + alpha); a2 = -alpha; End; If Type == 9 Then Begin If CurrentBar <= N then Filt = Price; beta1 = Cosine(360 / Period); gamma1 = 1 / Cosine(720*delta1 / Period); alpha = gamma1 - SquareRoot(gamma1*gamma1 - 1); c0 = (1 + alpha) / 2; b1 = -2*beta1; b2 = 1; a1 = beta1*(1 + alpha); a2 = -alpha; End; If CurrentBar > N Then Begin Filt = c0*(b0*price + b1*Price[1] + b2*Price[2]) + a1*Filt[1] +a2*Filt[2] - c1*Price[N]; mav = ma(filt,BBP); SumSqrt = 0; For cnt = 0 To BBP - 1 { SumSqrt = SumSqrt + (C[cnt] - mav)^2; } Stdv = SquareRoot(SumSqrt / BBP); BBup = Filt+stdv*dv; BBdn = Filt-stdv*dv; Plot1(Filt, "Swiss"); Plot2(bbup, "상단"); Plot3(bbdn, "하단"); End; 즐거운 하루되세요 > 잡다백수 님이 쓴 글입니다. > 제목 : Re : Re : 문의드립니다. > 코딩감사합니다. 1번식 FIlt 말고 FILT의 이평값의 볼린저밴드를 그리려면 어떻게 수정해야 하나요? > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 문의드립니다. > 안녕하세요 예스스탁입니다. 1. 필요없는 지표는 없습니다. 단지 1~9까지 type을 정해 다른 계산방법을 사용하는 부분일 뿐입니다. 볼밴처리해서 답변드립니다. Inputs : N(0),Period(20),delta1(0.1),Type(1),BBP(20),dv(2); #Type : ema(1), sma(2),Gauss(3),Butter(4),Smooth(5),HP(6),2PHP(7),BP(8),BS(9) Var : Price(0), c0(1),c1(0),b0(1),b1(0),b2(0),a1(0),a2(0),alpha(0),beta1(0),gamma1(0),Filt(0); var : SumSqrt(0),cnt(0),Stdv(0),bbup(0),bbdn(0); Price = (H+L)/2; If Type == 1 Then Begin If CurrentBar <= N then Filt = Price; alpha = (Cosine(360/Period) + Sine(360/Period) - 1) / Cosine(360/Period); b0 = alpha; a1 = 1 - alpha; End; If Type == 2 Then Begin If CurrentBar <= N then Filt = Price; c1 = 1 / N; b0 = 1 / N; a1 = 1; End; If Type == 3 Then Begin If CurrentBar <= N then Filt = Price; beta1 = 2.415*(1 - Cosine(360 / Period)); alpha = -beta1 + SquareRoot(beta1*beta1 + 2*beta1); c0 = alpha*alpha; a1 = 2*(1 - alpha); a2 = -(1 - alpha)*(1 - alpha); End; If Type == 4 Then Begin If CurrentBar <= N then Filt = Price; beta1 = 2.415*(1 - Cosine(360 / Period)); alpha = -beta1 + SquareRoot(beta1*beta1 + 2*beta1); c0 = alpha*alpha / 4; b1 = 2; b2 = 1; a1 = 2*(1 - alpha); a2 = -(1 - alpha)*(1 - alpha); End; If Type == 5 Then Begin c0 = 1 / 4; b1 = 2; b2 = 1; End; If Type == 6 Then Begin If CurrentBar <= N then Filt = 0; alpha = (Cosine(360/Period) + Sine(360/Period) - 1) / Cosine(360/Period); c0 = 1 - alpha / 2; b1 = -1; a1 = 1 - alpha; End; If Type == 7 Then Begin If CurrentBar <= N then Filt = 0; beta1 = 2.415*(1 - Cosine(360 / Period)); alpha = -beta1 + SquareRoot(beta1*beta1 + 2*beta1); c0 = (1 - alpha / 2)*(1 - alpha / 2); b1 = -2; b2 = 1; a1 = 2*(1 - alpha); a2 = -(1 - alpha)*(1 - alpha); End; If Type == 8 Then Begin If CurrentBar <= N then Filt = Price; beta1 = Cosine(360 / Period); gamma1 = 1 / Cosine(720*delta1 / Period); alpha = gamma1 - SquareRoot(gamma1*gamma1 - 1); c0 = (1 - alpha) / 2; b2 = -1; a1 = beta1*(1 + alpha); a2 = -alpha; End; If Type == 9 Then Begin If CurrentBar <= N then Filt = Price; beta1 = Cosine(360 / Period); gamma1 = 1 / Cosine(720*delta1 / Period); alpha = gamma1 - SquareRoot(gamma1*gamma1 - 1); c0 = (1 + alpha) / 2; b1 = -2*beta1; b2 = 1; a1 = beta1*(1 + alpha); a2 = -alpha; End; If CurrentBar > N Then Begin Filt = c0*(b0*price + b1*Price[1] + b2*Price[2]) + a1*Filt[1] +a2*Filt[2] - c1*Price[N]; SumSqrt = 0; For cnt = 0 To BBP - 1 { SumSqrt = SumSqrt + (C[cnt] - Filt)^2; } Stdv = SquareRoot(SumSqrt / BBP); BBup = Filt+stdv*dv; BBdn = Filt-stdv*dv; Plot1(Filt, "Swiss"); Plot2(bbup, "상단"); Plot3(bbdn, "하단"); End; 2 첨부된 그림과 같이 신호 많이 나오고 있습니다. 3 수정한 식입니다. 적용해 보시고 의도와 다르시면 다시 글 올려주시기 바랍니다. Var : PP(0), R3(0),R2(0), R1(0), S1(0), S2(0), S3(0); var : score(0); PP = ( DayHigh(1) + DayClose(1) + DayLow(1) )/3; //피봇선 R3 = DayHigh(1) + 2*(PP - DayLow(1)); //3차저항 R2 = PP+DayHigh(1)-DayLow(1); //2차저항 R1 = 2 * PP - DayLow(1); //1차저항 S1 = 2 * PP - DayHigh(1); //1차지지 S2 = PP-DayHigh(1)+DayLow(1); //2차지지 S3 = DayLow(1) - 2*(DayHigh(1) - PP); //3차지지 if bdate != bdate[1] Then{ var1 = 0; if dayopen > S1 Then var1 = 1; if dayopen > S2 Then var1 = 2; if dayopen > S3 Then var1 = 3; if dayopen > PP Then var1 = 4; if dayopen > R1 Then var1 = 5; if dayopen > R2 Then var1 = 6; if dayopen > R3 Then var1 = 7; } var2 = 0; if c > S1 Then var2 = 1; if c > S2 Then var2 = 2; if c > S3 Then var2 = 3; if c > PP Then var2 = 4; if c > R1 Then var2 = 5; if c > R2 Then var2 = 6; if c > R3 Then var2 = 7; plot1(var2-var1); 즐거운 하루되세요 > 잡다백수 님이 쓴 글입니다. > 제목 : 문의드립니다. > 도움주시는 덕분에 도전하고 있습니다. 매번 감사합니다. 1.기타 이 지표에서 시스템차트에는 필요없는 지표를 삭제부탁드립니다. 그리고 Filt로 이평과 그에 따른 볼린저밴드 표시도 부탁드립니다. Inputs : N(0),Period(20),delta1(0.1),Type(1); #Type : ema(1), sma(2),Gauss(3),Butter(4),Smooth(5),HP(6),2PHP(7),BP(8),BS(9) Vars: Price(0), c0(1),c1(0),b0(1),b1(0),b2(0),a1(0),a2(0),alpha(0),beta1(0),gamma1(0),Filt(0); Price = (H+L)/2; If Type == 1 Then Begin If CurrentBar <= N then Filt = Price; alpha = (Cosine(360/Period) + Sine(360/Period) - 1) / Cosine(360/Period); b0 = alpha; a1 = 1 - alpha; End; If Type == 2 Then Begin If CurrentBar <= N then Filt = Price; c1 = 1 / N; b0 = 1 / N; a1 = 1; End; If Type == 3 Then Begin If CurrentBar <= N then Filt = Price; beta1 = 2.415*(1 - Cosine(360 / Period)); alpha = -beta1 + SquareRoot(beta1*beta1 + 2*beta1); c0 = alpha*alpha; a1 = 2*(1 - alpha); a2 = -(1 - alpha)*(1 - alpha); End; If Type == 4 Then Begin If CurrentBar <= N then Filt = Price; beta1 = 2.415*(1 - Cosine(360 / Period)); alpha = -beta1 + SquareRoot(beta1*beta1 + 2*beta1); c0 = alpha*alpha / 4; b1 = 2; b2 = 1; a1 = 2*(1 - alpha); a2 = -(1 - alpha)*(1 - alpha); End; If Type == 5 Then Begin c0 = 1 / 4; b1 = 2; b2 = 1; End; If Type == 6 Then Begin If CurrentBar <= N then Filt = 0; alpha = (Cosine(360/Period) + Sine(360/Period) - 1) / Cosine(360/Period); c0 = 1 - alpha / 2; b1 = -1; a1 = 1 - alpha; End; If Type == 7 Then Begin If CurrentBar <= N then Filt = 0; beta1 = 2.415*(1 - Cosine(360 / Period)); alpha = -beta1 + SquareRoot(beta1*beta1 + 2*beta1); c0 = (1 - alpha / 2)*(1 - alpha / 2); b1 = -2; b2 = 1; a1 = 2*(1 - alpha); a2 = -(1 - alpha)*(1 - alpha); End; If Type == 8 Then Begin If CurrentBar <= N then Filt = Price; beta1 = Cosine(360 / Period); gamma1 = 1 / Cosine(720*delta1 / Period); alpha = gamma1 - SquareRoot(gamma1*gamma1 - 1); c0 = (1 - alpha) / 2; b2 = -1; a1 = beta1*(1 + alpha); a2 = -alpha; End; If Type == 9 Then Begin If CurrentBar <= N then Filt = Price; beta1 = Cosine(360 / Period); gamma1 = 1 / Cosine(720*delta1 / Period); alpha = gamma1 - SquareRoot(gamma1*gamma1 - 1); c0 = (1 + alpha) / 2; b1 = -2*beta1; b2 = 1; a1 = beta1*(1 + alpha); a2 = -alpha; End; If CurrentBar > N Then Begin Filt = c0*(b0*price + b1*Price[1] + b2*Price[2]) + a1*Filt[1] +a2*Filt[2] - c1*Price[N]; Plot1(Filt, "Swiss"); End; 2. 기타 아래와 같이 간단하게 크로스업 전략을 짰는데요. 이상하게도 지표에는 나오는데 전략은 신호가 안나옵니다. 뭐가 문제인 지 잘 모르겠습니다. Inputs : N(0),Period(20),delta1(0.1),Type(1); #Type : ema(1), sma(2),Gauss(3),Butter(4),Smooth(5),HP(6),2PHP(7),BP(8),BS(9) Vars: Price(0), c0(1),c1(0),b0(1),b1(0),b2(0),a1(0),a2(0),alpha(0),beta1(0),gamma1(0),Filt(0); Price = (H+L)/2; If Type == 1 Then Begin If CurrentBar <= N then Filt = Price; alpha = (Cosine(360/Period) + Sine(360/Period) - 1) / Cosine(360/Period); b0 = alpha; a1 = 1 - alpha; End; If Type == 2 Then Begin If CurrentBar <= N then Filt = Price; c1 = 1 / N; b0 = 1 / N; a1 = 1; End; If Type == 3 Then Begin If CurrentBar <= N then Filt = Price; beta1 = 2.415*(1 - Cosine(360 / Period)); alpha = -beta1 + SquareRoot(beta1*beta1 + 2*beta1); c0 = alpha*alpha; a1 = 2*(1 - alpha); a2 = -(1 - alpha)*(1 - alpha); End; If Type == 4 Then Begin If CurrentBar <= N then Filt = Price; beta1 = 2.415*(1 - Cosine(360 / Period)); alpha = -beta1 + SquareRoot(beta1*beta1 + 2*beta1); c0 = alpha*alpha / 4; b1 = 2; b2 = 1; a1 = 2*(1 - alpha); a2 = -(1 - alpha)*(1 - alpha); End; If Type == 5 Then Begin c0 = 1 / 4; b1 = 2; b2 = 1; End; If Type == 6 Then Begin If CurrentBar <= N then Filt = 0; alpha = (Cosine(360/Period) + Sine(360/Period) - 1) / Cosine(360/Period); c0 = 1 - alpha / 2; b1 = -1; a1 = 1 - alpha; End; If Type == 7 Then Begin If CurrentBar <= N then Filt = 0; beta1 = 2.415*(1 - Cosine(360 / Period)); alpha = -beta1 + SquareRoot(beta1*beta1 + 2*beta1); c0 = (1 - alpha / 2)*(1 - alpha / 2); b1 = -2; b2 = 1; a1 = 2*(1 - alpha); a2 = -(1 - alpha)*(1 - alpha); End; If Type == 8 Then Begin If CurrentBar <= N then Filt = Price; beta1 = Cosine(360 / Period); gamma1 = 1 / Cosine(720*delta1 / Period); alpha = gamma1 - SquareRoot(gamma1*gamma1 - 1); c0 = (1 - alpha) / 2; b2 = -1; a1 = beta1*(1 + alpha); a2 = -alpha; End; If Type == 9 Then Begin If CurrentBar <= N then Filt = Price; beta1 = Cosine(360 / Period); gamma1 = 1 / Cosine(720*delta1 / Period); alpha = gamma1 - SquareRoot(gamma1*gamma1 - 1); c0 = (1 + alpha) / 2; b1 = -2*beta1; b2 = 1; a1 = beta1*(1 + alpha); a2 = -alpha; End; If CurrentBar > N Then Begin Filt = c0*(b0*price + b1*Price[1] + b2*Price[2]) + a1*Filt[1] +a2*Filt[2] - c1*Price[N]; End; input: p(40); if crossup(Filt,ma(Filt,P)) then buy(); if crossdown(filt,ma(Filt,P)) then sell(); 3. 57154 재질문 답변 부탁드립니다.