Kodlama yardımı - sayfa 320

 

Merhaba,

Uzun zamandır buralarda değildim...

Bir EA Idea üzerinde çalışıyorum, bir gösterge eklemem gerekiyor ama bunu EA'ya nasıl dahil edeceğimi bilmiyorum, lütfen bana yardım edebilir misiniz?

Gösterge Eğim Yön Çizgisi, günlük grafikte çalışmasını ve alt TF grafiğinde siparişleri tetiklemesini istiyorum, gösterge kodu:

//+------------------------------------------- -------------------+

//| eğim yönlü çizgi DLMmq4 |

//| DANIEL LUCHINGER 2014 |

//| MQL5: MetaTrader ile otomatik forex ticareti, strateji test cihazı ve özel göstergeler |

//+------------------------------------------- -------------------+

#özellik göstergesi_chart_window

#özellik göstergesi_tamponları 2

#özellik göstergesi_color1 Mavi

#özellik göstergesi_width1 3

#özellik göstergesi_renk2 Kırmızı

#özellik göstergesi_width2 3

//---- giriş parametreleri

dış int nokta=14;

harici int yöntemi=3; // MODE_SMA

harici int fiyat=0; // PRICE_CLOSE

//---- arabellekler

çift Yükseliş trendi[];

çift Dntrend[];

çift ExtMapBuffer[];

//+------------------------------------------- -------------------+

//| Özel gösterge başlatma işlevi |

//+------------------------------------------- -------------------+

int init()

{

Gösterge Tamponları(3);

SetIndexBuffer(0, Yükseliş Trendi);

SetIndexBuffer(1, Dntrend);

SetIndexBuffer(2, ExtMapBuffer);

ArraySetAsSeries(ExtMapBuffer, true);

SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,3);

SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,3);

GöstergeShortName("Eğim Yön Çizgisi");

dönüş(0);

}

//+------------------------------------------- -------------------+

//| Özel gösterge sıfırlama işlevi |

//+------------------------------------------- -------------------+

int deinit(){return(0);}

çift WMA(int x, int p)

{

return(iMA(NULL, 0, p, 0, yöntem, fiyat, x));

}

//+------------------------------------------- -------------------+

//| Özel gösterge yineleme işlevi |

//+------------------------------------------- -------------------+

int başlangıç()

{

int counted_bars = IndicatorCounted();

if(sayılan_barlar < 0)

dönüş(-1);

int x = 0;

int p = MathSqrt(nokta);

int e = Çubuklar - sayılan_barlar + nokta + 1;

çift vektör[], trend[];

if(e > Çubuklar)

e = Çubuklar;

ArrayResize(vect, e);

ArraySetAsSeries(vect, true);

ArrayResize(eğilim, e);

ArraySetAsSeries(eğilim, doğru);

for(x = 0; x < e; x++)

{

vect[x] = 2*WMA(x, nokta/2) - WMA(x, nokta);

}

for(x = 0; x < e-dönem; x++)

ExtMapBuffer[x] = iMAOnArray(vect, 0, p, 0, method, x);

for(x = e-dönem; x >= 0; x--)

{

trend[x] = trend[x+1];

if (ExtMapBuffer[x]> ExtMapBuffer[x+1]) trend[x] =1;

if (ExtMapBuffer[x]< ExtMapBuffer[x+1]) trend[x] =-1;

eğer (trend[x]>0)

{ Yükseliş trendi[x] = ExtMapBuffer[x];

if (trend[x+1]<0) Yükseliş trendi[x+1]=ExtMapBuffer[x+1];

Dntrend[x] = BOŞ_DEĞER;

}

başka

eğer (eğilim[x]<0)

{

Dntrend[x] = ExtMapBuffer[x];

if (trend[x+1]>0) Dntrend[x+1]=ExtMapBuffer[x+1];

Yükseliş trendi[x] = BOŞ_DEĞER;

}

}

dönüş(0);

---------------

--------------

Aşağıdaki şekilde kodladım:

double UpTrend = iCustom(NULL,1440,"eğim yönlü çizgi DLM",20,3,0,1); // burada 0 = Yükseliş Tamponu

double DnTrend = iCustom(NULL,1440,"eğim yönlü çizgi DLM",20,3,1,1); // burada 1 = DntrendBuffer

çift _sl = 0,_tp = 0;

{

if(haMode == 0 || haMode == 1)

{

eğer (Yükseliş Trendi)

{label("UZUN Koşul TAMAM");

if(Close[0] >= srDown && Close[0] < srUp)

//if(StopLoss > 0) _sl = Sor - StopLoss;

_sl = srDownHT-StopLossShift;

if(TakeProfit > 0) _tp = Sor + TakeProfit;

if(tt && siparişler<MaxTrades)

{

openOrder(getLots(),MagicNumber,OP_BUY, _sl,_tp);

}

}}

}

}

Biri beni düzeltebilir mi lütfen çünkü bunun işe yaramadığından eminim

teşekkürler

Daniel1983

 

Yardımlarınız için çok teşekkür ederim Mistertools.

Ancak ...

Yapmak istediğim, #_FullSSA_normalize doğru mtf nmc'ye hareketli bir ortalama uygulamak.

Bu, MT4'ün MA'sının yardımıyla M5'te normal bir şekilde yaptığımda sorunsuz çalışıyor.

MT4'ten kullandığım tek şey bu ...

M1'de bazen çalışıyor, bazen çalışmıyor. Ayarlarla ilgili bir şeyler yapmak zorunda olabilir.

Sadece resme bakın, SSA tamam, ama MA değil ...

Kendim yapmaya çalışıyorum ama 'işimden' sonra sadece iki hata almama rağmen benim için çok karmaşık.

Şanslı olmalı, ama yine de, SSA sorunsuz çalıştı, ancak MA hiçbir yerde görünmüyordu.

Tabii ki, SSA elit bir tanesidir ....

bir süre önce satın aldığım ve buna değer ...

Dosyalar:
ssa.png  72 kb
 
daniel1983:
Merhaba,

Uzun zamandır buralarda değildim...

Bir EA Idea üzerinde çalışıyorum, bir gösterge eklemem gerekiyor ama bunu EA'ya nasıl dahil edeceğimi bilmiyorum, lütfen bana yardım edebilir misiniz?

Gösterge Eğim Yön Çizgisi, günlük grafikte çalışmasını ve alt TF grafiğinde siparişleri tetiklemesini istiyorum, gösterge kodu:

//+------------------------------------------- -------------------+

//| eğim yönlü çizgi DLMmq4 |

//| DANIEL LUCHINGER 2014 |

//| MQL5: MetaTrader ile otomatik forex ticareti, strateji test cihazı ve özel göstergeler |

//+------------------------------------------- -------------------+

#özellik göstergesi_chart_window

#özellik göstergesi_tamponları 2

#özellik göstergesi_color1 Mavi

#özellik göstergesi_width1 3

#özellik göstergesi_renk2 Kırmızı

#özellik göstergesi_width2 3

//---- giriş parametreleri

dış int nokta=14;

harici int yöntemi=3; // MODE_SMA

harici int fiyat=0; // PRICE_CLOSE

//---- arabellekler

çift Yükseliş trendi[];

çift Dntrend[];

çift ExtMapBuffer[];

//+------------------------------------------- -------------------+

//| Özel gösterge başlatma işlevi |

//+------------------------------------------- -------------------+

int init()

{

Gösterge Tamponları(3);

SetIndexBuffer(0, Yükseliş Trendi);

SetIndexBuffer(1, Dntrend);

SetIndexBuffer(2, ExtMapBuffer);

ArraySetAsSeries(ExtMapBuffer, true);

SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,3);

SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,3);

GöstergeShortName("Eğim Yön Çizgisi");

dönüş(0);

}

//+------------------------------------------- -------------------+

//| Özel gösterge sıfırlama işlevi |

//+------------------------------------------- -------------------+

int deinit(){return(0);}

çift WMA(int x, int p)

{

return(iMA(NULL, 0, p, 0, yöntem, fiyat, x));

}

//+------------------------------------------- -------------------+

//| Özel gösterge yineleme işlevi |

//+------------------------------------------- -------------------+

int başlangıç()

{

int counted_bars = IndicatorCounted();

if(sayılan_barlar < 0)

dönüş(-1);

int x = 0;

int p = MathSqrt(nokta);

int e = Çubuklar - sayılan_barlar + nokta + 1;

çift vektör[], trend[];

if(e > Çubuklar)

e = Çubuklar;

ArrayResize(vect, e);

ArraySetAsSeries(vect, true);

ArrayResize(eğilim, e);

ArraySetAsSeries(eğilim, doğru);

for(x = 0; x < e; x++)

{

vect[x] = 2*WMA(x, nokta/2) - WMA(x, nokta);

}

for(x = 0; x < e-dönem; x++)

ExtMapBuffer[x] = iMAOnArray(vect, 0, p, 0, method, x);

for(x = e-dönem; x >= 0; x--)

{

trend[x] = trend[x+1];

if (ExtMapBuffer[x]> ExtMapBuffer[x+1]) trend[x] =1;

if (ExtMapBuffer[x]< ExtMapBuffer[x+1]) trend[x] =-1;

eğer (trend[x]>0)

{ Yükseliş trendi[x] = ExtMapBuffer[x];

if (trend[x+1]<0) Yükseliş trendi[x+1]=ExtMapBuffer[x+1];

Dntrend[x] = BOŞ_DEĞER;

}

başka

eğer (eğilim[x]<0)

{

Dntrend[x] = ExtMapBuffer[x];

if (trend[x+1]>0) Dntrend[x+1]=ExtMapBuffer[x+1];

Yükseliş trendi[x] = BOŞ_DEĞER;

}

}

dönüş(0);

---------------

--------------

Aşağıdaki şekilde kodladım:

double UpTrend = iCustom(NULL,1440,"eğim yönlü çizgi DLM",20,3,0,1); // burada 0 = Yükseliş Tamponu

double DnTrend = iCustom(NULL,1440,"eğim yönlü çizgi DLM",20,3,1,1); // burada 1 = DntrendBuffer

çift _sl = 0,_tp = 0;

{

if(haMode == 0 || haMode == 1)

{

eğer (Yükseliş Trendi)

{label("UZUN Koşul TAMAM");

if(Close[0] >= srDown && Close[0] < srUp)

//if(StopLoss > 0) _sl = Sor - StopLoss;

_sl = srDownHT-StopLossShift;

if(TakeProfit > 0) _tp = Sor + TakeProfit;

if(tt && siparişler<MaxTrades)

{

openOrder(getLots(),MagicNumber,OP_BUY, _sl,_tp);

}

}}

}

}

Biri beni düzeltebilir mi lütfen çünkü bunun işe yaramadığından eminim

teşekkürler

Daniel1983

Bu işe yaramaz çünkü eğim yön çizgisi bir yeniden boyama göstergesidir. Herhangi bir normal Gövde ortalamasını alın ("eğim yön çizgisi" Gövde ortalamasıdır) ve her şey daha kolay olacaktır.

 

Teşekkürler Mladen, zaman ayırdığınız için teşekkür ederim..

Hız kontrolü ile oluşturduğunuz HMA ile ilgili gönderiler aracılığıyla buldum,

EA'da denemek istiyorum, Eğim Yön Göstergesi ile istediğim fikrin aynısı,

ancak bu HMA göstergesiyle "Gövde Hareketli Ortalamalar 2.0 & SR çizgileri" yayınladınız

EA'mda çalışmasını sağlamak için bunun kodu nasıl olurdu?

Yazdım:

input int IndicatorTF = 1440 //(Günlük Zaman Çerçevesinde gösterge)

giriş int HMAPeriod = 35; //(bu parametreleri değiştirmeme izin ver)

ENUM_HMAPice girin = PRICE_CLOSE; //(bu parametreleri değiştirmeme izin ver)

giriş int HMASpeed = 2.0; //(bu parametreleri değiştirmeme izin ver)

double trendUp = iCustom(Symbol(),IndicatorTF,"Tekne hareketli ortalama 2.0 ve sr hatları",HMAPeriod,ENUM_HMAPrice,HMASpeed,0,0);

double trendDn = iCustom(Symbol(),IndicatorTF,"Tekne hareketli ortalama 2.0 ve sr çizgileri",HMAPeriod,ENUM_HMAPrice,HMASpeed,1,0);

if(trendUp > 0)

{

Satın Al'ı Aç

}

Gösterge kodu:

//+------------------------------------------- -------------------+

//| Gövde hareketli ortalama |

//| mladen |

//+------------------------------------------- -------------------+

#özellik telif hakkı " www.forex-tsd.com "

#özellik bağlantısı " www.forex-tsd.com "

#özellik göstergesi_chart_window

#özellik göstergesi_tamponları 3

#özellik göstergesi_color1 KireçYeşil

#özellik göstergesi_color2 SolukVioletKırmızı

#özellik göstergesi_renk3 SolukVioletKırmızı

#özellik göstergesi_width1 2

#özellik göstergesi_width2 2

#özellik göstergesi_width3 2

//

//

//

//

//

extern string TimeFrame = "Geçerli zaman çerçevesi";

extern int HMAPeriod = 35;

extern int HMAPrice = PRICE_CLOSE;

harici çift HMASpeed = 2.0;

extern bool LinesVisible = false;

extern int LinesNumber = 5;

dış renk ColorUp = LimeYeşil;

dış renk ColorDown = PaleVioletRed;

dış dize UniqueID = "HullLines1";

extern bool alertsOn = false;

extern bool alertsOnCurrent = true;

harici bool uyarılarıMesaj = true;

harici bool uyarılarıSound = false;

harici bool uyarılarıEmail = false;

//

//

//

//

//

çift hma[];

çift hmada[];

çift hmadb[];

çift iş[];

çift eğilim[];

int HalfPeriod;

int HullPeriod;

string göstergesiDosyaAdı;

bool dönüş Barları;

bool hesaplaDeğer;

int zaman çerçevesi;

//------------------------------------------------ ------------------

//

//------------------------------------------------ ------------------

//

//

//

//

//

int init()

{

GöstergeTamponları(5);

SetIndexBuffer(0,hma);

SetIndexBuffer(1,hmada);

SetIndexBuffer(2,hmadb);

SetIndexBuffer(3,trend);

SetIndexBuffer(4,iş);

//

//

//

//

//

HMAPeriod = MathMax(2,HMAPeriod);

HalfPeriod = MathFloor(HMAPeriod/HMASpeed);

HullPeriod = MathFloor(MathSqrt(HMAPeriod));

göstergeDosyaAdı = WindowExpertName();

hesapValue = TimeFrame=="hesaplaValue"; if (hesaplaDeğer) { return(0); }

returnBars = TimeFrame=="returnBars"; if (returnBars) { return(0); }

timeFrame = stringToTimeFrame(TimeFrame);

//

//

//

//

//

GöstergeShortName(timeFrameToString(timeFrame)+" HMA ("+HMAPeriod+")");

dönüş(0);

}

geçersiz tanım()

{

deleteLines();

}

geçersiz deleteLines()

{

int lookForLength = StringLen(UniqueID);

for (int i= ObjectsTotal()-1; i>=0; i--)

{

dizi adı = NesneAdı(i);

if (StringSubstr(name,0,lookForLength)==UniqueID) ObjectDelete(name);

}

}

//------------------------------------------------ ------------------

//

//------------------------------------------------ ------------------

//

//

//

//

//

int başlangıç()

{

int i,counted_bars = IndicatorCounted();

if(counted_bars<0) return(-1);

if(counted_bars>0) counted_bars--;

int limit=MathMin(Barlar-sayılan_barlar,Barlar-1);

if (returnBars) { hma[0] = MathMin(limit+1,Bars-1); dönüş(0); }

//

//

//

//

//

if (calculateValue || timeFrame == Period())

{

if (trend[limit] == -1) CleanPoint(limit,hmada,hmadb);

for(i=limit; i>=0; i--) work = 2.0*iMA(NULL,0,HalfPeriod,0,MODE_LWMA,HMAPrice,i)-iMA(NULL,0,HMAPeriod,0,MODE_LWMA,HMAPrice, ben);

for(i=limit; i>=0; i--)

{

hma = iMAOnArray(work,0,HullPeriod,0,MODE_LWMA,i);

hmada = BOŞ_DEĞER;

hmadb = BOŞ_DEĞER;

eğilim = eğilim;

if (hma > hma) eğilim = 1;

if (hma < hma) eğilim = -1;

if (trend == -1) PlotPoint(i,hmada,hmadb,hma);

}

deleteLines();

if (ÇizgilerGörünür)

{

int k = 0;

için (i=0; i<Barlar && k<LinesNumber; i++)

if (trend!=trend)

{

string name = UniqueID+(string)Time;

ObjectCreate(name,OBJ_TREND,0,Time,hma,Time+Period()*60,hma);

eğer (eğilim==1)

ObjectSet(isim,OBJPROP_COLOR,ColorUp);

else ObjectSet(isim,OBJPROP_COLOR,ColorDown);

k++;

}

}

ManageAlerts();

dönüş(0);

}

//

//

//

//

//

limit = MathMax(limit,MathMin(Barlar-1,iCustom(NULL,timeFrame,indicatorFileName,"returnBars",0,0)*timeFrame/Period()));

if (trend[limit]==-1) CleanPoint(limit,hmada,hmadb);

(i=limit; i>=0; i--) için

{

int y = iBarShift(NULL,timeFrame,Zaman);

trend = iCustom(NULL,timeFrame,indicatorFileName,"calculateValue",HMAPeriod,HMAPrice,HMASpeed,LinesVisible,LinesNumber,ColorUp,ColorDown,UniqueID,alertsOn,alertsOnCurrent,alertsMessage,alerts);Email,alerts,email,alerts

hma = iCustom(NULL,timeFrame,indicatorFileName,"calculateValue",HMAPeriod,HMAPrice,HMASpeed,LinesVisible,LinesNumber,ColorUp,ColorDown,UniqueID,alertsOn,alertsOnCurrent,alertsMessage,alertsEmail,alertsEmail,alerts,alerts,a

hmada = BOŞ_DEĞER;

hmadb = BOŞ_DEĞER;

}

(i=limit;i>=0;i--) için if (trend==-1) PlotPoint(i,hmada,hmadb,hma);

dönüş(0);

}

//+------------------------------------------- --------------------

//|

//+------------------------------------------- --------------------

//

//

//

//

//

void managerAlerts()

{

if (uyarılarAçık)

{

if (alertsOnCurrent)

int hangiBar = 0;

başka hangiBar = 1;

if (trend[hangiBar] != trend[hangiBar+1])

{

if (trend[hangiBar] == 1) doAlert(hangiBar,"yukarı");

if (trend[hangiBar] == -1) doAlert(hangiBar,"aşağı");

}

}

}

//

//

//

//

//

void doAlert(int forBar, string doWhat)

{

statik dize öncekiAlert="hiçbir şey";

statik tarihsaat öncekiSaat;

dize mesajı;

if (previousAlert != doWhat || öncekiZaman != Zaman[Bar için]) {

öncekiAlert = doWhat;

öncekiZaman = Zaman[Bar için];

//

//

//

//

//

mesaj = Symbol()+" "+timeFrameToString(Period())+", "+TimeToStr(TimeLocal(),TIME_SECONDS)+" konumunda HMA trendi "+doWhat;

if (alertsMessage) Alert(mesaj);

if (alertsEmail) SendMail(Symbol()+" HMA ",message);

if (alertsSound) PlaySound("alert2.wav");

}

}

//------------------------------------------------ -------------------

//

//------------------------------------------------ -------------------

//

//

//

//

//

void CleanPoint(int i,double& first[],double& second[])

{

if ((ikinci != BOŞ_DEĞER) && (ikinci != BOŞ_DEĞER))

saniye = BOŞ_DEĞER;

başka

if ((ilk != EMPTY_VALUE) && (ilk != EMPTY_VALUE) && (ilk == BOŞ_DEĞER))

ilk = BOŞ_DEĞER;

}

//

//

//

//

//

void PlotPoint(int i,double& first[],double& second[],double& from[])

{

if (ilk == EMPTY_VALUE)

{

if (ilk == BOŞ_DEĞER) {

ilk = itibaren;

ilk = itibaren;

saniye = BOŞ_DEĞER;

}

başka {

ikinci = itibaren;

ikinci = itibaren;

ilk = BOŞ_DEĞER;

}

}

başka

{

ilk = itibaren;

saniye = BOŞ_DEĞER;

}

}

//------------------------------------------------ -------------------

//

//------------------------------------------------ -------------------

//

//

//

//

//

string sTfTable[] = {"M1","M5","M15","M30","H1","H4","D1","W1","MN"};

int iTfTable[] = {1,5,15,30,60,240,1440,10080,43200};

//

//

//

//

//

int stringToTimeFrame(dize tfs)

{

tfs = stringUpperCase(tfs);

for (int i=ArraySize(iTfTable)-1; i>=0; i--)

if (tfs==sTfTable || tfs==""+iTfTable) return(MathMax(iTfTable,Period()));

Dönüş süresi());

}

string timeFrameToString(int tf)

{

for (int i=ArraySize(iTfTable)-1; i>=0; i--)

if (tf==iTfTable) return(sTfTable);

dönüş("");

}

//

//

//

//

//

string stringUpperCase(string str)

{

dizi s = dizi;

for (int uzunluk=StringLen(str)-1; uzunluk>=0; uzunluk--)

{

int tchar = StringGetChar(s, uzunluk);

if((tchar > 96 && tchar 223 && tchar < 256))

s = StringSetChar(s, uzunluk, tchar - 32);

else if(tchar > -33 && tchar < 0)

s = StringSetChar(s, uzunluk, tchar + 224);

}

İadeler);

}

 
mladen:
Bu, başka bir göstergenin karışması sorunu değildir (aynı göstergenin aynı grafikte birden çok örneğini kullanmadığınız sürece). Bu durumda heppen olabilir çünkü o indikatör aynı çizelge üzerinde multi instance indikatör olarak kullanılmak üzere yazılmamıştır.

Merhaba MLaden , çok teşekkür ederim ama bu bir grafikte birden fazla örnek kullandığım bir durum değil, sadece bir tane. sadece çizgiler kayıyor.

Eğer bariz değilse endişelenmeyin, olduğu gibi devam edeceğim, katkınız için teşekkürler! iyi günler...

zikzak

 
zigflip:
Merhaba MLaden , çok teşekkür ederim ama bu bir grafikte birden fazla örnek kullandığım bir durum değil, sadece bir tane. sadece çizgiler kayıyor.

Eğer bariz değilse endişelenmeyin, olduğu gibi devam edeceğim, katkınız için teşekkürler! iyi günler...

zikzak

Gönderdiğimi denedim ve değişmiyorlar

Deneyin belki faydası olur

 

Bir HMA göstergesini bir EA'ya nasıl çağırırım?

çift (NULL,0,"HMA",??????)

Ve koşullar

if(trendUp) o zaman satın al, veya if(trendUp=1) o zaman satın al ya da bunun gibi bir şey?

Teşekkürler

 
daniel1983:
Bir HMA göstergesini bir EA'ya nasıl çağırırım?

çift (NULL,0,"HMA",??????)

Ve koşullar

if(trendUp) o zaman satın al, veya if(trendUp=1) o zaman satın al ya da bunun gibi bir şey?

Teşekkürler

Gösterge parametrelerine bağlıdır, ancak bunun için iCustom() kullanmanız gerekir.

Burada bulabileceğiniz birkaç örnekle çok daha fazla bilgi: https://www.mql5.com/en/forum/173108

 
mladen:
Gösterge parametrelerine bağlıdır, ancak bunun için iCustom() kullanmanız gerekir Burada bulabileceğiniz birkaç örnekle çok daha fazla bilgi: https://www.mql5.com/en/forum/173108

Bana rehberlik ettiğiniz için teşekkür ederim, hala kafam karıştı, eğim çizgisi koduna benzer bir HMA göstergesi buldum, bu "HMA_Russian_Color", ancak hala satın alma trendini satış trendinden filtrelemek için koşullarla ilgili sorunlarım var.

yazdım

double Uptrend = iCustom(Symbol(),0,"HMA_Russian_Color",20,3,0,0); // nerede son 0 = Yükseliş Tamponu

double Dntrend = iCustom(Symbol(),0,"HMA_Russian_Color",20,3,0,1); // burada son 1 = DntrendBuffer

//dönem = 20 / tür = 3 / fiyat = 0 doğru mu?

if(Uptrend) //Bunu nasıl yazarım??

{

Satın Al'ı Aç

}

Siparişler HMA düşüş trendi veya kırmızı renk iken hala açık Satın alma ...

Lütfen beni düzeltin ve veya bunu düzeltmeme yardım edin ...

teşekkürler

 
daniel1983:
Bana rehberlik ettiğiniz için teşekkür ederim, hala kafam karıştı, eğim çizgisi koduna benzer bir HMA göstergesi buldum, bu "HMA_Russian_Color", ancak hala satın alma trendini satış trendinden filtrelemek için koşullarla ilgili sorunlarım var.

yazdım

double Uptrend = iCustom(Symbol(),0,"HMA_Russian_Color",20,3,0,0); // nerede son 0 = Yükseliş Tamponu

double Dntrend = iCustom(Symbol(),0,"HMA_Russian_Color",20,3,0,1); // burada son 1 = DntrendBuffer

//dönem = 20 / tür = 3 / fiyat = 0 doğru mu?

if(Uptrend) //Bunu nasıl yazarım??

{

Satın Al'ı Aç

}

Siparişler HMA düşüş trendi veya kırmızı renk iken hala açık Satın alma ...

Lütfen beni düzeltin ve veya bunu düzeltmeme yardım edin ...

teşekkürler

Eğim değişikliği için şöyle bir şey deneyin:

double current = iCustom(Symbol(),0,"HMA_Russian_Color",20,3,0,0);

double previous1 = iCustom(Symbol(),0,"HMA_Russian_Color",20,3,0,1);

double previous2 = iCustom(Symbol(),0,"HMA_Russian_Color",20,3,0,2);

if (current>previous1 && previous1<previous2)

{

// slope changed to up

}

if (currentprevious2)

{

// slope changed to down

}

Neden: