//--- Eingabeparameter
input int InpPeriod = 10; // Periodenlänge des gleitenden Durchschnitts
input ENUM_MA_METHOD InpMethod = MODE_SMA; // Glättungsverfahren des gleitenden Durchschnitts
input ENUM_APPLIED_PRICE InpPrice = PRICE_CLOSE; // Berechnung des gleitenden Durchschnitts
//+------------------------------------------------------------------+
//| Skript Programm Start Funktion |
//+------------------------------------------------------------------+
void OnStart()
{
//--- wenn die Periodenlänge des gleitenden Durchschnitts auf einen Wert kleiner als 1 eingestellt ist, wird der Standardwert (10) verwendet
int period=(InpPeriod<1 ? 10 : InpPeriod);
//--- Erstellen des Handles für den Indikator Gleitender Durchschnitt
int handle=iMA(Symbol(),Period(),period,0,InpMethod,InpPrice);
if(handle==INVALID_HANDLE)
{
Print("Failed to create the Moving Average indicator handle. Fehler: ",GetLastError());
return;
}
//--- Ermitteln des aktuellen Bid-Preises
double bid=0;
ResetLastError();
if(!SymbolInfoDouble(Symbol(),SYMBOL_BID,bid))
{
Print("Failed to get Bid price. Fehler: ",GetLastError());
return;
}
//--- Ermitteln des gleitenden Durchschnittswerts für den aktuellen Balken
double array[1];
int copied=CopyBuffer(handle,0,0,1,array);
if(copied!=1)
{
Print("Failed to get Moving Average data. Fehler: ",GetLastError());
return;
}
//--- Ermitteln des höheren Preises der beiden (Bid-Preis und Wert des gleitenden Durchschnitts) und Anzeigen der resultierenden Daten im Journal
double max_price=MathMax(bid,array[0]);
PrintFormat("Bid: %.*f, Moving Average: %.*f, highest price of the two: %.*f",_Digits,bid,_Digits,array[0],_Digits,max_price);
PrintFormat("Bid price %s moving average",(bid>array[0] ? "higher" : bid<array[0] ? "lower" : "equal to"));
}
|