Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 176
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Lesen, wäre aber nie auf die Idee gekommen, die Datei vor der Schleife zu öffnen )
Vielleicht habe ich ihn nicht sorgfältig gelesen.)Es gibt einen Expert Advisor, der sich beim Handel an der Pinbar orientiert. Der Roboter arbeitet korrekt auf Währungen und völlig unberechenbar auf CFDs.
Können Sie mir bitte sagen, wie das passieren kann?
Ich habe einen Roboter geschrieben, der beim Handel auf Pinbar basiert. Der Roboter arbeitet korrekt auf Währungen und völlig unberechenbar auf CFDs.
Können Sie mir bitte sagen, wie das passieren kann?
Hier ist die Pinbar-Definitionsfunktion
Wenn ich sie in den Expert Advisor einfüge, funktioniert die Funktion einwandfrei (d. h. der Expert Advisor setzt die Geschäfte auf den nächsten Balken nach dem Balken, der den Bedingungen der Funktion entspricht) für Währungspaare. Der Handel mit CFD wird jedoch überall eröffnet.
Was ist der Unterschied zwischen CFDs und Währungspaaren für diese Funktion?
Hier ist die Pinbar-Definitionsfunktion
Wenn ich sie in den Expert Advisor einfüge, funktioniert die Funktion einwandfrei (d. h. der Expert Advisor setzt die Geschäfte auf den nächsten Balken nach dem Balken, der den Bedingungen der Funktion entspricht) für Währungspaare. Der Handel mit CFD wird jedoch überall eröffnet.
Was ist der Unterschied zwischen CFDs und Währungspaaren für diese Funktion?
Ersetzen Sie zunächst alle && durch {}, so dass jede Bedingung in einem eigenen Block steht - dann können Sie in jedem Block das getestete Ergebnis abwickeln und im Protokoll sehen, welche Werte Sie erhalten.
Danke, ich habe die Ratschläge befolgt und verstanden, was ich falsch gemacht habe. Denn mein EA bewegte sich im 5-stelligen Bereich und der CFD ist nur 2-stellig und ich erwartete, dass der EA auf mindestens 50 Pips reagiert und bekam die Reaktion von 5 Pips. Ich habe es vermasselt.
Bitte helfen Sie mir bei diesem Aspekt.
Es gibt eine solche Stelle im Kodex:
MathAbs(Close1-Open1)/(High1-Low1)
Manchmal kommt es vor, dass High1=Low1. Das Prüfgerät meldet dann den kritischen Fehler, dass es nicht durch Null dividieren kann.
Wie kann man sie umgehen?
Danke, ich habe die Ratschläge befolgt und verstanden, was ich falsch gemacht habe. Denn mein EA bewegte sich im 5-stelligen Bereich und der CFD ist nur 2-stellig und ich erwartete, dass der EA auf mindestens 50 Pips reagiert und bekam die Reaktion von 5 Pips. Ich habe es vermasselt.
Bitte helfen Sie mir bei diesem Aspekt.
Es gibt eine solche Stelle im Kodex:
Manchmal kommt es vor, dass High1=Low1. Das Prüfgerät meldet dann den kritischen Fehler, dass es nicht durch Null dividieren kann.
Wie kann man sie umgehen?
Sie können es tun, ohne nachzudenken:
Hallo, beim Kompilieren ist ein Problem aufgetreten:
void OnTick()
{
double minprice=999999, mp, maxprice=-999999;
for(int i=0; i<10; i++)
{
mp = iLow(Simbol(), PERIOD_CURRENT, i);
wenn (mp < minprice)
minprice = mp;
}
for(int i=0; i<10; i++)
{
mp = iHigh(Simbol(), PERIOD_CURRENT, i);
wenn (mp > maxprice)
maxprice = mp;
}
Comment("Mindestpreis: " + DoubleToString(minprice, 5) + "\n "+
"Höchstpreis: " + DoubleToString(maxprice, 5));
}
Der Quellcode enthält Funktionen, die der Compiler durch iLow und iHigh und die Variable Simbol() dort im String-Modus schwört, aber er löst ein anderes Problem im Beispiel. Was muss ich im obigen Code ändern? Ich komme nicht weiter und kann die Schleife nicht kompilieren, um sie zu überprüfen.
AUS DEM LEHRBUCH
Wenn Sie den Wert, der dem aktuellen unvollständigen Balken entspricht, abrufen möchten, dann
können Sie die erste Form des Aufrufs verwenden, wobei Sie start_pos=0 und count=1 angeben.
Beispiel:
#property copyright "2009, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#Eigenschaft Version "1.00"
#property description "Beispielhafte Ausgabe von High[i]- und Low[i]-Werten"
#property description "für zufällig ausgewählte Balken"
double High[],Low[];
//+------------------------------------------------------------------+
//| Tiefstwert für eine bestimmte Taktnummer ermitteln
//+------------------------------------------------------------------+
double iLow(string symbol,ENUM_TIMEFRAMES timeframe,int index)
{
double low=0;
ArraySetAsSeries(niedrig,wahr);
int copied=CopyLow(Symbol,Zeitrahmen,0,Bars(Symbol,Zeitrahmen),Low);
if(kopiert>0 && index<kopiert) low=Low[index];
zurück(niedrig);
}
//+------------------------------------------------------------------+
Hoch für die angegebene Taktnummer erhalten //|
//+------------------------------------------------------------------+
double iHigh(string symbol,ENUM_TIMEFRAMES timeframe,int index)
{
double high=0;
ArraySetAsSeries(hoch,wahr);
int copied=CopyHigh(Symbol,Zeitrahmen,0,Bars(Symbol,Zeitrahmen),High);
if(kopiert>0 && index<kopiert) high=High[index];
zurück(hoch);
}
//+------------------------------------------------------------------+
Hallo, beim Kompilieren ist ein Problem aufgetreten:
void OnTick()
{
double minprice=999999, mp, maxprice=-999999;
for(int i=0; i<10; i++)
{
mp = iLow(Simbol(), PERIOD_CURRENT, i);
wenn (mp < minprice)
minprice = mp;
}
for(int i=0; i<10; i++)
{
mp = iHigh(Simbol(), PERIOD_CURRENT, i);
wenn (mp > maxprice)
maxprice = mp;
}
Comment("Mindestpreis: " + DoubleToString(minprice, 5) + "\n "+
"Höchstpreis: " + DoubleToString(maxprice, 5))
}
Der Quellcode enthält Funktionen, die der Compiler auf iLow und iHigh b schwört. Die Variable Simbol() befindet sich dort im String-Modus, aber sie löst ein anderes Problem im Beispiel. Was muss ich im obigen Code ändern? Ich komme nicht weiter und kann die Schleife nicht kompilieren, um sie zu überprüfen.
AUS DEM LEHRBUCH
Wenn Sie den Wert, der dem aktuellen unvollständigen Balken entspricht, erhalten möchten, dann
können Sie die erste Form des Aufrufs verwenden, wobei Sie start_pos=0 und count=1 angeben.
Beispiel:
#property copyright "2009, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#Eigenschaft Version "1.00"
#property description "Beispielhafte Ausgabe von High[i]- und Low[i]-Werten"
#property description "für zufällig ausgewählte Balken"
double High[],Low[];
//+------------------------------------------------------------------+
//| Tiefstwert für eine bestimmte Taktnummer ermitteln
//+------------------------------------------------------------------+
double iLow(string symbol,ENUM_TIMEFRAMES timeframe,int index)
{
double low=0;
ArraySetAsSeries(niedrig,wahr);
int copied=CopyLow(Symbol,Zeitrahmen,0,Bars(Symbol,Zeitrahmen),Low);
if(kopiert>0 && index<kopiert) low=Low[index];
zurück(niedrig);
}
//+------------------------------------------------------------------+
Hoch für die angegebene Taktnummer erhalten //|
//+------------------------------------------------------------------+
double iHigh(string symbol,ENUM_TIMEFRAMES timeframe,int index)
{
double high=0;
ArraySetAsSeries(hoch,wahr);
int copied=CopyHigh(Symbol,Zeitrahmen,0,Bars(Symbol,Zeitrahmen),High);
if(kopiert>0 && index<kopiert) high=High[index];
zurück(hoch);
}
//+------------------------------------------------------------------+
In diesem WortSimbol() ist ein Fehler enthalten, Sie sollten Symbol() oder _Symbol schreiben.
Sie haben einen Fehler in diesem WortSimbol() - Symbol() oder _Symbol sollte geschrieben werden
Danke, der Fehler bei Simbol wurde durch die korrekte Schreibweise von Symbol korrigiert. Mit den Funktionen iLow und iHigh stimmt etwas nicht.
Derprozentuale Unterschied zwischen MQL4 und MQL5 ? sonst muss ich mich jedes Mal am Kopf kratzen, wenn ich die MQL4-Videotutorials durchsehe.