커뮤니티
문의드립니다.
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 재질문 답변 부탁드립니다.
다음글
이전글