Hilfe bei der Codierung - Seite 320

 

Hallo zusammen,

Lange Zeit war ich nicht hier...

Ich arbeite an einer EA-Idee, ich muss einen Indikator hinzufügen, aber ich weiß nicht, wie ich diesen in den EA einbinden kann, können Sie mir bitte helfen?

Der Indikator ist Slope Directional Line, ich möchte, dass er im Tageschart funktioniert und Aufträge im unteren TF-Chart auslöst, der Code des Indikators ist:

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

//| Slope Directional Line D.L.M.mq4 |

//| DANIEL LUCHINGER 2014 |

//| MQL5: Automatisierter Devisenhandel, Strategietester und benutzerdefinierte Indikatoren mit MetaTrader |

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

#property indicator_chart_window

#property indicator_buffers 2

#Eigenschaft indicator_color1 Blau

#Eigenschaft indicator_width1 3

#Eigenschaft indicator_color2 Rot

#Eigenschaft indicator_width2 3

//---- Eingabeparameter

extern int Zeitraum=14;

extern int methode=3; // MODE_SMA

extern int Preis=0; // PRICE_CLOSE

//---- Puffer

double Uptrend[];

double Dntrend[];

double ExtMapBuffer[];

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

//| Benutzerdefinierte Indikator-Initialisierungsfunktion |

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

int init()

{

IndicatorBuffers(3);

SetIndexPuffer(0, Aufwärtstrend);

SetIndexBuffer(1, Dntrend);

SetIndexBuffer(2, ExtMapBuffer);

ArraySetAsSeries(ExtMapBuffer, true);

SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,3);

SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,3);

IndicatorShortName("Slope Direction Line");

return(0);

}

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

//| Benutzerdefinierte Indikator-Deinitialisierungsfunktion |

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

int deinit(){return(0);}

double WMA(int x, int p)

{

return(iMA(NULL, 0, p, 0, Methode, Preis, x));

}

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

//| Benutzerdefinierte Indikator-Iterationsfunktion

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

int start()

{

int counted_bars = IndicatorCounted();

if(gezählte_Balken < 0)

return(-1);

int x = 0;

int p = MathSqrt(Periode);

int e = Balken - gezählte_Balken + Periode + 1;

double vect[], trend[];

if(e > Balken)

e = Balken;

ArrayResize(vect, e);

ArraySetAsSeries(vect, true);

ArrayResize(trend, e);

ArraySetAsSeries(trend, true);

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

{

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

}

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

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

for(x = e-period; 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;

if (trend[x]>0)

{ Uptrend[x] = ExtMapBuffer[x];

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

Dntrend[x] = EMPTY_VALUE;

}

sonst

if (trend[x]<0)

{

Dntrend[x] = ExtMapBuffer[x];

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

Uptrend[x] = EMPTY_VALUE;

}

}

return(0);

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

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

Ich habe wie folgt kodiert:

double UpTrend = iCustom(NULL,1440, "Slope directional line D.L.M",20,3,0,1); // wobei 0 = UptrendBuffer

double DnTrend = iCustom(NULL,1440, "Steigung Richtungslinie D.L.M",20,3,1,1); // wobei 1 = DnTrendBuffer

double _sl = 0,_tp = 0;

{

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

{

if(UpTrend)

{label("LONG Bedingung OK");

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

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

_sl = srDownHT-StopLossShift;

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

if(tt && Aufträge<MaxTrades)

{

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

}

}}

}

}

Kann mich bitte jemand korrigieren, denn ich bin mir sicher, dass dies nicht funktioniert.

Danke

Daniel1983

 

Vielen Dank, Mistertools, für Ihre Hilfe.

Aber ...

Was ich tun möchte, ist die Anwendung eines gleitenden Durchschnitts auf den #_FullSSA_normalize correct mtf nmc.

Dies funktioniert ohne Probleme, wenn ich dies auf dem M5 in einer normalen Weise mit Hilfe der MA von MT4 tun.

Das ist das einzige, was ich von MT4 benutze ...

Auf dem M1 funktioniert es manchmal, manchmal nicht. Es könnte etwas mit den Einstellungen zu tun haben.

Schauen Sie sich einfach das Bild an, der SSA ist ok, aber nicht der MA ...

Ich habe versucht, es selbst zu machen, aber es ist viel zu kompliziert für mich, obwohl ich nur zwei Fehler hatte, nach 'meiner Arbeit' ...

Ich hatte wohl Glück, aber trotzdem funktionierte die SSA ohne Probleme, aber die MA war nirgends zu sehen.

Natürlich ist das SSA ein Elitegerät ....

die ich vor einiger Zeit gekauft habe und die es wert ist ...

Dateien:
ssa.png  72 kb
 
daniel1983:
Hallo zusammen,

Lange Zeit war ich nicht hier...

Ich arbeite an einer EA-Idee, ich muss einen Indikator hinzufügen, aber ich weiß nicht, wie ich diesen in den EA einbinden kann, können Sie mir bitte helfen?

Der Indikator ist Slope Directional Line, ich möchte, dass er im Tageschart funktioniert und im unteren TF-Chart Orders auslöst, der Code des Indikators ist:

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

//| Slope Directional Line D.L.M.mq4 |

//| DANIEL LUCHINGER 2014 |

//| MQL5: Automatisierter Devisenhandel, Strategietester und benutzerdefinierte Indikatoren mit MetaTrader |

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

#property indicator_chart_window

#property indicator_buffers 2

#Eigenschaft indicator_color1 Blau

#Eigenschaft indicator_width1 3

#Eigenschaft indicator_color2 Rot

#Eigenschaft indicator_width2 3

//---- Eingabeparameter

extern int Zeitraum=14;

extern int methode=3; // MODE_SMA

extern int Preis=0; // PRICE_CLOSE

//---- Puffer

double Uptrend[];

double Dntrend[];

double ExtMapBuffer[];

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

//| Benutzerdefinierte Indikator-Initialisierungsfunktion |

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

int init()

{

IndicatorBuffers(3);

SetIndexPuffer(0, Aufwärtstrend);

SetIndexBuffer(1, Dntrend);

SetIndexBuffer(2, ExtMapBuffer);

ArraySetAsSeries(ExtMapBuffer, true);

SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,3);

SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,3);

IndicatorShortName("Slope Direction Line");

return(0);

}

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

//| Benutzerdefinierte Indikator-Deinitialisierungsfunktion |

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

int deinit(){return(0);}

double WMA(int x, int p)

{

return(iMA(NULL, 0, p, 0, Methode, Preis, x));

}

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

//| Benutzerdefinierte Indikator-Iterationsfunktion

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

int start()

{

int counted_bars = IndicatorCounted();

if(gezählte_Balken < 0)

return(-1);

int x = 0;

int p = MathSqrt(Periode);

int e = Balken - gezählte_Balken + Periode + 1;

double vect[], trend[];

if(e > Balken)

e = Balken;

ArrayResize(vect, e);

ArraySetAsSeries(vect, true);

ArrayResize(trend, e);

ArraySetAsSeries(trend, true);

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

{

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

}

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

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

for(x = e-period; 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;

if (trend[x]>0)

{ Uptrend[x] = ExtMapBuffer[x];

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

Dntrend[x] = EMPTY_VALUE;

}

sonst

if (trend[x]<0)

{

Dntrend[x] = ExtMapBuffer[x];

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

Uptrend[x] = EMPTY_VALUE;

}

}

return(0);

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

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

Ich habe wie folgt kodiert:

double UpTrend = iCustom(NULL,1440, "Slope directional line D.L.M",20,3,0,1); // wobei 0 = UptrendBuffer

double DnTrend = iCustom(NULL,1440, "Steigung Richtungslinie D.L.M",20,3,1,1); // wobei 1 = DnTrendBuffer

double _sl = 0,_tp = 0;

{

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

{

if(UpTrend)

{label("LONG Bedingung OK");

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

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

_sl = srDownHT-StopLossShift;

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

if(tt && Aufträge<MaxTrades)

{

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

}

}}

}

}

Kann mich bitte jemand korrigieren, denn ich bin mir sicher, dass dies nicht funktioniert.

Danke

Daniel1983

Das funktioniert einfach deshalb nicht, weil "slope directional line" ein Wiederholungsindikator ist. Nehmen Sie einen normalen Hull-Durchschnitt ("slope directional line" ist ein Hull-Durchschnitt) und alles wird einfacher sein.

 

Danke Mladen, ich weiß deine Zeit zu schätzen.

Ich fand durch die Beiträge über HMA, eine, die Sie mit Geschwindigkeitskontrolle erstellt haben,

Ich würde es gerne in den EA einbauen, die gleiche Idee, die ich mit dem Slope Directional Indicator hatte,

aber mit diesem HMA-Indikator Sie gepostet "Hull Moving Averages 2.0 &SR-Linien"

Wie würde der Code dafür aussehen, damit er in meinem EA funktioniert?

Ich schrieb:

input int IndicatorTF = 1440 //(Indikator im Daily TimeFrame)

input int HMAPeriod = 35; //(erlauben Sie mir, diese Parameter zu ändern)

input ENUM_HMAPrice = PRICE_CLOSE; //(erlauben Sie mir, diese Parameter zu ändern)

input int HMASpeed = 2.0; //(erlauben Sie mir, diesen Parameter zu ändern)

double trendUp = iCustom(Symbol(),IndicatorTF, "Hull moving average 2.0 & sr lines",HMAPeriod,ENUM_HMAPrice,HMASpeed,0,0);

double trendDn = iCustom(Symbol(),IndicatorTF, "Hull moving average 2.0 & sr lines",HMAPeriod,ENUM_HMAPrice,HMASpeed,1,0);

if(trendUp > 0)

{

Eröffnen Kaufen

}

Der Code des Indikators lautet:

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

//| Hull Moving Average |

//| mladen |

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

#property copyright"www.forex-tsd.com"

#property link "www.forex-tsd.com"

#property indicator_chart_window

#Eigenschaft indicator_buffers 3

#property indicator_color1 LimonenGrün

#property indicator_color2 BlassViolettRot

#property indicator_color3 BlassviolettRot

#Eigenschaft indicator_width1 2

#Eigenschaft indicator_width2 2

#property indicator_width3 2

//

//

//

//

//

extern string TimeFrame = "Aktueller Zeitrahmen";

extern int HMAPeriod = 35;

extern int HMAPrice = PRICE_CLOSE;

extern double HMASpeed = 2.0;

extern bool LinesVisible = false;

extern int LinesNumber = 5;

externe Farbe ColorUp = LimeGreen;

externe Farbe ColorDown = PaleVioletRed;

extern string UniqueID = "HullLines1";

extern bool alertsOn = false;

extern bool alertsOnCurrent = true;

extern bool alertsMessage = true;

extern bool alertsSound = false;

extern bool alertsEmail = false;

//

//

//

//

//

double hma[];

double hmada[];

double hmadb[];

double work[];

double trend[];

int HalfPeriod;

int HullPeriod;

string indicatorFileName;

bool returnBars;

bool calculateValue;

int timeFrame;

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

//

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

//

//

//

//

//

int init()

{

IndicatorBuffers(5);

SetIndexBuffer(0,hma);

SetIndexBuffer(1,hmada);

SetIndexBuffer(2,hmadb);

SetIndexBuffer(3,trend);

SetIndexBuffer(4,work);

//

//

//

//

//

HMAPeriod = MathMax(2,HMAPeriod);

HalfPeriod = MathFloor(HMAPeriod/HMASpeed);

HullPeriod = MathFloor(MathSqrt(HMAPeriod));

indicatorFileName = WindowExpertName();

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

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

timeFrame = stringToTimeFrame(TimeFrame);

//

//

//

//

//

IndicatorShortName(timeFrameToString(timeFrame)+" HMA ("+HMAPeriod+")");

return(0);

}

void deinit()

{

deleteLines();

}

void deleteLines()

{

int lookForLength = StringLen(UniqueID);

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

{

string name = ObjectName(i);

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

}

}

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

//

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

//

//

//

//

//

int start()

{

int i,counted_bars = IndicatorCounted();

if(gezählte_Balken<0) return(-1);

if(gezählte_Balken>0) gezählte_Balken--;

int limit=MathMin(Balken-gezählte_Balken,Balken-1);

if (returnBars) { hma[0] = MathMin(limit+1,Bars-1); return(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,i);

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

{

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

hmada = EMPTY_VALUE;

hmadb = EMPTY_VALUE;

trend = trend;

wenn (hma > hma) trend = 1;

wenn (hma < hma) trend = -1;

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

}

deleteLines();

if (LinesVisible)

{

int k = 0;

for (i=0; i<Bars && k<LinesNumber; i++)

if (Trend!=Trend)

{

string name = UniqueID+(string)Time;

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

if (trend==1)

ObjectSet(name,OBJPROP_COLOR,ColorUp);

sonst ObjectSet(name,OBJPROP_COLOR,ColorDown);

k++;

}

}

manageAlerts();

return(0);

}

//

//

//

//

//

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

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

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

{

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

trend = iCustom(NULL,timeFrame,indicatorFileName, "calculateValue",HMAPeriod,HMAPrice,HMASpeed,LinesVisible,LinesNumber,ColorUp,ColorDown,UniqueID,alertsOn,alertsOnCurrent,alertsMessage,alertsSound,alertsEmail,3,y);

hma = iCustom(NULL,timeFrame,indicatorFileName, "calculateValue",HMAPeriod,HMAPrice,HMASpeed,LinesVisible,LinesNumber,ColorUp,ColorDown,UniqueID,alertsOn,alertsOnCurrent,alertsMessage,alertsSound,alertsEmail,0,y);

hmada = EMPTY_VALUE;

hmadb = EMPTY_VALUE;

}

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

return(0);

}

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

//|

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

//

//

//

//

//

void manageAlerts()

{

if (alertsOn)

{

if (alertsOnCurrent)

int whichBar = 0;

sonst whichBar = 1;

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

{

if (trend[whichBar] == 1) doAlert(whichBar, "up");

if (trend[welcherBalken] == -1) doAlert(welcherBalken, "abwärts");

}

}

}

//

//

//

//

//

void doAlert(int forBar, string doWhat)

{

static string previousAlert="nichts";

static datetime previousTime;

string Nachricht;

if (previousAlert != doWhat || previousTime != Time[forBar]) {

previousAlert = doWhat;

previousTime = Time[forBar];

//

//

//

//

//

message = Symbol()+" "+timeFrameToString(Period())+" at "+TimeToStr(TimeLocal(),TIME_SECONDS)+" HMA trend changed to "+doWhat;

if (alertsMessage) Alert(message);

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

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

}

}

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

//

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

//

//

//

//

//

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

{

if ((second != EMPTY_VALUE) && (second != EMPTY_VALUE))

second = EMPTY_VALUE;

sonst

if ((first != EMPTY_VALUE) && (first != EMPTY_VALUE) && (first == EMPTY_VALUE))

first = EMPTY_VALUE;

}

//

//

//

//

//

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

{

if (first == EMPTY_VALUE)

{

if (erste == EMPTY_VALUE) {

first = from;

erster = von;

zweite = EMPTY_VALUE;

}

sonst {

zweite = von;

zweite = von;

erste = EMPTY_VALUE;

}

}

sonst

{

erste = von;

zweite = EMPTY_VALUE;

}

}

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

//

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

//

//

//

//

//

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

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

//

//

//

//

//

int stringToTimeFrame(string tfs)

{

tfs = stringUpperCase(tfs);

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

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

return(Zeitraum());

}

string timeFrameToString(int tf)

{

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

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

return("");

}

//

//

//

//

//

string stringUpperCase(string str)

{

string s = str;

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

{

int tchar = StringGetChar(s, length);

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

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

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

s = StringSetChar(s, Länge, tchar + 224);

}

return(s);

}

 
mladen:
Es ist kein Problem, dass andere Indikatoren stören (es sei denn, Sie verwenden mehrere Instanzen desselben Indikators auf demselben Chart). In diesem Fall kann es dazu kommen, da der Indikator nicht für die Verwendung mehrerer Instanzen auf demselben Chart vorgesehen ist.

Hallo MLaden , vielen Dank, aber es ist nicht der Fall, wo ich mehr als eine Instanz auf einem Diagramm, nur eine. nur Linien verschieben sich über .

wenn es nicht offensichtlich ist, mach dir keine Sorgen, ich werde es so lassen, wie es ist, danke für deinen Beitrag! einen schönen Tag...

zigflip

 
zigflip:
Hallo MLaden , vielen Dank, aber es ist nicht so, dass ich mehr als eine Instanz auf einem Chart verwende, nur eine. nur die Linien verschieben sich.

wenn seine nicht offensichtlich keine Sorge, ich werde halten, wie es ist, danke für Ihre Eingabe! haben einen schönen Tag...

zigflip

Ich habe das, was ich gepostet habe, ausprobiert und sie haben sich nicht verschoben

Probieren Sie es aus, vielleicht hilft es

 

Wie kann ich einen HMA-Indikator in einem EA aufrufen?

double (NULL,0, "HMA",??????)

Und die Bedingungen sind

if(trendUp) then buy, oder if(trendUp =1) then buy oder so ähnlich?

Danke

 
daniel1983:
Wie rufe ich einen HMA-Indikator in einem EA auf?

double (NULL,0, "HMA",??????)

Und die Bedingungen sind

if(trendUp) then buy, oder if(trendUp =1) then buy oder so ähnlich?

Danke

Hängt von den Indikatorparametern ab, aber Sie müssen iCustom() dafür verwenden.

Viele weitere Informationen mit einigen Beispielen finden Sie hier: https: //www.mql5.com/en/forum/173108

 
mladen:
Hängt von den Indikatorparametern ab, aber Sie müssen dafür iCustom() verwenden. Viele weitere Informationen mit einigen Beispielen finden Sie hier: https: //www.mql5.com/en/forum/173108

Vielen Dank für die Führung mich, ich bin immer noch verwirrt, fand ich ein HMA-Indikator ähnlichen Code zu Hang Linie Code, es ist "HMA_Russian_Color", aber ich habe immer noch Probleme mit den Bedingungen, für die Filterung Kauf Trend von Verkauf Trend.

Ich schrieb

double Uptrend = iCustom(Symbol(),0, "HMA_Russian_Color",20,3,0,0); // wobei letzte 0 = UptrendBuffer

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

//Periode = 20 / Typ = 3 / Preis = 0 ist richtig?

if(Uptrend) //Wie soll ich das schreiben?

{

Öffnen Kaufen

}

Orders Buy noch geöffnet, während HMA Abwärtstrend oder rote Farbe ...

Bitte korrigieren Sie mich, und oder helfen Sie mir, dies zu beheben...

Danke

 
daniel1983:
Vielen Dank für die Führung mich, ich bin immer noch verwirrt, fand ich ein HMA-Indikator ähnlichen Code zu Hang-Linie Code, es ist "HMA_Russian_Color", aber ich habe immer noch Probleme mit den Bedingungen, für die Filterung Kauf Trend von Verkauf Trend.

i schrieb

double Uptrend = iCustom(Symbol(),0, "HMA_Russian_Color",20,3,0,0); // wobei zuletzt 0 = UptrendBuffer

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

//Periode = 20 / Typ = 3 / Preis = 0 ist richtig?

if(Uptrend) //Wie soll ich das schreiben?

{

Öffnen Kaufen

}

Orders Buy noch geöffnet, während HMA Abwärtstrend oder rote Farbe ...

Bitte korrigieren Sie mich, und oder helfen Sie mir, dies zu beheben...

Danke

Für Slope Change versuchen Sie etwas wie dieses:

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

}