Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 969

 
Sprut112:
Der EA handelt mit einem Hedge. Vielleicht sollten einige Kontrollen als Standard hinzugefügt werden?

Testen Sie es zufällig mit einem Cent-Konto? Bei einigen Cent-Konten beträgt das Mindestlos 0,1

 
Konstantin Nikitin:

Ich handle normalerweise mit dem Tester, Build 1960. Was ich viel, das ist, was es auf 12 Paare zur gleichen Zeit nimmt

Warum ist die Nummer 16 eine 0,01-Partie?
 
Konstantin Nikitin:

Testen Sie zufälligerweise mit einem Cent-Konto? Bei einigen Cent-Konten beträgt das Mindestlos 0,1

Nein, es gibt Kontrollen für die Mindest- und Höchstwerte und die Losgrößen.
 
Sprut112:
Und warum #16 Los 0,01?

Wenn Sie sich auf mein Bild beziehen, ist es der Teilverschluss des Experten, der funktioniert hat. Hier steht "close".

Sprut112:
Nein, prüft auf Minimal- und Maximalwerte sowie Losgrößen.
Vielleicht sucht diese Prüfung also nach einem Minimum, das größer ist als das aktuelle, und ersetzt es.
 
Konstantin Nikitin:

Wenn Sie sich auf mein Bild beziehen, ist es der Teilverschluss des Experten, der funktioniert hat. Es steht dort "close

Vielleicht sucht diese Prüfung also nach einem Minimum, das größer ist als das aktuelle, und ersetzt es.
Wir können das so sehen. Im Testgerät passiert das nicht sofort, sondern etwa einen Monat später.
 
Artyom Trishkin:

Warum funktioniert Ihr Code nicht, wie Sie in mql4 mit #property strict wollen?

Was ist ein so grundlegender Unterschied zu dem Code, den Ihnen Vladimir gezeigt hat?

Und es gibt keinen Unterschied zwischen diesen Implementierungen. Und es gibt nur einen Grund, warum Ihr Code keine Textbeschreibungen ausgibt - es ist das Fehlen von #property strict im mql4-Code.


Ich habe es nicht sofort herausgefunden und dachte, dass es bei mir nicht funktioniert, weil =0, =1, etc. fehlen.

enum MySymbol
     {
      symbol_0=0,// AUDUSD
      symbol_1=1,// NZDUSD
      symbol_2=2,// USDCAD
      symbol_3=3,// USDCHF
      symbol_4=4,// USDJPY
      symbol_5=5,// EURJPY
      symbol_6=6,// EURUSD
      symbol_7=7,// GBPUSD
      symbol_8=8,// #CL
     };

aber es stellte sich heraus, dass es dasselbe ist...

string xx=EnumToString(Symboll_(1)); // Ergebnis symbol_1

Ich hätte den NZDUSD nehmen sollen

  в таком варианте всё Ок но не получается добавить символ с решёткой #CL
enum  Symboll_
  {
   AUDUSD,
   NZDUSD,
   USDCAD
   //#CL
  };
string xx=EnumToString(Symboll_(1)); // результат NZDUSD

Aber die Array-Variante ist genau das, was ich brauchte...

 
xxz:

Ich habe es nicht sofort verstanden und dachte, ich würde durchfallen, weil ich nicht =0, =1 usw. hatte.

aber es stellte sich heraus, dass es dasselbe ist...

string xx=EnumToString(Symboll_(1)); // Ergebnis symbol_1

Ich hätte den NZDUSD nehmen sollen

Aber diese Array-Variante ist genau das, was ich brauchte...

Wenn Sie eine Aufzählung über EnumToString() ausgeben, erhalten Sie natürlich keine Beschreibung der Variable hinter dem "//", sondern die Variable selbst, wie sie ist.

Um die Aufzählung so zu drucken, wie Sie es wünschen, müssen Sie eine Funktion analog zu EnumToString() erstellen, die sie ausgibt.

Für eine Aufzählung wie diese:

enum ENUM_SYMBOL_NAMES
  {
   SYMBOL_NAME_AUDUSD,     // AUDUSD
   SYMBOL_NAME_NZDUSD,     // NZDUSD
   SYMBOL_NAME_USDCAD,     // USDCAD
   SYMBOL_NAME_USDCHF,     // USDCHF
   SYMBOL_NAME_USDJPY,     // USDJPY
   SYMBOL_NAME_EURJPY,     // EURJPY
   SYMBOL_NAME_EURUSD,     // EURUSD
   SYMBOL_NAME_GBPUSD,     // GBPUSD
   SYMBOL_NAME_SHARP_CL,   // #CL
  };
input ENUM_SYMBOL_NAMES InpNames; // Instrument

Zum Beispiel so:

//+------------------------------------------------------------------+
string InstrumentToString(void)
  {
   string enm=EnumToString(InpNames);
   int index=StringFind(enm,"SHARP_");
   int shift=(index>WRONG_VALUE ? index+6 : 12);
   string name=StringSubstr(enm,shift);
   return(index>0 ? "#"+name : name);
  }
//+------------------------------------------------------------------+

Und rufen Sie an:

Print(InstrumentToString());
 
double get_lot(int pair, double input_lots) {
   if(input_lots<min_lot[pair]) return(min_lot[ir]);
   return(input_lots);
 
Konstantin Nikitin


:

Wenn Sie sich auf mein Bild beziehen, ist es der Teilverschluss des Experten, der funktioniert hat. Hier steht "close".

Vielleicht prüft diese Prüfung also, ob das Minimum größer ist als das aktuelle und ersetzt es.
 if(SymbolInfoDouble(Symb,SYMBOL_VOLUME_STEP)<0.1) dg=2; else
      if(SymbolInfoDouble(Symb,SYMBOL_VOLUME_STEP)<1.0) dg=1;

Ich glaube nicht, dass das richtig ist.

 
Vladimir Karputov:

Besser noch: Geben Sie klar an, was Sie erreichen wollen. Ich werde Ihnen wahrscheinlich ein vollständiges Beispiel geben.

Es war einmal, im Jahr 2010, im Winter. Ich fragte auch in einem Indikator zu filtern, die Essenz von denen: die Mach & Min HLine mit PERIOD_MN1 für iBars....)))) zu zeichnen

Ich habe es selbst herausgefunden. Beherrscht MT4.

Langsam, nicht sofort, meistere ich den MT5.

...."Sagen Sie klar und deutlich, was Sie wollen" FORMEL: Ich setze (selbst) um, was ich (selbst) programmiert habe, und gleichzeitig beherrsche ich (selbst) MT5 ))))


ABER was Sie mir mit Beispielen (visuell) gezeigt haben, ist NICHT verschwunden.


WENN SO werde ich zurückgehen )))

Wenn SHO, werde ich zurückgehen






 
Artyom Trishkin:

Wenn Sie eine Aufzählung mit EnumToString() ausgeben, erhalten Sie natürlich keine Beschreibung der Variablen, die sich hinter "//" befindet, sondern die Variable selbst, wie sie ist.

Um es so auszugeben, wie Sie es wünschen, müssen Sie eine Funktion analog zu EnumToString() erstellen, die es ausgibt.


Das ist das Problem, denn um die einfachste Aufgabe zu lösen, muss man eine Funktion erstellen, und das ist ein Haufen Code, den niemand braucht,

anstelle einer Zeile von zehn...

Ich versuche, mich so kurz wie möglich zu fassen!...

Ursprünglich konnte ich dieses Problem umgehen, indem ich dem Code nur eine Zeile hinzufügte

            xx=iClose(Symbol_(i),0,50);
xx=iClose("#CL",0,50);

aber ich mochte es nicht, nur wegen der zusätzlichen Zeile im Code...

Ich mag keinen "schmutzigen" Code...

Grund der Beschwerde: