Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1953
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
Guten Tag.
Angesichts des mangelnden Verständnisses dafür, wie ".Search()" in der Standardbibliothek.
Ich verwende die Standardklasse - CiTime() - Die Klasse ist eine Klasse für den Zugriff auf die Zeitreihe der Balkeneröffnung.
Wenn ich versuche, das gewünschte Datum zu finden (die Klasse ist dieselbe, aber der Zeitraum ist anders)
int k = TimeFrac.Search( Time.GetData(i) );
Es wird ein Fehler gemacht:
'GetData' - Parameterumwandlung nicht erlaubt.
Versucht zu ersetzen
zu
datetime Time_GetData = Time.GetData(i);
Funktioniert nicht...
Ich habe auf die Hilfe verwiesen. Es heißt dort
Und ein Beispiel für eine wilde Bewerbung.
Es stellt sich heraus, dass die Suche nach einem "Datum" in einer Standardklasse durch ein bekanntes "Datum" aus derselben Klasse nicht möglich ist!?!?
Nur ein Klassenelement.
Ich konnte kein funktionierendes Beispiel dafür finden, wie man nach einem Datum in dieser Klasse sucht.
An wen kann ich mich wenden, wenn ich Hilfe benötige???
Ich danke Ihnen.
Hallo zusammen, bitte sagt mir, was los ist, es funktioniert aus irgendeinem Grund nicht.
Frage. Für 4k.
doubleMarketInfo(
MODE_LOTSIZE
15
Kontraktgröße in der Basiswährung des Instruments
Verstehe ich das richtig, ist dies der Wert von 1 (einem) Lot? und geteilt durch den Leverage, der Wert des Lots einschließlich des Leverage in der ersten Währung des Instruments
MODE_MARGINREQUIRED
32
Höhe der freien Mittel, die benötigt werden, um 1 Los zum Kauf zu eröffnen
Gibt es ein Analogon zu dem letzten in 5, falls ja, habe ich es nicht gefunden.
MarginFree-Fonds sind eindeutig. Wenn wir sie durch den Wert eines Lots teilen, erhalten wir, wie viele Lots wir ohne Hebelwirkung eröffnen können, und multipliziert mit der Hebelwirkung, wie viele mit Hebelwirkung. Ist das richtig oder nicht?
Zy. Ist dies korrekt für eine 5
Hallo,
ich bin noch relativ neu in der Programmierung von MQL4/5 und hoffe ihr könnt mir helfen meine Kenntnisse schnell zu verbessern. Programmierkenntnisse habe ich, allerdings bin ich nicht wirklich gut.
Ich nutze die Funktion icustom um auf Berechnungen eines Indikators (geschützt, kein Code zugriff) zuzugreifen und dann dort weitere Berechnungen durchzuführen/ Alerts.
Ich möchte nun folgende Aufgabe durchführen:
Speichere den Wert in einer Variable und gebe diese im Fenster meine Indikators auf dem Screen aus.
Schritt 2 wäre die Werte zu speichern in einem Array (das ist der Buffer?)
Danke euch vielmals.
Svenja
Ich möchte gerne diese hellblauen und pinken Mini-Barriers erzeugen und an meinen Chart plotten.
Es sind jeweils die Last Low 1 & 2, Last High 1& 2 werte.
Jeweils die letzten 2 Werte Current & Previous!
Da ich die Werte leider nicht direkt aus dem geschützten Indikator rausholen kann, muss ich sie wohl leider nun selbst berechnen, in die entsprechenden Variablen speichern und an meinen Graf plotten.
Würde mich hier über Hilfe freuen.
Vielen Dank.
Svenja
Also:
(Übrigens bei Artikeln kriegt man die deutsche Übersetzung, wenn man in der Url de einträgt: Eng: https://www.mql5.com/en/articles/496 => Deu: https://www.mql5.com/de/articles/496 // Quickstart for newbies
https://www.metatrader5.com/de/metaeditor/help/development/debug
https://www.mql5.com/de/articles/654 // Zur Fehlerbehebung von MQL5-Programmen (Debugging)
https://www.mql5.com/de/articles/35 // Einführung in MQL5: Schreiben eines einfachen Expert Advisor und benutzerdefinierten Indikators, Siehe Ende: Starten und Debuggen
https://www.mql5.com/de/articles/2041 // Die Fehlerverarbeitung und Protokollierung in MQL5
https://www.mql5.com/de/articles/272
https://www.mql5.com/de/articles/150 //Fehler finden und Protokollierung
MyEA cannot be pushed to black chart graphics windows. Who can give me advice? Thanks in advance. greeting Khai
//+------------------------------------------------------------------+
//| MyEA.mq4 |
//| Copyright 2024, MetaQuotes Software Corp. |
//| https://www.metaquotes.net|
//+------------------------------------------------------------------+
#property strict
// Externe Eingabeparameter
input int TP = 200; // Take Profit in Punkten
input int SL = 100; // Stop Loss in Punkten
input int Distance = 200; // Abstand zwischen den Trades
input int Period_MA = 14; // Periode für die Moving Average-Indikatoren
// Indikatoren
input ENUM_MA_METHOD Method_MA = MODE_SMA; // Methode für Moving Average
input ENUM_APPLIED_PRICE AppliedPrice_MA = PRICE_CLOSE; // Preis für Moving Average
// Globale Variablen
double maBuffer[];
double maPrevious[];
double maCurrent[];
int lastTradeBar = 0;
//+------------------------------------------------------------------+
//| Experteninitialisierungsfunktion |
//+------------------------------------------------------------------+
int OnInit()
{
// Indikatoren initialisieren
ArraySetAsSeries(maBuffer, true);
ArraySetAsSeries(maPrevious, true);
ArraySetAsSeries(maCurrent, true);
// Chart-Indikatoren anhängen
SetIndexBuffer(0, maBuffer);
SetIndexBuffer(1, maPrevious);
SetIndexBuffer(2, maCurrent);
// Indikatoren berechnen
SetIndexStyle(0, DRAW_LINE);
SetIndexBuffer(0, maBuffer);
SetIndexStyle(1, DRAW_LINE);
SetIndexBuffer(1, maPrevious);
SetIndexStyle(2, DRAW_LINE);
SetIndexBuffer(2, maCurrent);
// Indikator-Puffer definieren
SetIndexLabel(0, "MA Buffer");
SetIndexLabel(1, "Previous MA");
SetIndexLabel(2, "Current MA");
// Experteninitialisierung erfolgreich
return (INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expertenstartfunktion |
//+------------------------------------------------------------------+
void OnStart()
{
// Endlosschleife für den Handel
while (!IsStopped())
{
// Aktuelle Balkenindex
int currentBar = Bars - 1;
// Nur neuen Trade eröffnen, wenn genügend Bars vorhanden sind
if (currentBar > lastTradeBar)
{
// Moving Averages berechnen
CalculateMovingAverages();
// Trend prüfen und Handelsentscheidung treffen
if (IsTrendUp() && IsDistanceMet(currentBar))
{
// Long Trade eröffnen
OpenTrade(currentBar);
}
}
// Auf nächsten Tick warten
Sleep(1000);
}
}
//+------------------------------------------------------------------+
//| Funktion zum Berechnen der Moving Averages |
//+------------------------------------------------------------------+
void CalculateMovingAverages()
{
// Moving Averages für den aktuellen Balken berechnen
maCurrent[0] = iMA(NULL, 0, Period_MA, 0, Method_MA, AppliedPrice_MA, 0);
// Moving Averages für den vorherigen Balken berechnen
maPrevious[1] = iMA(NULL, 0, Period_MA, 1, Method_MA, AppliedPrice_MA, 0);
// Moving Averages für den vorvorherigen Balken berechnen
maPrevious[2] = iMA(NULL, 0, Period_MA, 2, Method_MA, AppliedPrice_MA, 0);
}
//+------------------------------------------------------------------+
//| Funktion zur Überprüfung des Trends |
//+------------------------------------------------------------------+
bool IsTrendUp()
{
return (maCurrent[0] > maPrevious[1] && maPrevious[1] > maPrevious[2]);
}
//+------------------------------------------------------------------+
//| Funktion zur Überprüfung, ob der Abstand zwischen den Trades |
//| erfüllt ist |
//+------------------------------------------------------------------+
bool IsDistanceMet(int currentBar)
{
return (currentBar - lastTradeBar >= Distance);
}
//+------------------------------------------------------------------+
//| Funktion zum Öffnen eines Trades |
//+------------------------------------------------------------------+
void OpenTrade(int currentBar)
{
double entryPrice = Ask; // Zum Marktpreis eröffnen
double stopLoss = entryPrice - SL * Point;
double takeProfit = entryPrice + TP * Point;
// Long-Trade eröffnen
int ticket = OrderSend(Symbol(), OP_BUY, 1.0, entryPrice, 3, stopLoss, takeProfit, "Long Trade", 0, 0, clrGreen);
// Überprüfen, ob der Trade erfolgreich eröffnet wurde
if (ticket > 0)
{
Print("Long Trade erfolgreich eröffnet: Ticket = ", ticket, ", Preis = ", entryPrice);
lastTradeBar = currentBar; // Letzten Trade-Bar aktualisieren
}
else
{
Print("Fehler beim Öffnen des Long Trades: Fehlercode = ", GetLastError());
}
}
und b) "Algo-Handel erlauben" im Fenster nach dem Aufruf im ersten Tab "Allgemein" (vor den Parametern) auch aktiviert werden muss:
Der Wert der Variablen in einem EA ist für einen anderen EA nicht verfügbar. Die Hauptsache ist, dass entweder die Symbole oder die Magie oder beides unterschiedlich sind.
Hallo Alexey,
ich habe in einem alten "Thread" - nennt man das so? - die obige Antwort gefunden, nachdem ich seit Tagen versuche, mit meinem EA weiterzukommen.
Darf ich Dich / Sie um Hilfe bitten? Sie scheinen sich mit MQL5 sehr gut auszukennen - ich bin Anfänger auf diesem Gebiet. Ich habe bisher keine eindeutigen Antworten gefunden und bin selbst bei kleinen Dingen immer wieder irritiert (z.B. verschiedenen Server-Zeiten bei 2 verschiedenen Brokern... mal plus eine Stunde zur MESZ und mal minus eine Stunde...). Ich habe gelesen, dass man die Serverzeit im MT5 nicht ändern kann - also muss ich wohl damit leben...
Zu meiner Hauptfrage:
Ich habe einen funktionierenden EA. Diesen möchte ich parallel auf z.B. dem DAX und der NQ laufen lassen. Dazu habe ich verschiedene Dateinamen (also EADAX und EANQ) vergeben und auch verschiedene Magic Numbers. Hat bisher alles nichts geholfen: für die NQ-Position wird z.B. die Schließzeit der letzten Position des DAX übernommen... Daher meine grundsätzliche Verständnisfrage: werden irgendwelche Werte (z.B. die von Variabeln) irgendwo quasi "zentral" gespeichert und bei Verwendung von 2 Versionen eines EA auf verschiedenen CHarts/Symbolen von beiden EA-Versionen genutzt und daher "überschrieben"?
Vielen lieben Dank für die Hilfe
Matthias