Das Thema mit den Spikes hat mich nicht losgelassen,
also habe ich ein anderes Testprogramm erstellt, das ohne den Metatester auskommt.
Es ist als Script programmiert, und misst die Maximalhöhe aller Kerzen eines Symbols.
Eingabewerte sind Timeframe und ein Grenzwert der minimalen Kerzenhöhe ab der Protokolliert werden soll.
Ausgabe ist Zeitpunkt und Größe der neu gefundenen Maximalkerze.
Code:
//+------------------------------------------------------------------+
//| MaxCandle.mqh |
//| Copyright © 2017 Ing. Otto Pauser |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2017 Ing. Otto Pauser"
#property description "Testscript um die Maximalgröße von Kerzen in der Historie festzustellen\n"
#property description "Maximalgröße der Kerzen = high - low"
#property script_show_inputs;
input ENUM_TIMEFRAMES timeframe = PERIOD_M5; // Select Timeframe
input int grenzwert = 100; // Grenzwert für Überprüfung (points)
/*
nach guter alter Pascaltradition, zuerst die Deklaration der Variablen
das bewährt sich beim debuggen, der Debugger mäkelt sonst 'Unknown identifier'
wenn der Cursor auf der Zeile der Forschleife steht, und das nervt.
Die Deklaration könnte natürlich auch lokal, innerhalb der OnStart() stehen.
*/
double aDif, aMax;
MqlRates rates[];
int bars, copy, bar;
double fakt = MathPow(10,_Digits); // Faktor zur Umrechnung des Kurses in Points
void OnStart()
{
bars = Bars(_Symbol, timeframe); // Anzahl der Bars in diesem Timeframe
if(grenzwert>=0)
aMax=grenzwert; // Maximum auf Grenzwert setzen
copy = CopyRates(_Symbol,timeframe,0,bars,rates); // MqlRates in das dyn. Array kopieren
if(copy!=bars) // Errorcheck
{
Alert("*ERROR* in function CopyRates()");
return;
}
for(bar=0; bar<bars; bar++) // Schleife über alle MqlRates
{
aDif=(rates[bar].high-rates[bar].low)*fakt; // Differenz high-low in points
if(aDif>aMax) // auf neues Maximum prüfen
{
aMax=aDif;
Print("Neues Maximum am ",rates[bar].time, " ",DoubleToString(aMax,0));
}
}
Print(bars," Kerzen in ",EnumToString(timeframe)," überprüft.");
}
Viel Erfolg beim Umbauen für andere
Prüfzwecke.