Merhabalar bir konuda bana yardımcı olabilir misiniz. Hareketli ortalama 200 ü gectiğinde alım yapsın ve sabit stop 1 izleyen stop ise yüzde 1.5 olsun. Bunu bana kodlayabilir misiniz.
Merhabalar bir konuda bana yardımcı olabilir misiniz. Hareketli ortalama 200 ü gectiğinde alım yapsın ve sabit stop 1 izleyen stop ise yüzde 1.5 olsun. Bunu bana kodlayabilir misiniz.
Kodunuzu buraya yapıştırın neresinde sorun yaşadığınızı belirtin yardımcı olmaya çalışanlar olacaktır. Hiç kod yazamıyorsanız başkasının yazdığı kodu da anlayıp kullanmanız çok zor. Hiç kod bilmeyenlere yardımlarının bir faydası olmayacağını düşündüklerinden kodlayabilenler vakit ayırmak istemiyorlar. Youtube'da bazı videolar var oradan temel atmaya başlayabilirsiniz. Bir diğer seçenek de idealgo kullanmak.
merhaba. aşağıdaki kodu çevirmeye çalıştım ama başaramadım. üstteki orjinal kod. alttaki benim çevirmeye çalıştığım. ilgilenen arkadaşlara şimdiden teşekkürler.
Factor=Param("Factor",2.5,1,10,0.1);
Pd=Param("ATR Periods",2,1,100,1);
Up=(H+L)/2+(Factor*ATR(Pd));
Dn=(H+L)/2-(Factor*ATR(Pd));
iATR=ATR(Pd);
changeOfTrend=0;
flag=flagh=0;
for (i = 1; i <BarCount-1; i++) {
TrendUp[i] = Null;
TrendDown[i] = Null;
trend[i]=1;
if (Close[i]>Up[i-1]) {
trend[i]=1;
if (trend[i-1] == -1) changeOfTrend = 1;
}
else if (Close[i]<Dn[i-1]) {
trend[i]=-1;
if (trend[i-1] == 1) changeOfTrend = 1;
}
else if (trend[i-1]==1) {
trend[i]=1;
changeOfTrend = 0;
}
else if (trend[i-1]==-1) {
trend[i]=-1;
changeOfTrend = 0;
}
if (trend[i]<0 && trend[i-1]>0) {
flag=1;
}
else {
flag=0;
}
if (trend[i]>0 && trend[i-1]<0) {
flagh=1;
}
else {
flagh=0;
}
if (trend[i]>0 && Dn[i]<Dn[i-1]){
Dn[i]=Dn[i-1];
}
if (trend[i]<0 && Up[i]>Up[i-1])
{ Up[i]=Up[i-1];
}
if (flag==1)
{ Up[i]=(H[i]+L[i])/2+(Factor*iATR[i]);;
}
if (flagh==1)
{ Dn[i]=(H[i]+L[i])/2-(Factor*iATR[i]);;
}
if (trend[i]==1) {
TrendUp[i]=Dn[i];
if (changeOfTrend == 1) {
TrendUp[i-1] = TrendDown[i-1];
changeOfTrend = 0;
}
}
else if (trend[i]==-1) {
TrendDown[i]=Up[i];
if (changeOfTrend == 1) {
TrendDown[i-1] = TrendUp[i-1];
changeOfTrend = 0;
}
}
}
Buy = trendup;
Sell=trenddown;
////////////////////////////////////////////////////////////////
var C = Sistem.GrafikFiyatSec("Kapanis");
var H = Sistem.GrafikFiyatSec("Yuksek");
var L = Sistem.GrafikFiyatSec("Dusuk");
var Factor = 2.5f;
var Pd = 2;
var ATR = Sistem.AverageTrueRange(Pd);
var iATR = Sistem.AverageTrueRange(Pd);
var L1 = Sistem.Liste(0);
var L2 = Sistem.Liste(0);
for (int i = 0; i < Sistem.BarSayisi; i++)
var changeOfTrend = 0;
var SonYon = "";
var Sinyal = "";
{
L1[i] = H[i]+L[i]/2+Factor*ATR[i];
L2[i] = H[i]+L[i]/2-Factor*ATR[i];
}
for (int i=1; i < Sistem.BarSayisi; i++) {
var TrendUp = Null;
var TrendDown = Null;
trend[i]=1;
if (C[i]>L1[i-1]) {
trend[i]=1;
if (trend[i-1] == -1) changeOfTrend = 1;
}
else if (C[i]<L2[i-1]) {
trend[i]=-1;
if (trend[i-1] == 1) changeOfTrend = 1;
}
else if (trend[i-1]==1) {
trend[i]=1;
changeOfTrend = 0;
}
else if (trend[i-1]==-1) {
trend[i]=-1;
changeOfTrend = 0;
}
if (trend[i]<0 && trend[i-1]>0) {
flag=1;
}
else {
flag=0;
}
if (trend[i]>0 && trend[i-1]<0) {
flagh=1;
}
else {
flagh=0;
}
if (trend[i]>0 && L2[i]<L2[i-1]){
L2[i]=L2[i-1];
}
if (trend[i]<0 && L1[i]>L1[i-1])
{ L1[i]=L1[i-1];
}
if (flag==1)
{ L1[i]=(H[i]+L[i])/2+(Factor*iATR[i]);
}
if (flagh==1)
{ L2[i]=(H[i]+L[i])/2-(Factor*iATR[i]);
}
if (trend[i]==1) {
TrendUp[i]=L2[i];
if (changeOfTrend == 1) {
TrendUp[i-1] = TrendDown[i-1];
changeOfTrend = 0;
}
}
else if (trend[i]==-1) {
TrendDown[i]=L1[i];
if (changeOfTrend == 1) {
TrendDown[i-1] = TrendUp[i-1];
changeOfTrend = 0;
if (TrendUp[i]) Sinyal = "A";
if (TrendDown[i]) Sinyal = "S";
if (Sinyal != SonYon && Sinyal != "")
{
SonYon = Sinyal;
Sistem.Yon[i] = SonYon;
}
}
}
}
|
|
Bu kod süpertrende benziyor. Birkaç sayfa geride birisi daha istemişti cevaplamıştım. Geçmiş postlara bakın bulursunuz, muhtemelen aynı işi yapıyor. Pivot değerden veya ortalamadan atr nin belirli bir katsayısı kadar uzaklaşınca trend dönüyor.
Yer İmleri