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

 
Alexey Kozitsyn:
Ja, die Eingabeparameter können nicht geändert werden. Um ehrlich zu sein, verstehe ich nicht, warum Sie diesen Wert entsprechend den 3/5-stelligen Anführungszeichen ändern müssen? Sie stellen diesen Wert in den Eingabeparametern ein. Kann man nicht einfach 100 schreiben (wenn 3/5 Ziffern) und sich nicht die Mühe machen?

Ich optimiere auf 5 Ziffern - mehr Historie, handele aber auf 4 und verwende andere Einstellungen, einschließlich Punkte. Ich möchte die Einstellungen nicht durcheinander bringen - deshalb ist dies die Lösung.

 
-Aleks-:

Tatsächlich optimiere ich auf 5 Ziffern - mehr Geschichte, aber ich handele auf 4 und verwende andere Einstellungen, einschließlich Punkte. Ich möchte die Einstellungen nicht durcheinander bringen - deshalb ist dies die Lösung.

Das sollte folgendermaßen funktionieren

int Sign = 1;

int OnInit() {
// Округлим огрызки - 3 и 5 знак
Sign=(SymbolInfoInteger(_Symbol,SYMBOL_DIGITS)==3 || SymbolInfoInteger(_Symbol,SYMBOL_DIGITS)==5)?10:1;
// Приведем к терминальному количеству знаков
TakeProfit*=Sign;
StopLoss*=Sign;
TrailingShift*=Sign;
TrailingStep*=Sign;
Slippage*=Sign;
}
 
Vitaly Muzichenko:

Dies sollte funktionieren

int Sign = 1;

int OnInit() {
// Округлим огрызки - 3 и 5 знак
Sign=(SymbolInfoInteger(_Symbol,SYMBOL_DIGITS)==3 || SymbolInfoInteger(_Symbol,SYMBOL_DIGITS)==5)?10:1;
// Приведем к терминальному количеству знаков
TakeProfit*=Sign;
StopLoss*=Sign;
TrailingShift*=Sign;
TrailingStep*=Sign;
Slippage*=Sign;
}


Danke - ich werde es ausprobieren, sobald ich den EA zum Laufen bringen kann...

 

Ich erhalte auch diesen Fehler - wie kann ich ihn beheben?

MODE_MAIN' - Zählerbezeichner bereits definiert initmql4__1.mqh 223 24


 ENUM_STO_PRICE StoFieldMigrate(int field)


  {
   switch(field)
     {
      case 0: return(STO_LOWHIGH);
      case 1: return(STO_CLOSECLOSE);
      default: return(STO_LOWHIGH);
     }
  }

//+------------------------------------------------------------------+
enum ALLIGATOR_MODE  { MODE_GATORJAW=1,   MODE_GATORTEETH, MODE_GATORLIPS };
enum ADX_MODE        { MODE_MAIN,         MODE_PLUSDI, MODE_MINUSDI };
enum UP_LOW_MODE     { MODE_BASE,         MODE_UPPER,      MODE_LOWER };
enum ICHIMOKU_MODE   { MODE_TENKANSEN=1,  MODE_KIJUNSEN, MODE_SENKOUSPANA, MODE_SENKOUSPANB, MODE_CHINKOUSPAN };
enum MAIN_SIGNAL_MODE{ MODE_MAIN,         MODE_SIGNAL };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double CopyBufferMQL4(int handle,int index,int shift)
  {
   double buf[];
   switch(index)
     {
      case 0: if(CopyBuffer(handle,0,shift,1,buf)>0)
         return(buf[0]); break;
      case 1: if(CopyBuffer(handle,1,shift,1,buf)>0)
         return(buf[0]); break;
      case 2: if(CopyBuffer(handle,2,shift,1,buf)>0)
         return(buf[0]); break;
      case 3: if(CopyBuffer(handle,3,shift,1,buf)>0)
         return(buf[0]); break;
      case 4: if(CopyBuffer(handle,4,shift,1,buf)>0)
         return(buf[0]); break;
      default: break;
     }
   return(EMPTY_VALUE);
  }
//+------------------------------------------------------------------+

 
-Aleks-:

Eine solche Situation, bekomme ich einen Fehler - helfen Sie mir zu verstehen, warum der Fehler auftritt - in MQL5 können Sie nicht den Wert einer Variablen durch den Benutzer eingegeben ändern?

Das können Sie nicht!

Wenn Sie sich für die Verwendung von MQL4_to_MQL5.mqh entschieden haben, empfehle ich Ihnen dringend, dies nicht zu tun. Da es für die Beispiele geschrieben wurde, die in der Bibliotheksbeschreibung stehen. Das heißt, es ist überhaupt nicht universell. Insbesondere gibt es eine sehr eingeschränkte Version von MarketInfo (nur für den Einsatz von Beispielen). Aber es gibt gute Lösungen. Daher ist es besser, diese MQH nicht selbst zu verwenden, sondern nur nützliche Dinge daraus zu entnehmen.

 
-Aleks-:

Ich erhalte auch diesen Fehler - wie kann ich ihn beheben?

MODE_MAIN' - Zählerbezeichner bereits definiert initmql4__1.mqh 223 24


 ENUM_STO_PRICE StoFieldMigrate(int field)


  {
   switch(field)
     {
      case 0: return(STO_LOWHIGH);
      case 1: return(STO_CLOSECLOSE);
      default: return(STO_LOWHIGH);
     }
  }

//+------------------------------------------------------------------+
enum ALLIGATOR_MODE  { MODE_GATORJAW=1,   MODE_GATORTEETH, MODE_GATORLIPS };
enum ADX_MODE        { MODE_MAIN,         MODE_PLUSDI, MODE_MINUSDI };
enum UP_LOW_MODE     { MODE_BASE,         MODE_UPPER,      MODE_LOWER };
enum ICHIMOKU_MODE   { MODE_TENKANSEN=1,  MODE_KIJUNSEN, MODE_SENKOUSPANA, MODE_SENKOUSPANB, MODE_CHINKOUSPAN };
enum MAIN_SIGNAL_MODE{ MODE_MAIN,         MODE_SIGNAL };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double CopyBufferMQL4(int handle,int index,int shift)
  {
   double buf[];
   switch(index)
     {
      case 0: if(CopyBuffer(handle,0,shift,1,buf)>0)
         return(buf[0]); break;
      case 1: if(CopyBuffer(handle,1,shift,1,buf)>0)
         return(buf[0]); break;
      case 2: if(CopyBuffer(handle,2,shift,1,buf)>0)
         return(buf[0]); break;
      case 3: if(CopyBuffer(handle,3,shift,1,buf)>0)
         return(buf[0]); break;
      case 4: if(CopyBuffer(handle,4,shift,1,buf)>0)
         return(buf[0]); break;
      default: break;
     }
   return(EMPTY_VALUE);
  }
//+------------------------------------------------------------------+

Umbenennen. Die Felder ALLER Aufzählungszeichen müssen unterschiedlich sein. Und Sie haben die gleichen Felder inenum ADX_MODE undenum MAIN_SIGNAL_MODE.
 
fxsaber:
Umbenennung. Die Felder ALLER Aufzählungen sollten unterschiedlich sein. Und Sie haben die gleichen Felder inenum ADX_MODE undenum MAIN_SIGNAL_MODE.

Ich habe es vorerst auskommentiert... Ich denke nicht, dass es kritisch ist...

Allerdings kompiliert ein EA mit zwei Bibliotheken - Handelsfunktionen und Übersetzung von anderen Funktionen von 4 bis 5.

Ich habe immer noch die Nase voll vom Tester in 5 - ich kann nicht herausfinden, wo Indikatoren in der Visualisierung hinzugefügt werden können und wie man das Protokoll filtert...

Ich kann die offenen Aufträge noch nicht sehen.

 

Wie ist dies zu interpretieren?

2016.11.04 20:42:25.224 2016.02.11 14:04:30 Bei Einstellung anstehend unvorhergesehener Fehler - 4756
2016.11.04 20:42:25.224 2016.02.11 14:04:30 Magic=49266773 cPoza::setOrder hat eine Anfrage zum Setzen einer Bestellung gesendet. Typ: BuyStop lot=1.0 opPrice=68180.0 tp=68200.0 sl=67260.0
2016.11.04 20:42:25.224 2016.02.11 14:04:30 fehlgeschlagener Kaufstopp 1.00 RTS-12.16 bei 68180 sl: 67260 tp: 68200 [Ungültiger Verfall]
2016.11.04 20:42:25.224 2016.02.11 14:04:30 Bei Einstellung anstehend unvorhergesehener Fehler - 4756

 
-Aleks-:

Wie ist dies zu interpretieren?

2016.11.04 20:42:25.224 2016.02.11 14:04:30 Bei Einstellung anstehend unvorhergesehener Fehler - 4756
2016.11.04 20:42:25.224 2016.02.11 14:04:30 Magic=49266773 cPoza::setOrder hat eine Anfrage zum Setzen einer Bestellung gesendet. Typ: BuyStop lot=1.0 opPrice=68180.0 tp=68200.0 sl=67260.0
2016.11.04 20:42:25.224 2016.02.11 14:04:30 fehlgeschlagener Kaufstopp 1.00 RTS-12.16 bei 68180 sl: 67260 tp: 68200 [Ungültiger Verfall]
2016.11.04 20:42:25.224 2016.02.11 14:04:30 Bei Einstellung anstehend unvorhergesehener Fehler - 4756

Irgendetwas stimmt nicht mit der Verfallseinstellung.
 
-Aleks-:

Bis jetzt habe ich die Nase voll vom Tester in five - ich kann nicht herausfinden, wo die Indikatoren zur Visualisierung hinzugefügt werden können und wie man das Protokoll filtert...

Es gibt noch keine Möglichkeit, offene Aufträge zu sehen.

Ich verwende ein konvertiertes MT4-Skript aus dem Jahr 2006, um die Historie des Testers anzuzeigen. Es zeigt alles so bequem wie MT4.