Originally Posted by
4Göktürk
================================================== ===
//author KıvanÇ @fr3762 on twitter
//creator @mavilim0732 on twitter
study("TrendStop", overlay=true)
pr1=input(21, "EMA period")
pr2=input(2, "normal/vwap", minval=1, maxval=2)
len = input(14, title="DIRECTIONAL IND. Length")
up = change(high)
down = -change(low)
truerange = rma(tr, len)
plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, len) / truerange)
minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, len) / truerange)
M1=ema(close,pr2)
MACDfastLength = input(12)
MACDslowlength = input(26)
MACD = ema(close, MACDfastLength) - ema(close, MACDslowlength)
K1=iff(pr2<2, M1, sum(close*volume, pr1)/sum(volume, pr1))
K2=valuewhen(MACD>0 and plus>minus, K1, 0)
K3=K2*0.975
plot(K2, linewidth=2, color=green)
plot(K3, linewidth=3, color=red, title="Stop")
================================================== ==
Kıvanç hocanın TrendStop'u çevirebilir misiniz? Teş. ederim şimdiden..
tr, change, fixnan, rma gibi tradingview komutlarını doğru yorumladıysam, böyle bir şey idealcesi;
(kodda volume kullanılıyor, düzey1+ lisans gerektirir)
Kod:
var pr1 = 21;
var pr2 = 2;
var len = 14;
var C = Sistem.GrafikFiyatSec("Kapanis");
var H = Sistem.GrafikFiyatSec("Yuksek");
var L = Sistem.GrafikFiyatSec("Dusuk");
var Vol = Sistem.GrafikFiyatSec("Lot");
var up = Sistem.Liste(0);
var down = Sistem.Liste(0);
var tr = Sistem.Liste(0);
var truerange = Sistem.Liste(0);
var x = Sistem.Liste(0);
var y = Sistem.Liste(0);
var rmax = Sistem.Liste(0);
var rmay = Sistem.Liste(0);
var plus = Sistem.Liste(0);
var minus = Sistem.Liste(0);
var Hcm2 = Sistem.Liste(0);
var k1 = Sistem.Liste(0);
var k2 = Sistem.Liste(0);
var k3 = Sistem.Liste(0);
var M1 = Sistem.MA(C, "Exp", pr2);
var MACD = Sistem.MACD(C, 12, 26);
for (int i = 1; i < Sistem.BarSayisi; i++)
Hcm2[i] = Vol[i] * C[i];
var sum1 = Sistem.Sum(Hcm2,pr1);
var sum2 = Sistem.Sum(Vol,pr1);
for (int i = 10; i < Sistem.BarSayisi; i++)
{
up[i] = H[i] - H[i-1];
down[i] = -(L[i] - L[i-1]);
tr[i] = Math.Max(Math.Max(H[i]-L[i],Math.Abs(H[i]-C[i-1])),Math.Abs(L[i]-C[i-1]));
truerange[i] = truerange[i-1] != 0 ? (tr[i] + (len - 1) * truerange[i-1]) / len : 1;
x[i] = up[i] > down[i] && up[i] > 0 ? up[i] : 0;
y[i] = down[i] > up[i] && down[i] > 0 ? down[i] : 0;
rmax[i] = rmax[i-1] != 0 ? (x[i] + (len - 1) * rmax[i-1]) / len : 1;
rmay[i] = rmay[i-1] != 0 ? (y[i] + (len - 1) * rmay[i-1]) / len : 1;
plus[i] = truerange[i] != 0 ? 100 * rmax[i] / truerange[i]: plus[i-1];
minus[i] = truerange[i] != 0 ? 100 * rmay[i] / truerange[i] : minus[i-1];
k1[i] = pr2 < 2 ? M1[i] : sum1[i] / sum2[i];
k2[i] = MACD[i] > 0 && plus[i] > minus[i] ? k1[i] : k2[i-1];
k3[i] = k2[i] * 0.975f;
}
Sistem.Cizgiler[0].Deger = k2;
Sistem.Cizgiler[1].Deger = k3;
Yer İmleri