Hallo zusammen!
Ich sollte gleich darauf hinweisen, dass ich versucht habe, diese Fragen in dem entsprechenden Thread hier zu stellen, aber irgendwie hat die Frage nicht die Aufmerksamkeit bekommen, die sie verdient hätte. Obwohl ich den Eindruck habe, dass die angesprochenen Themen zumindest einmal in den Köpfen vieler Menschen auftauchen. Eine Art von Fragen aus den FAQ (obwohl ich mich irren könnte). Ich werde die Fragen selbst hier direkt duplizieren:
1. Es gibt einen Unterschiedzwischen Mql4 und Mql5 (Website und Programmiersprache). Es gibt Metatrade 4 und Metatrader 5 mit Mql4 bzw. Mql5. Es gibt auch zwei verschiedene entsprechende Websites. Gleichzeitig führen alle Expert Advisors, die ich mir in MT4 angesehen habe, zu dieser Website. Welche ist wichtiger? Welches Forum ist "lebendiger"? Wo ist der beste Ort, um Fragen zu stellen? Gibt es eine Abwärtskompatibilität zwischen verschiedenen Versionen von MT und Mql? Ich persönlich schreibe derzeit meinen MT4 Expert Advisor auf Mql4. Das liegt daran, dass der Broker, den ich zum Testen der Demo verwende, MT4 verwendet. ...
...
Es wäre logisch, meine Fragen zu MQL4 in das "vierte" Forum zu stellen. Obwohl der Unterschied zwischen MQL5 und MQL4 nicht sehr groß ist. Wir sind von MQL4 umgezogen. Wenn Sie also eine Frage zur "4" in diesem Forum stellen wollen, sollten Sie in der Überschrift des Themas angeben, dass sie sich auf MT4 bezieht. Auf diese Weise wird es klarer sein.
...
Es ist sinnvoll, Fragen zu MQL4 an das "vierte" Forum zu richten. Obwohl die Unterschiede zwischen MQL5 und MQL4 nicht signifikant sind. Es ist ein Übergang von MQL4. Wenn Sie also eine Frage zur "4" in diesem Forum stellen wollen, sollten Sie in der Überschrift des Themas angeben, dass sie sich auf MT4 bezieht. Auf diese Weise wird es klarer sein.
Für die zweite Frage, siehe input, sinput, ParametrGetRange(...), ParametrSetRange(...).
Ich habe nicht gefragt, wie man externe Parameter des Expert Advisors einstellt. Das habe ich vor langer Zeit gelernt (Eingabe, extern). Ich habe gefragt, wie und ob es möglich ist, den in den Einstellungen angezeigten Parametersatz dynamisch zu ändern. ParametrGetRange und ParametrSetRange sind in mql nicht zu finden. Dies sind keine eingebauten Funktionen? Wo kann man nach ihnen suchen?
P.S. Die Verwendung von sinput kann nur als Hinweis darauf dienen, dass der Parameter nicht allein optimiert werden kann, ohne mit anderen Parametern verbunden zu sein. Aber ich kann nicht einmal dynamisch den Input in den Sinput ändern, abhängig von den Parametern, die ich bereits gewählt habe, um vorzuschlagen, welche Parameter in der Optimierung zu holen sind (welche Parameter angesichts der gewählten Parameter von Bedeutung sind), so dass ich keine Zeit damit verschwenden muss, die Parameter durchzugehen, die derzeit keinen Sinn machen
Auf der Registerkarte "Parameter" kann nichts programmatisch geändert werden. Sie können den deaktivierten Parametersatz überspringen, indem Sie INIT_PARAMETERS_INCORRECT von OnInit() zurückgeben.
Sie können die Start-, Schritt-, Stopp- und Optimierungserlaubnis programmatisch ändern: https://www.mql5.com/ru/docs/optimization_frames
- www.mql5.com
Auf der Registerkarte Parameter kann nichts programmatisch geändert werden. Ein deaktivierter Parametersatz kann nicht übersprungen werden - ein Stub kann eingeschaltet werden, um keine unnötigen Berechnungen durchzuführen.
Sie können die Start-, Schritt-, Stopp- und Optimierungsauflösung programmatisch ändern: https://www.mql5.com/ru/docs/optimization_frames
Das Thema heißt "Grundlegende Fragen eines Anfängers", und als Anfängerin verstehe ich nichts. Nun, hier werde ich eine Antwort auf meine elementare Frage bekommen (oder besser gesagt, ich hoffe es). Ich habe versucht, eine Schritt-für-Schritt-Anleitung zum Schreiben meines Expert Advisors zu befolgen. Ich bin bei dem Aspekt hängen geblieben, wie man eine offene Position in MKL5 zwangsweise schließt (ohne auf den SL oder TP zu warten), wenn ein bestimmtes Indikatorsignal erscheint, wie z.B. beim Schnittpunkt zweier MAs, oder wenn die Verengung der Bollinger-Linien oder andere Signale? Es muss eine Funktion wie ClosePos() geben, aber wo ist sie und wie bekomme ich sie? Ich bitte um ein detailliertes Stück Code, weil ich selbst die Feinheiten nicht verstehe - ich bin noch ein Baby in MKL5.
Das Thema heißt "Grundlegende Fragen eines Anfängers", und als Anfängerin verstehe ich nichts. Nun, hier werde ich eine Antwort auf meine elementare Frage bekommen (oder besser gesagt, ich hoffe es). Ich habe versucht, eine Schritt-für-Schritt-Anleitung zum Schreiben meines Expert Advisors zu befolgen. Ich bin bei dem Aspekt hängen geblieben, wie man eine offene Position in MKL5 zwangsweise schließt (ohne auf den SL oder TP zu warten), wenn ein bestimmtes Indikatorsignal erscheint, wie z.B. beim Schnittpunkt zweier MAs, oder wenn die Verengung der Bollinger-Linien oder andere Signale? Es muss eine Funktion wie ClosePos() geben, aber wo ist sie und wie bekomme ich sie? Ich bitte um einen ausführlichen Codeschnipsel, da ich selbst die Feinheiten nicht verstehe - in MKL5 ist noch ein Baby.
Ich beschäftige mich selbst seit weniger als einem Monat mit diesem Thema. Die Frage ist, ob Sie es selbst tun oder im Forum fragen wollen. Einfache Fragen werden in der Regel nicht gestellt, weil es nicht sehr gut ist (Sie können in der Hilfe nachsehen, suchen Sie nach fertigen Antworten im Internet). Deshalb habe ich diese ziemlich umfangreichen Fragen gestellt, die in diesem Monat aufkamen. Was Ihre Frage betrifft... Die Funktion OrderClose wird aufgerufen. Es gibt viele Beispiele für seine Verwendung. Sie ist in der integrierten MACD-Probe enthalten. Hier ist der Code, der zum Schließen von Aufträgen durch MACD-Signale verwendet wird (hier ist ein Codebeispiel für die Implementierung von Trailing Stop)
for(cnt=0;cnt<total;cnt++)
{
if(!OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))
continue;
if(OrderType()<=OP_SELL && // check for opened position
OrderSymbol()==Symbol()) // check for symbol
{
//--- long position is opened
if(OrderType()==OP_BUY)
{
//--- should it be closed?
if(MacdCurrent>0 && MacdCurrent<SignalCurrent && MacdPrevious>SignalPrevious &&
MacdCurrent>(MACDCloseLevel*Point))
{
//--- close order and exit
if(!OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet))
Print("OrderClose error ",GetLastError());
return;
}
//--- check for trailing stop
if(TrailingStop>0)
{
if(Bid-OrderOpenPrice()>Point*TrailingStop)
{
if(OrderStopLoss()<Bid-Point*TrailingStop)
{
//--- modify order and exit
if(!OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green))
Print("OrderModify error ",GetLastError());
return;
}
}
}
}
else // go to short position
{
//--- should it be closed?
if(MacdCurrent<0 && MacdCurrent>SignalCurrent &&
MacdPrevious<SignalPrevious && MathAbs(MacdCurrent)>(MACDCloseLevel*Point))
{
//--- close order and exit
if(!OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet))
Print("OrderClose error ",GetLastError());
return;
}
//--- check for trailing stop
if(TrailingStop>0)
{
if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
{
if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
{
//--- modify order and exit
if(!OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red))
Print("OrderModify error ",GetLastError());
return;
}
}
}
}
}
}
Ich selbst mache das seit weniger als einem Monat. Die Frage ist, ob Sie es selbst machen wollen oder ob Sie Fragen im Forum stellen wollen. Normalerweise stelle ich keine einfachen Fragen, weil das nicht wirklich angebracht ist (Sie können im Helpdesk nachsehen oder im Internet nach Antworten suchen). Deshalb habe ich diese ziemlich umfangreichen Fragen gestellt, die in diesem Monat aufkamen. Was Ihre Frage betrifft... Die Funktion OrderClose wird aufgerufen. Es gibt viele Beispiele für seine Verwendung. Sie ist in der integrierten MACD-Probe enthalten. Hier ist der Code, der zum Schließen von Aufträgen durch MACD-Signale verwendet wird (hier ist ein Beispielcode für die Implementierung des Trailing Stop-Mechanismus)
Vielen Dank für die schnelle Antwort! Ich dachte, dass sie wahrscheinlich von jemandem gegeben werden würde, der sich schon lange mit dieser Art von Dingen beschäftigt.
Nur, dass OrderClose in MKL4 enthalten ist, aber nicht in MKL5. Es gibt nur die FunktionPositionClose in der Klasse CTrade in der Standardbibliothek, und es ist mir überhaupt nicht klar, wie man sie dort herausbekommt. Ich denke, dafür muss man irgendwie von einem Code zur Bibliothek aufrufen, dann zur Klasse CTrade.... Alles in allem ist es für mich ein dunkler Wald. Ich hatte nicht vor, MKL5 zu studieren, sondern beschloss einfach, meine (für mich) recht erfolgreiche Strategie zu automatisieren, und so begann ich einfach, Schritt für Schritt den Anweisungen zu folgen. Und jetzt stecke ich fest...
Vielen Dank für die schnelle Antwort! Ich dachte, es würde wahrscheinlich von jemandem kommen, der neu auf diesem Gebiet ist.
Nur, dass OrderClose in MKL4 enthalten ist, in MKL5 aber nicht. Es gibt nur die FunktionPositionClose in der Klasse CTrade in der Standardbibliothek, und es ist mir überhaupt nicht klar, wie man sie dort herausbekommt. Ich denke, dafür muss man irgendwie von einem Code zur Bibliothek aufrufen, dann zur Klasse CTrade.... Alles in allem ist es für mich ein dunkler Wald. Ich hatte nicht vor, MKL5 zu studieren, sondern beschloss einfach, meine (für mich) recht erfolgreiche Strategie zu automatisieren, und so begann ich einfach, Schritt für Schritt den Anweisungen zu folgen. Und jetzt stecke ich fest...
- www.mql5.com
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Hallo zusammen!
Ich sollte gleich darauf hinweisen, dass ich versucht habe, diese Fragen in dem entsprechenden Thread hier zu stellen, aber irgendwie hat die Frage nicht die Aufmerksamkeit bekommen, die sie verdient hätte. Obwohl ich den Eindruck habe, dass die angesprochenen Themen zumindest einmal in den Köpfen vieler Menschen auftauchen. Eine Art von Fragen aus den FAQ (obwohl ich mich irren könnte). Ich werde die Fragen selbst hier direkt duplizieren:
1. Es gibt einen Unterschiedzwischen Mql4 und Mql5 (Website und Programmiersprache). Es gibt Metatrade 4 und Metatrader 5 mit Mql4 bzw. Mql5. Es gibt auch zwei verschiedene entsprechende Websites. Gleichzeitig führen alle Expert Advisors, die ich mir in MT4 angesehen habe, zu dieser Website. Welche ist wichtiger? Welches Forum ist "lebendiger"? Wo ist der beste Ort, um Fragen zu stellen? Gibt es eine Abwärtskompatibilität zwischen verschiedenen Versionen von MT und Mql? Ich persönlich schreibe derzeit meinen MT4 Expert Advisor auf Mql4. Das liegt daran, dass der Broker, mit dem ich die Demo teste, mit MT4 arbeitet. Wie kann ich erkennen, in welcher Sprache mein Expert Advisor geschrieben ist? Ich meine nur die Erweiterung (.mq4 und .mq5). Wenn ich eine Datei umbenenne, kann ich sie dann kompilieren (wieder wegen der Kompatibilität)?
2. Dynamische Parameter des externen Expertenberaters. Ist es möglich, einstellbare Parameter eines Expert Advisors dynamisch zu ändern? Lassen Sie mich erklären... Zum Beispiel gibt es einen externen Parameter extern bool a. Wenn dies der Fall ist, muss ein zusätzlicher Parameter extern int b gesetzt werden. Ist a=false, wird der Parameter b nicht benötigt. Gibt es eine Möglichkeit, sie je nach dem aktuellen Wert eines ausgewählten Elements anzuzeigen oder nicht? In Anbetracht der Tatsache, dass ich keine externen Parameter-Änderungshandler finden konnte und es kein #if gibt ... #endif, ich vermute, dass es nicht möglich ist... Wenn ja, könnten Sie dann vorschlagen, wie man in dieser Situation am besten vorgeht, um den Prozess der Einstellung externer Parameter nicht zu überlasten? Ich könnte z. B. a=false setzen und vergessen, dass der Parameter b nicht verwendet wird, ihn aber trotzdem in die Optimierung einbeziehen (obwohl es keinen Sinn hätte, sondern nur zusätzliche Zeit verschwenden würde). Und es ist eine Sache, wenn es nur einen solchen Parameter b gibt. Aber wenn ich zum Beispiel einen externen Enum-Parameter mache und es mehrere Dropdown-Varianten von TC. Sie haben einen gemeinsamen Teil (daher ist es logisch, sie in einem EA zu implementieren, anstatt mehrere zu schreiben), aber es gibt auch verschiedene mit vielen unterschiedlichen Parametern. Dann ist es sehr einfach zu verwechseln, welche Parameter für den ausgewählten TS relevant sind.
Automatische Optimierung des Expert Advisors. IMHO ist es sehr nützlich und sinnvoll. Ich habe hier einen Artikel über dieautomatisierte Optimierung von Handelsrobotern im realen Handel gefunden. Soweit ich weiß, wird jedoch eine zweite Instanz von MT verwendet, die für die Optimierung von außen gestartet wird (von einer laufenden Instanz von MT), und die Optimierungsergebnisse werden aus einem Bericht in Form von HTML gelesen. Das ist ungünstig und schief. Logischerweise sollte ich meine eigene Optimierungsfunktion/Dll schreiben und sie direkt im Expert Advisor ausführen. Hier ist also die Frage. Soweit ich das verstanden habe, wurde ein genetischer Optimierungsalgorithmus in den Strategietester programmiert. Ich kenne mich mit diesen Algorithmen nur sehr kurz aus. Aber sie sind seit langem bekannt, daher die Frage - warum das Rad neu erfinden?) Gibt es einen vorgefertigten Algorithmus, der direkt in MT verwendet wird? Vielleicht existiert sie bereits irgendwo in den Bibliotheken des Terminals selbst... Vielleicht gibt es einen separaten Quellcode oder eine fertige DLL. Bitte teilen Sie uns Ihre Erfahrungen in dieser Angelegenheit mit.
Vielen Dank im Voraus für Antworten auf zumindest einen Teil dieser Fragen.