var rad(var degrees) { return degrees*PI/180; } var rcos(var degrees) { return cos(rad(degrees)); } var rsin(var degrees) { return sin(rad(degrees)); } var DCBandPass(var* Close, var Period, var Bandwidth) { var alpha2; var* HP = series(0, 3); var gamma1; var alpha1; var beta1; var* BP = series(0, 3); var* Peak = series(0, 2); var* Real = series(0, 3); var* counter = series(0, 2); var* DC = series(0, 2); alpha2 = ( rcos(.25*Bandwidth*360 / Period) + rsin(.25*Bandwidth*360 / Period) - 1 ) / rcos(.25*Bandwidth*360 / Period); HP[0] = (1 + alpha2 / 2)*(Close[0] - Close[1]) + (1- alpha2)*HP[1]; beta1 = rcos(360 / Period); gamma1 = 1 / rcos(360*Bandwidth / Period); alpha1 = gamma1 - sqrt(gamma1*gamma1 - 1); BP[0] = .5*(1 - alpha1)*(HP[0] - HP[2]) + beta1*(1 + alpha1)*BP[1] - alpha1*BP[2]; Peak[0] = .991*Peak[1]; if (abs(BP[0]) > Peak[0]) Peak[0] = abs(BP[0]); if (Peak[0] != 0) Real[0] = BP[0] / Peak[0]; DC[0] = DC[1]; if (DC[0] < 6) DC[0] = 6; counter[0] = counter[1] + 1; if (crossOver(Real, 0) || crossUnder(Real, 0)) { DC[0] = 2*counter[0]; if (2*counter[0] > 1.25*DC[1]) { DC[0] = 1.25*DC[1]; } if (2*counter[0] < .8*DC[1]) { DC[0] = .8*DC[1]; } counter[0] = 0; } return DC[0]; } function run() { set(PLOTNOW); BarPeriod = 1; LookBack = 300; StartDate = 20210810; EndDate = 20210816; vars closes = series(priceClose()); var dc = DCBandPass(closes, 20, .7); var ht_dc = HTDcPeriod(closes); var sma = SMA(closes, dc); var ht_sma = SMA(closes, ht_dc); plot("BPDC SMA", sma, MAIN, RED); plot("HTDC SMA", ht_sma, MAIN, BLACK); plot("BP DC", dc, NEW, RED); plot("HT DC", ht_dc, END, BLACK); }
Gamestudio download | chip programmers | Zorro platform | shop | Data Protection Policy
oP group Germany GmbH | Birkenstr. 25-27 | 63549 Ronneburg / Germany | info (at) opgroup.de