Diskussion über die Einführung von Ratsmitgliedern. - Seite 6

 
Ivan_Invanov:
Hallo. Könnten Sie mir bitte sagen, was das Markteintrittssignal dieses EA ist und wo es sich im Code befindet?

Sie schließen das Signalmodul des benutzerdefinierten Indikators in der Zeile

//--- available signals
#include <Expert\Signal\SignalMA.mqh>


und hierkönnen Siedie Handelssignale dieses Indikatorsüberprüfen


An dieser Stelle gibt es genügend Informationen, die Sie erst einmal verdauen müssen. Ich empfehle Ihnen auch die Lektüre der folgenden Artikel

Документация по MQL5: Стандартная библиотека / Модули стратегий / Модули торговых сигналов / Сигналы индикатора Moving Average
Документация по MQL5: Стандартная библиотека / Модули стратегий / Модули торговых сигналов / Сигналы индикатора Moving Average
  • www.mql5.com
Цена пересекла индикатор сверху вниз(цена Open анализируемого бара выше линии индикатора, а цена Close - ниже), но индикатор растет (слабый сигнал на отбой от линии индикатора). Цена пересекла индикатор нижней тенью (цены Open и Close анализируемого бара выше линии индикатора, а цена Low ниже) и индикатор растет (сигнал на отбой от линии...
 

Leute, ich habe eine Frage

Wie kann man eine Parameteroptimierungsbedingung so gestalten, dass sie sich nicht gegenseitig überlagern und es zu viele unnötige Überschreitungen gibt?

input  int                Profit_Lev1        = 5;           // |     1-я фиксация прибыли 
sinput string _p1="";//---
input  int                Profit_Lev2        = 7;           // |     2-я фиксация прибыли 
sinput string _p2="";//---
input  int                Profit_Lev3        = 10;          // |     3-я фиксация прибыли


Wir haben 3 Stufen der Gewinnmitnahme, die 1. sollte nicht höher sein als die 2. und 3. und die 2. sollte nicht höher sein als die 3.

//+------------------------------------------------------------------+
//| Проверяет внешние параметры                                      |
//+------------------------------------------------------------------+
bool CheckInputParameters()
  {
     if(Profit_Lev1 >= Profit_Lev2  || Profit_Lev1 >= Profit_Lev3 || Profit_Lev2 >= Profit_Lev3)
       {
         Print(_Symbol,
               ": 1-й уровень профита ("+IntegerToString(Profit_Lev1)+") "
               "должен быть больше 2-го и 3-го уровня профита ("+IntegerToString(Profit_Lev2)+"   "+IntegerToString(Profit_Lev3)+")!");
         return(false);
        }                     
//--- Параметры корректны
   return(true);
  }

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  { 


//--- Проверим внешние параметры
   if(!CheckInputParameters())
      return(INIT_PARAMETERS_INCORRECT);


//--- Инициализаия прошла успешно
   return(INIT_SUCCEEDED);
  }


Ich beginne mit der Optimierung

Das Protokoll enthält eine Menge Fehler, vielleicht etwas, das den Roboter zurücksetzt


Aber die Sache ist, der Roboter ist für 20 Minuten optimiert und die Optimierung stoppt, obwohl, wenn ich nicht angeben, eine Grenze und lassen die Dinge ihren Lauf, wo die erste kann höher sein als die zweite, dann die Optimierung ist voll funktionsfähig mehr als einen Tag.

Ich möchte nicht, dass sie nacheinander gehen und nicht übereinander springen, denn es gibt einige andere Logiken in Form von Punkten und Verschiebungen im Algorithmus für jede Stufe von TP.

 
Konstantin Seredkin:

Leute, ich habe eine Frage

Wie kann man eine Parameteroptimierungsbeschränkung so gestalten, dass sie sich nicht gegenseitig überlagern und zu viele unnötige Überschreitungen verursachen?


Wir haben 3 Stufen der Gewinnmitnahme, die 1. sollte nicht höher sein als die 2. und 3. und die 2. sollte nicht höher sein als die 3.

Führen Sie nicht drei "Gewinnstufen" ein, sondern "Basisstufe", "2. Stufe über Basisstufe" und "3.

Das war's. Wir machen einen vollständigen Overshoot.

Wenn wir wollen, dass alle drei Ebenen in einen festen Bereich passen, dann führen wir die Variablen "Bereichsbreite" und zwei "Grenzen zwischen den Ebenen" ein, wobei die erste Grenze ein Bruchteil des Bereichs ist und die zweite Grenze ein Bruchteil des verbleibenden (nach der ersten Grenze) Teils des Bereichs ist.

Ich würde es so machen...

 
Georgiy Merts:

Führen Sie nicht drei "Gewinnstufen" ein, sondern "Basisstufe", "zweite Stufe über der Basisstufe" und "dritte Stufe über der zweiten Stufe".

Das war's. Wir machen einen vollständigen Overshoot.

Wenn wir wollen, dass alle drei Ebenen in einen festen Bereich passen, dann führen wir die Variablen "Bereichsbreite" und zwei "Grenzen zwischen den Ebenen" ein, wobei die erste Grenze ein Bruchteil des Bereichs ist und die zweite Grenze ein Bruchteil des verbleibenden (nach der ersten Grenze) Teils des Bereichs ist.

Ich würde es so machen...

Macht es einen Unterschied, ob ich die erste Ebene mit der zweiten und dritten oder die dritte Ebene mit der ersten und zweiten prüfe, denn die Bedeutung ist dieselbe.
 
Konstantin Seredkin:
Also von der Änderung der Orte des Summanden wird der Unterschied, dass ich die erste Ebene mit der zweiten und dritten, dass die dritte Ebene mit der ersten und zweiten überprüfen, die Bedeutung der gleichen.

Sie haben ungültige Parameter, wenn die erste Ebene größer ist als die zweite usw. In der vorgeschlagenen Version werden diese Prüfungen verschwinden, und alle Sätze werden korrekt sein.

 
Konstantin Seredkin:
Macht es also einen Unterschied, ob ich die erste Ebene mit der zweiten und dritten oder die dritte Ebene mit der ersten und zweiten prüfe, die Bedeutung ist dieselbe.

Die Frage war, wie man "keine Überschneidungen" überwinden kann. Wenn die erste Stufe z. B. 10 % des Bereichs ausmacht, kann die zweite Stufe nicht aufsteigen, da sie in den restlichen 90 % gemessen wird.

 
Georgiy Merts:

Die Frage war, wie man "keine Überschneidungen" überwinden kann. Wenn die erste Stufe beispielsweise 10 % des Bereichs ausmacht, ist es unmöglich, dass die zweite Stufe in diesen Bereich aufsteigt, da sie in den restlichen 90 % gemessen wird.

Ich verstehe das immer noch nicht.

Es handelt sich nicht nur um statische Variablen, sondern auch um externe Variablen, in denen ich 3 Gewinnmitnahmen festlege.


Der Roboter handelt mit 3 Losen

in 100 Pips möchte ich 1 Lot schließen = dies ist die erste Gewinnstufe

200 Lose mehr = zweite Stufe des Gewinns

300 weitere Lose = dritte Stufe des Gewinns


Aber mit der ersten Ebene Roboter setzt einen Stop-Loss bei Breakeven

Auf der zweiten Stufe überträgt er diesen Stopp auf die erste Gewinnstufe.

Wenn es keinen Breakeven gäbe, wäre es egal, wie der Optimierer diese Stufen auswählen würde, selbst wenn die erste Stufe 300, die zweite 50 und die dritte 150 Punkte betragen würde.

aber die Breakeven-Methode benötigt eine genaue Reihenfolge, daher möchte ich nicht, dass der Optimierer sie wie folgt auswählt

300 50 150

50 300 150

usw.

Ich möchte nur, dass die Dinge normal laufen.

50 100 200

150 160 170

usw.

Überprüfung der Korrektheit der eingegebenen Parameter

//+------------------------------------------------------------------+
//| Проверяет внешние параметры                                      |
//+------------------------------------------------------------------+
bool CheckInputParameters()
  {
     if(Profit_Lev1 >= Profit_Lev2  || Profit_Lev1 >= Profit_Lev3 || Profit_Lev2 >= Profit_Lev3)
       {
         Print(_Symbol,
               ": 1-й уровень профита ("+IntegerToString(Profit_Lev1)+") "
               "должен быть больше 2-го и 3-го уровня профита ("+IntegerToString(Profit_Lev2)+"   "+IntegerToString(Profit_Lev3)+")!");
         return(false);
        }                     
//--- Параметры корректны
   return(true);
  }

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  { 


//--- Проверим внешние параметры
   if(!CheckInputParameters())
      return(INIT_PARAMETERS_INCORRECT);


//--- Инициализаия прошла успешно
   return(INIT_SUCCEEDED);
  }

Bei der Optimierung gibt es schreibt, dass es Aussetzer auf eine Reihe von Läufen, es ist gut, dass es die Einstellungen, die nicht angewendet werden können, zurückgesetzt, aber der Optimierer arbeitet für ein paar Minuten und schaltet sich dann ab.

Ich schätze, dieser Scheck muss auf eine andere Weise gespielt werden.

Was Sie vorschlagen, kann ich nicht verstehen, ohne ein Beispiel zu nennen.

 
Konstantin Seredkin:

Das verstehe ich immer noch nicht.

Es handelt sich nicht nur um statische Variablen, sondern auch um externe Variablen, die ich setze 3 Gewinne in


Der Roboter handelt 3 Lose

in 100 Pips möchte ich 1 Lot schließen = dies ist die erste Gewinnstufe

200 Lose mehr = zweite Stufe des Gewinns

300 Lose mehr = dritte Stufe des Gewinns


Aber mit der ersten Ebene Roboter setzt einen Stop-Loss bei Breakeven

Auf der zweiten Stufe überträgt er diesen Stopp auf die erste Gewinnstufe.

Wenn es keinen Breakeven gäbe, wäre es egal, wie der Optimierer diese Stufen auswählen würde, selbst wenn die erste Stufe 300, die zweite 50 und die dritte 150 Punkte betragen würde.

aber die Breakeven-Methode benötigt eine genaue Reihenfolge, so dass ich nicht möchte, dass der Optimierer sie wie folgt auswählt

300 50 150

50 300 150

usw.

Ich will nur, dass es normal läuft.

50 100 200

150 160 170

usw.

Überprüfung der Korrektheit der eingegebenen Parameter

Bei der Optimierung gibt es schreibt, dass es Aussetzer auf eine Reihe von Läufen, es ist gut, dass es die Einstellungen, die nicht angewendet werden können, zurückgesetzt, aber der Optimierer arbeitet für ein paar Minuten und schaltet sich dann ab.

Ich schätze, dieser Scheck muss auf eine andere Weise gespielt werden.

Ohne ein Beispiel kann ich nicht verstehen, was Sie vorschlagen.

Legen Sie bei der Eingabe nicht die Pegel selbst fest, sondern die Abstände zwischen ihnen.

input uint firstLevel=20 ; // пунктов от цены до первого ТП

input uint secondDistance=30; // пунктов от первого ТП до второго

input uint thirdDistance=50; // пунктов от второго ТП до конечного

Dann kann der Optimierer physisch keine Ebenen austauschen

 

Guten Tag, es gibt Leute, die aus der Ferne einen EA auf mt4 einrichten, der automatisch handelt, auf einer vm-Maschine auf der Yandex-Cloud. Wenn ich mich nicht irre, kann ich eine Kopie des Spiels auf meine Festplatte laden und zum Laufen bringen. Cp

P.s. Entschuldigen Sie bitte meine stumpfe Sprache, ich verstehe die Terminologie und das Wesen dieser Dinge nicht.

 

Guten Tag!

Ich habe beschlossen , einen EA zu schreiben. In diesem Zusammenhang ist es notwendig, die Signale zu ändern, die vom EA zur Eröffnung von Aufträgen verwendet werden. Zum Beispiel der Indikator DeMarker - ich möchte, dass mein Expert Advisor nur dann Aufträge eröffnet, wenn dieser Indikator 0,3 von unten nach oben (Kauf) und 0,7 von oben nach unten (Verkauf) überschreitet. Verstehe ich das richtig, dass ich die Datei SignalDeMarker.mqh korrigieren muss (die Codeabschnitte mit den Kommentaren "Voting", dass der Preis steigen wird. und "Voting", dass der Preis fallen wird.)?