Perioden Anzahl erhöhen (loop?)

 

Hi,

ich versuche gerade für meinen EA einen variablen StopLoss zu ermitteln. Dazu nehme ich eine "Preisband Differenz" als Mindestabstand an, der vorhanden sein muss.

Preisband Differenz = MovingAverage HIGH - MovingAverage LOW


Er soll das LOW der letzten x Kerzen suchen, wenn das LOW < Preisband Differenz ist, ist dann der gewünschte StopLoss.

Mein Problem: Wenn der ermittelte BUY_StopLoss < Preisband Differenz, möchte ich dass er die Anzahl der Perioden aus denen er den LOW raussucht, jeweils um +1 erhöht, bis die Bedingung erfüllt ist...


Aktuell habe ich es wie folgt (funktionier aber nicht)

int                                       BUY_SL_Perioden      = 20;
double                                    BUY_StopLoss         = MarketInfo(Symbol(),MODE_STOPLEVEL);
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

if(BUY_StopLoss<Preisband_Diff)           {BUY_SL_Perioden++; BUY_StopLoss  = (Bid-Low[iLowest(Symbol(),Zeiteinheit,MODE_LOW,BUY_SL_Perioden++,2)])*MarketInfo(Symbol(),MODE_LOTSIZE);};


hat jemand einen Tipp, wie ich die Hochzählung der BUY_SL_Perioden richtig programmieren muss?

Moving Average - Trend-Indikatoren - MetaTrader 5 Hilfe
Moving Average - Trend-Indikatoren - MetaTrader 5 Hilfe
  • www.metatrader5.com
Der Moving Average Technical Indicator zeigt das Mittel des Preises eines Instruments über eine gewisse Periode an und wird im deutschen auch...
 
Prüf mal mit dem Debugger, ob iLowest[] auch den Index liefert, den Du erwartest, a) wegen der Richtung (jetzt=>alt oder alt=>jetzt) und b) wegen ".._Perioden++", das erhöht ".._Perioden NACH der Opreation.
 
Carl Schreiber:
Prüf mal mit dem Debugger, ob iLowest[] auch den Index liefert, den Du erwartest, a) wegen der Richtung (jetzt=>alt oder alt=>jetzt) und b) wegen ".._Perioden++", das erhöht ".._Perioden NACH der Opreation.

danke, habe es mit einer while Schleife gemacht...


while(SELL_StopLoss<2*Preisband_Diff) 

        {SELL_SL_Perioden++;  SELL_StopLoss  = NormalizeDouble((High[iHighest(Symbol(),Zeiteinheit,MODE_HIGH,SELL_SL_Perioden,0)]-Ask)*MarketInfo(Symbol(),MODE_LOTSIZE),0);};
Grund der Beschwerde: