Errori, bug, domande - pagina 2793

 
Alexey Viktorov:

Non mi ero nemmeno accorto che ci fosse una gif... L'ho guardata ora, ma è così veloce che non ho il tempo di capirla. Ho appena notato che non mostri la colonna "Swap", che è esattamente ciò che conta separatamente nella storia. O spiegare con parole e cifre.

Sono sorpreso di non aver notato io stesso la colonna degli scambi disabilitati.

Grazie, problema risolto.

 
Andrey Khatimlianskii:

Sono sorpreso di non aver notato io stesso la colonna di scambio disattivata.

Grazie, problema risolto.

Urrà¡¡¡¡ abbiamo vinto.

 
Quando si usa ChartSetSymbolPeriod la funzione OnDeinit restituisce 1 Il programma è stato rimosso dal grafico, mentre logicamente dovrebbe restituire 3 Il simbolo o ilperiodo del grafico èstato cambiato
 

Il bug è che se la condizione if(...) è soddisfatta, niente dovrebbe interrompere il ciclo

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


Ecco un video



Ecco il codice completo dello script

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:

Il bug è che se la condizione if(...) è soddisfatta, niente dovrebbe interrompere il ciclo

Il tuo codice è simile a questo

double a = 3;

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

Il mio indicatore ha iniziato a perdere oggetti grafici per qualche motivo e non li cancella. Uso la cancellazione automatica nel distruttore di classe. Io lo chiamo:

ObjectDelete(chartID, name);

Di conseguenza, ottengo un falso positivo. Chiamo GetLastError() e ottengo l'errore 4101 ("Errory chart identifier"). Supponiamo. Confronto il chartID dell'oggetto grafico che viene cancellato con il risultato della funzione ChartID() e sono esattamente gli stessi. Quale può essere la ragione per cui non si cancella un oggetto dal grafico e come posso aggirarla?

 
Mihail Matkovskij:

Il mio indicatore ha iniziato a perdere oggetti grafici per qualche motivo e non li cancella. Uso la cancellazione automatica nel distruttore di classe. Io lo chiamo:

Di conseguenza, ottengo un falso positivo. Chiamo GetLastError() e ottengo l'errore 4101 ("Errory chart identifier"). Supponiamo. Confronto il chartID dell'oggetto grafico che viene cancellato con il risultato della funzione ChartID() e sono esattamente gli stessi. Quale può essere la ragione per cui non si cancella un oggetto dal grafico e come posso aggirarla?

Ho problemi simili https://www.mql5.com/ru/forum/1111/page2785#comment_17002122

Forse i creatori faranno qualcosa al riguardo)

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

la mancanza di qualsiasi feedback qui, come a dire, l'argomento è solo necessario per sfogare la negatività di un'altra spiacevole scoperta )


#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
         }
     }
}


Penso che l'editore avrebbe dovuto suggerire meTicket invece di meWrongProperty )

 

Bild 2530

Sul terzo attacco della struttura, non appare nessuna intelligenza.

//+------------------------------------------------------------------+
//|                                                   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:

Quando si controlla nel mercato EA, si sono verificati errori nel calcolo dei lotti.

Non ci sono errori nel tester.

Il codice è il più semplice possibile. Come potrebbe esserci un errore?

Leggi l'articoloQuali test deve superare un robot di trading prima di essere pubblicato sul mercato

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