![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Das habe ich bekommen. Bitte sagen Sie mir, was los ist. Vielen Dank im Voraus!
Hallo!
Ich schreibe hier, weil es niemanden auf mq4 zu geben scheint.
Können Sie mir sagen, was ich falsch mache? Option 2 funktioniert nicht.
Hallo, könnten Sie mir bitte helfen, eine Funktion in MT4 zu schreiben. Ich kenne meinen Kontostand, ich weiß, wie viele Trades ich eröffnen werde (z.B. 9), ich kenne das Risiko (z.B. 3% des Kontostandes), ich muss ein Lot für den ersten Trade berechnen, wenn jedes weitere Lot verdoppelt wird und sich alle Trades überschneiden werden.
Das habe ich bekommen. Bitte sagen Sie mir, was los ist. Vielen Dank im Voraus!
Hallo!
Ich schreibe hier, weil es scheint, dass niemand auf mq4 ist.
Können Sie mir sagen, was ich falsch mache? Option 2 funktioniert nicht.
Hervorgehoben: Es sollte eine Zuweisung - "=" - geben und Sie haben einen Vergleich - "==".
Hallo zusammen!
Ich bin lernen, Roboter in mt4 zu schreiben, entschied ich mich mit binären Optionen zu starten. Ich schreibe einen einfachen EA, aber der Compiler generiert eine Menge Warnungen, die ich nicht verstehen kann (
Hilfe: "Oh MQL4 Guru" =))))))
Vielen Dank im Voraus!)
Hier ist der Code für den EA.
//+------------------------------------------------------------------+
//|Bolinger_Bands_traider.mq4 |
//|Copyright 2017, Penrov Nikolay |
//|vk.com/buzamonolit |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, Petrov Nikolay"
#property link "vk.com/buzamonolit"
#Eigenschaft Version "1.00"
#Eigenschaft streng
//+------------------------------------------------------------------+
//| Experten-Initialisierungsfunktion|
//+------------------------------------------------------------------+
extern int Bolinger_Bands = 20; // Bollinger Band Zeitraum
extern double Delta = 0.0003; // In welchem Abstand soll der Auftrag eröffnet werden?
string Symb; // Name des Finanzinstruments.
int Total; // Anzahl der Bestellungen
//+------------------------------------------------------------------+
//| Experten-Initialisierungsfunktion|
//+------------------------------------------------------------------+
int init()
{
//----
Initialize_Objects(0);
//----
zurück(0);
}
//+------------------------------------------------------------------+
//| Experten-Deinitialisierungsfunktion|
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
zurück(0);
}
//+------------------------------------------------------------------+
//| Expertenstartfunktion|
//+------------------------------------------------------------------+
int start()
{
//----
double price = Bid;
double CurrBol_High = iBands(Symb,0, Bolinger_Bands, 0,0, PRICE_CLOSE, MODE_UPPER, 0);
double CurrBol_Low = iBands(Symb,0, Bolinger_Bands, 0,0, PRICE_CLOSE, MODE_LOWER, 0);
double PriceBol_High = Preis - CurrBol_High;
double PriceBol_Low = Preis - CurrBol_Low;
datetime NextClose = Time[0] + Period()*60*2;
int MinutesToNextClose = (NextClose - TimeCurrent())/60 + 1;
int err;
// Zählen der Aufträge
Symbol=Symbol();// Name der Flosse.symbol(); // symbol(); // symbol(); // order icon(); // symbol().
Gesamt=0;// Anzahl der Aufträge
for(int i=1; i<=OrdersTotal(); i++) // Auftragsschleife
{
if (OrderSelect(i-1,SELECT_BY_POS)==true) // Wenn es einen nächsten
{// Auftragsanalyse:
if (OrderSymbol()!=Symb)continue; // Nicht unser Finanzinstrument
wenn (Auftragsart()>1)// Wir haben einen schwebenden Auftrag
{
Alert("Pending order detected. Expert Advisor is not working;)
zurück(0);// Beenden()
}
Total++;// Gegenmarkt. Bestellung
wenn (Gesamt>1)// Nicht mehr als ein Auftrag
{
Alert("Mehrere Marktaufträge, Expert Advisor funktioniert nicht");
zurück(0);// Beenden()
}
}
}
ObjectSetText("Obj_Label", "TF" + Zeitraum() + ", " + DoubleToStr(price, 5) + ", tick " + TimeToStr(TimeCurrent(), TIME_SECONDS) + ", O@" + TimeToStr(Time[0], TIME_MINUTES) + ", NC@" + TimeToStr(NextClose, TIME_MINUTES) + " (" + MinutesToNextClose + " min)", 10, "Arial", DarkGreen );
ObjectSetText("Obj_Label2", "Orders:" + Total + ", delta " + DoubleToStr(Delta,5) + ", distance to MA:" + DoubleToStr(PriceBol_High, 5), 10, "Arial", DarkGreen );
ObjectSetText("Obj_Label3", "Aufträge: " + Gesamt + ", Delta " + DoubleToStr(Delta,5) + ", Abstand zum MA:" + DoubleToStr(PriceBol_Low, 5), 10, "Arial", DarkGreen );
// Preisanalyse und Auftragseröffnung
if ((MathAbs(PriceBol_Low) < Delta) && (Preis > CurrBol_Low) && (Open[0] > CurrBol_Low+Delta) && (Total<1))
{
if (OrderSend(Symbol(), OP_BUY, 1.00,Bid , 3, 0, 0, "BO exp:900", 0,DoubleToStr(MinutesToNextClose,0), Green) >0) Print ("Opened OK");
sonst
{
err=GetLastError();
Print("error(",err,"));
zurück(0);
}
Print ("CALL @ " + price + " + TimeToStr(TimeCurrent(), TIME_SECONDS) + " exp in " + MinutesToNextClose);
}
if ((MathAbs(PriceBol_High) < Delta) && (price < CurrBol_High) && (Open[0] < CurrBol_High-Delta) && (Total<1))
{
if (OrderSend(Symbol(), OP_SELL, 1.00,Bid , 3, 0, 0, "BO exp:900", 0,DoubleToStr(MinutesToNextClose,0), Red) > 0) Print ("Opened OK");
sonst
{
err=GetLastError();
Print("error(",err,"));
zurück(0);
}
Print ("PUT @ " + price + " + TimeToStr(TimeCurrent(), TIME_SECONDS) + " exp in " + MinutesToNextClose);
}
//----
zurück(0);
}
//+------------------------------------------------------------------+
int Initialize_Objects(int Win) // Benutzer fie
{// .Objekterstellung
ObjectCreate("Obj_Label",OBJ_LABEL, Win, 0,0); // Objekterstellung
ObjectSet("Obj_Label", OBJPROP_CORNER, 0); // Bindung an eine Ecke
ObjectSet("Obj_Label", OBJPROP_XDISTANCE, 13); // X-Koordinate
wenn (Win==0)
ObjectSet("Obj_Label",OBJPROP_YDISTANCE, 15);//Y-Koordinate
sonst
ObjectSet("Obj_Label",OBJPROP_YDISTANCE,15);//Y-Koordinate
ObjectCreate("Obj_Label2",OBJ_LABEL,Win, 0,0); // Erstellung von Objekten
ObjectSet("Obj_Label2",OBJPROP_CORNER, 0); // Bindung an eine Ecke
ObjectSet("Obj_Label2", OBJPROP_XDISTANCE, 13); // X-Koordinate
wenn (Win==0)
ObjectSet("Obj_Label2",OBJPROP_YDISTANCE, 35);//Y-Koordinate
sonst
ObjectSet("Obj_Label2",OBJPROP_YDISTANCE, 35);//Y-Koordinate
ObjectCreate("Obj_Label3",OBJ_LABEL, Win, 0,0); // Objekt erstellen
ObjectSet("Obj_Label3",OBJPROP_CORNER, 0); // Bindung an eine Ecke
ObjectSet("Obj_Label3", OBJPROP_XDISTANCE, 13); // X-Koordinate
wenn (Win==0)
ObjectSet("Obj_Label3",OBJPROP_YDISTANCE, 55);//Y-Koordinate
sonst
ObjectSet("Obj_Label3",OBJPROP_YDISTANCE, 55);//Y-Koordinate
zurück(0);// Beenden von Benutzer.Funktion
}
Hier sind die Warnhinweise. Ich kann nicht herausfinden, was er nicht mag(
möglicher Datenverlust aufgrund von Typkonvertierung Bolinger_Bands_traider.mq4 51 24
implizite Umwandlung von 'Zahl' in 'String' Bolinger_Bands_traider.mq4 76 35
implizite Umwandlung von 'Zahl' in 'String' Bolinger_Bands_traider.mq4 76 227
implizite Umwandlung von 'Zahl' in 'String' Bolinger_Bands_traider.mq4 77 43
implizite Umwandlung von 'Zahl' in 'String' Bolinger_Bands_traider.mq4 78 43
implizite Umwandlung von 'String' in 'Zahl' Bolinger_Bands_traider.mq4 85 71
implizite Umwandlung von 'Zahl' in 'String' Bolinger_Bands_traider.mq4 93 23
implizite Umwandlung von 'Zahl' in 'String' Bolinger_Bands_traider.mq4 93 91
implizite Umwandlung von 'String' in 'Zahl' Bolinger_Bands_traider.mq4 99 72
implizite Umwandlung von 'Zahl' in 'String' Bolinger_Bands_traider.mq4 107 23
implizite Umwandlung von 'Zahl' in 'String' Bolinger_Bands_traider.mq4 107 91
0 Fehler, 11 Warnung(en), Kompilierzeit: 204 msec 1 12
Elementarbereich. Der Fehler liegt bei der FunktionGetLots(). Die gesamte Funktion.
Vielleicht können Sie mir sagen, wie man es richtig schreibt. Ich wollte mit Schleife durch Brute-Forcing von max Los zu berechnen.
Vielleicht können Sie mir sagen, wie man es richtig schreibt. Ich wollte mit Hilfe einer Schleife berechnen, indem ich vom maximalen Los ausgehe.
Wo ist die Logik? Sie legen die maximal zulässige Menge für den ersten Auftrag fest und erhöhen sie dann für jeden weiteren Auftrag. Erscheint Ihnen das nicht, gelinde gesagt, nicht sehr vernünftig?
Außerdem verringern Sie die Menge des ersten Auftrags in der Schleife mit einer völlig unverständlichen Methode, während die Mengen der anderen Aufträge, die zuvor "berechnet" wurden, unverändert bleiben, und diese Werte überschreiten in keiner Weise die Grenzen dieser Funktion. Was tun sie dann?
Ganz zu schweigen davon, dass die Inkrementschleife keine reelle Zahl sein kann, sondern ein Zähler, eine ganze Zahl, sein muss. Aber Sie setzen den Wert des Loses als Zähler und subtrahieren bei jeder Iteration einen Wert davon. Dies ist ein großer Fehler, ein sehr schwerer Fehler.
Klären Sie die Logik zunächst in Ihrem Kopf und versuchen Sie dann, sie in Ihren Code zu implementieren.
Aber hier sind die Warnungen. Ich kann nicht verstehen, was er nicht mag(
möglicher Datenverlust aufgrund von Typkonvertierung Bolinger_Bands_traider.mq4 51 24
implizite Umwandlung von 'Zahl' in 'String' Bolinger_Bands_traider.mq4 76 35
implizite Umwandlung von 'Zahl' in 'String' Bolinger_Bands_traider.mq4 76 227
implizite Umwandlung von 'Zahl' in 'String' Bolinger_Bands_traider.mq4 77 43
implizite Umwandlung von 'Zahl' in 'String' Bolinger_Bands_traider.mq4 78 43
implizite Umwandlung von 'String' in 'Zahl' Bolinger_Bands_traider.mq4 85 71
implizite Umwandlung von 'Zahl' in 'String' Bolinger_Bands_traider.mq4 93 23
implizite Umwandlung von 'Zahl' in 'String' Bolinger_Bands_traider.mq4 93 91
implizite Umwandlung von 'String' in 'Zahl' Bolinger_Bands_traider.mq4 99 72
implizite Umwandlung von 'Zahl' in 'String' Bolinger_Bands_traider.mq4 107 23
implizite Umwandlung von 'Zahl' in 'String' Bolinger_Bands_traider.mq4 107 91
0 Fehler, 11 Warnung(en), Kompilierzeit: 204 msec 1 12
Eine Zeile mit der Nummer 51 ausgeben, da es hier keine Zählung gibt, um den Fehler"possible loss of data due to type conversion Bolinger_Bands_traider.mq4 51 24" zu verstehen
Der Rest: "implizite Umwandlung von 'Zahl' in 'String' Bolinger_Bands_traider.mq4 107 91
numerische Werte in eine Textzeichenfolge übersetzen, wo wir das Objekt erstellen - eine Textzeichenfolge, zum Beispiel
Zeitraum()
sollte es sein
DoubleToString(Zeitraum(),0)
die numerischen Werte in eine Textzeichenfolge übersetzen, wobei wir ein Textzeichenfolgenobjekt erstellen, z. B.
Zeitraum()
sollte es sein
DoubleToString(Zeitraum(),0)
Seit wann ist die Periode ein Double-Typ?