Fehler, Irrtümer, Fragen - Seite 2793

 
Alexey Viktorov:

Ich habe gar nicht bemerkt, dass es ein Gif gibt... Ich habe es mir jetzt angesehen, aber es ist so schnell, dass ich keine Zeit habe, es zu verstehen. Mir ist nur aufgefallen, dass Sie die Spalte "Tausch" nicht anzeigen, die genau das ist, was in der Geschichte getrennt zählt. Oder erklären Sie in Worten und Zahlen.

Ich bin überrascht, dass ich die Spalte mit den deaktivierten Swaps nicht selbst bemerkt habe.

Danke, das Problem ist gelöst.

 
Andrey Khatimlianskii:

Ich bin überrascht, dass ich die deaktivierte Tauschsäule nicht selbst bemerkt habe.

Danke, das Problem ist gelöst.

Hurra¡¡¡¡ wir haben gewonnen.

 
Bei der Verwendung von ChartSetSymbolPeriod gibt die Funktion OnDeinit den Wert 1 zurück. Das Programm wurde aus dem Diagrammentfernt, während sie logischerweise den Wert 3 zurückgeben sollte.
 

Der Fehler besteht darin, dass, wenn die if(...)-Bedingung erfüllt ist, die Schleife nicht unterbrochen wird.

if( (vm + vs * (double)i) * tvp * 250.0 < ml ) { cv = vm + vs * (double)i; Print(i,": L/ML - ",cv," / ",ml); };


Hier ist ein Video



Hier ist der vollständige Skriptcode

void OnStart()
  {
//---
   
   double tvp  = SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE_LOSS),
          vm   = SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN),
          vs   = SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP),
          ml   = AccountInfoDouble(ACCOUNT_EQUITY) * 0.015,
          cv   = -1.0,
          loss = 0.0;
   
   for(int i = 0; i < 20000; i++)
     {
      Print(i);
      //if( (vm + vs * (double)i) * tvp * 250.0 < ml ) { cv = vm + vs * (double)i; Print(i,": L/ML - ",cv," / ",ml); };
      /*loss = cv * tvp * 250.0;
      Print(NormalizeDouble(loss,2));
      Print(NormalizeDouble(ml,2)); Print(" ");
     */};
   
  }
 
Alexandr Sokolov:

Der Fehler besteht darin, dass, wenn die if(...)-Bedingung erfüllt ist, die Schleife nicht unterbrochen wird.

Ihr Code ist ähnlich wie dieser

double a = 3;

for(int i = 0; a > 300; i++)
{
 if(a != 3)
  Print("Никогда такого не будет");
}
 

Mein Indikator hat aus irgendeinem Grund begonnen, grafische Objekte zu verlieren und löscht sie nicht. Ich verwende die automatische Löschung im Destruktor der Klasse. Ich nenne es:

ObjectDelete(chartID, name);

Infolgedessen erhalte ich ein falsches Positiv. Ich rufe GetLastError() auf und erhalte den Fehler 4101 ("Errory chart identifier"). Angenommen. Ich vergleiche die ChartID des zu löschenden grafischen Objekts mit dem Ergebnis der Funktion ChartID() und sie sind absolut identisch. Was kann der Grund dafür sein, dass ein Objekt nicht aus dem Diagramm gelöscht wird, und wie kann ich das Problem umgehen?

 
Mihail Matkovskij:

Mein Indikator hat aus irgendeinem Grund begonnen, grafische Objekte zu verlieren und löscht sie nicht. Ich verwende die automatische Löschung im Destruktor der Klasse. Ich nenne es:

Infolgedessen erhalte ich ein falsches Positiv. Ich rufe GetLastError() auf und erhalte den Fehler 4101 ("Errory chart identifier"). Angenommen. Ich vergleiche die ChartID des zu löschenden grafischen Objekts mit dem Ergebnis der Funktion ChartID(), und sie stimmen genau überein. Was kann der Grund dafür sein, dass ein Objekt nicht aus dem Diagramm gelöscht wird, und wie kann ich das Problem umgehen?

Ich habe ähnliche Probleme https://www.mql5.com/ru/forum/1111/page2785#comment_17002122

Vielleicht werden die Macher etwas dagegen unternehmen)

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2020.06.22
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы
 

das Fehlen jeglicher Rückmeldung hier, als ob das Thema nur gebraucht wird, um der Negativität eines weiteren unerfreulichen Befundes Luft zu machen )


#include <Arrays\ArrayObj.mqh>

class CPosition:public CObject
{
   public:
      string      meTicket;
      CPosition::CPosition(string inT)
      {this.meTicket = inT;}         
};

class CColl:public CArrayObj
{
public:
   string   meWrongProperty;
CPosition  *operator[](const int index) const { return (CPosition*)At(index);} 
};

class CCollOfColl:public CArrayObj
{
public:
CColl  *operator[](const int index) const { return (CColl*)At(index);} 
};



void OnStart()
{
   CCollOfColl lCOC;
   CColl       *lC;
   
   lC = new CColl();
   lC.Add(new CPosition("00"));
   lC.Add(new CPosition("01"));
   lCOC.Add(lC);
   
   lC = new CColl();
   lC.Add(new CPosition("10"));
   lC.Add(new CPosition("11"));
   
   lCOC.Add(lC);
   
   for(int i=0;i<lCOC.Total();i++)
     {
       for(int j=0;j<lCOC[i].Total();j++)
         {
          printf(lCOC[i][j].meTicket);
          lCOC[i][j].me
         }
     }
}


Ich denke, der Redakteur hätte meTicket statt meWrongProperty vorschlagen sollen)

 

Bild 2530

Auf der dritten Anlage der Struktur erscheinen keine Intelligenzen.

//+------------------------------------------------------------------+
//|                                                   TestStruct.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"

//----------------------------------------------------
struct STRUCT_TIME_IN_FORCE
{
   string GTC; 
   string IOC;  
   string FOK; 
}; 
//----------------------------------------------------
struct STRUCT_SYMBOLS  
{
   string               symbol;                
   STRUCT_TIME_IN_FORCE timeInForce;            
};

//----------------------------------------------------
struct STRUCT_EXCH_INFO  
{
   string         timeZone;      
   long           serverTime;     
   STRUCT_SYMBOLS symbols[];  
};


//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
{
   STRUCT_EXCH_INFO Info;
   ArrayResize(Info.symbols, 10);
   
   Info.symbols[0].timeInForce. //??? На третьем вложении не появляется интеллесенс

}
//+------------------------------------------------------------------+
 
Dmytryi Voitukhov:

Bei der Überprüfung auf dem EA-Marktplatz traten Fehler bei der Losberechnung auf.

Das Prüfgerät weist keine Fehler auf.

Der Code ist so einfach wie nur möglich. Wie kann da ein Fehler drin sein?

Artikel lesenWelche Tests muss ein Handelsroboter bestehen, bevor er auf dem Markt veröffentlicht wird?

Какие проверки должен пройти торговый робот перед публикацией в Маркете
Какие проверки должен пройти торговый робот перед публикацией в Маркете
  • www.mql5.com
Все продукты Маркета перед публикацией проходят обязательную предварительную проверку, так как небольшая ошибка в логике советника или индикатора может привести к убыткам на торговом счете. Именно поэтому нами разработана серия базовых проверок, призванных обеспечить необходимый уровень качества продуктов Маркета. Если в процессе проверки...