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
Time.GetData(i)
zu
datetime Time_GetData = Time.GetData(i);
Funktioniert nicht...
Ich habe auf die Hilfe verwiesen. Es heißt dort
int Search(
CObject* element // образец
) const
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.
CObject
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???
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
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
double Free =AccountInfoDouble(ACCOUNT_MARGIN_FREE); // Свободн средстваdouble One_Lot=SymbolInfoDouble(_Symbol,SYMBOL_TRADE_CONTRACT_SIZE);// Стоимость 1 лота без плечаdouble Step =SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP); // Шаг изменен размераlong Laverage=AccountInfoInteger(ACCOUNT_LEVERAGE); // Плечоdouble One_Lot_Lav=ND((One_Lot/Laverage)*Ask); // Стоимость лота с плечом для бай
Lts=MathFloor(Free*Prots/One_Lot_Lav/Step)*Step;// Для открытия
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.
Ich vermute das ich ein Object erzeugen muss und dann dort die Variable drin ausgebe?
Als Schritt 1 will ich einfach dort den aktuellen Wert der Variable ausgeben, welcher sich minuten-weise ändert
Einfach nur um zu sehen, dass ich meine Werte richtig ausgeben kann
Schritt 2 wäre die Werte zu speichern in einem Array (das ist der Buffer?)
Ich möchte die sich minutenweise änderten Werte in einem Array speichern, sodass ich zum Beispiele sehen kann ob der Chart nach unten oder nach oben geht. Ich würde dann eben die Werte vergleichen und sehen ob die Zahlen größer werden oder kleiner werden...
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.
MT4 und MT5 sind nicht gleich und Programme lassen sich nicht übertragen - hier bist Du im MT4 Thread!
Es gibt Skripts, die laufen nur einmal durch, Indikatoren die Puffer anbieten, die auf dem Chart gezeichnet werden und Expert Advisors (EA), die handel können/dürfen
Programmnieren kann und wird Dir hier niemand beibringen, für ein eigenes Projekt gibt es, wie es W. Roeder so schön zusammenfasst 4 Optionen: suchen, lernen, bitten oder zahlen: https://www.mql5.com/en/forum/429880#comment_41310126.
In der Menüzeile eines Posts gibt es Sprachkürzel mit denen man sich einen Beitrag übersetzen lassen kann!
Bedenke, es gibt fast nichts, was nicht schon für MT4/MT5 programmiert wurde => Lerne zu suchen, oben rechts die Lupe oder hier: https://www.mql5.com/de/search
Mein persönlicher Tipp wäre nimm Dir Beispiele aus der CodeBas, den Artikeln oder im lokalen Ordner (zB,\Experts\Examples\..) und verstehe, wie es dort gemacht wird - ist viel schneller, als alle Fehler selbst mal ausprobieren!
Übrigens: Im Editor den Kursor auf eine MQ-Funktion stellen und F1 drücken, es erscheint die Hilfe zu genau dieser Funktion - manche haben auch Beispiele, fertig zum Kopieren und anpassen.
How to ask questions the smart way. (20 04 ) only ask questions with yes/no answers if you want “yes” or “no” as the answer. Beg at: coding help - mql4 programming forum make it no repaint please. ) we are willing to help you when you post your attempt (using code button ) and state the nature of your problem
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"?
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