커뮤니티
문의드립니다.
2018-03-20 10:25:00
163
글번호 117534
매번 감사합니다.
1. 기타
코딩 변환 부탁드립니다.
Inputs:
Price((H+L)/2),
Type(“BP”),
N(0),
Period(20),
delta1(.1);
Vars:
c0(1),
c1(0),
b0(1),
b1(0),
b2(0),
a1(0),
a2(0),
alpha(0),
beta1(0),
gamma1(0),
Filt(0);
If Type = “EMA” 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 = “SMA” Then Begin
If CurrentBar <= N then Filt = Price;
c1 = 1 / N;
b0 = 1 / N;
a1 = 1;
End;
If Type = “Gauss” 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 = “Butter” 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 = “Smooth” Then Begin
c0 = 1 / 4;
b1 = 2;
b2 = 1;
End;
If Type = “HP” 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 = “2PHP” 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 = “BP” 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 = “BS” 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;
답변 1
예스스탁 예스스탁 답변
2018-03-21 09:46:29
안녕하세요
예스스탁입니다.
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;
즐거운 하루되세요
> 잡다백수 님이 쓴 글입니다.
> 제목 : 문의드립니다.
>
매번 감사합니다.
1. 기타
코딩 변환 부탁드립니다.
Inputs:
Price((H+L)/2),
Type(“BP”),
N(0),
Period(20),
delta1(.1);
Vars:
c0(1),
c1(0),
b0(1),
b1(0),
b2(0),
a1(0),
a2(0),
alpha(0),
beta1(0),
gamma1(0),
Filt(0);
If Type = “EMA” 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 = “SMA” Then Begin
If CurrentBar <= N then Filt = Price;
c1 = 1 / N;
b0 = 1 / N;
a1 = 1;
End;
If Type = “Gauss” 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 = “Butter” 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 = “Smooth” Then Begin
c0 = 1 / 4;
b1 = 2;
b2 = 1;
End;
If Type = “HP” 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 = “2PHP” 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 = “BP” 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 = “BS” 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;