Errori, bug, domande - pagina 2650

 
Puoi dirmi dov'è il bug, in MQL4 o MQL5?
struct A
{
  static const int Array[];
};

static const int A::Array[] = {0};

struct B : public A
{  
  int i[sizeof(B::Array)]; // MQL5 - ok, MQL4 - ok.
  int j[sizeof(A::Array)]; // MQL5 - ok, MQL4 - error.
};
Stringa di ricerca: Oshibka 004.
 
fxsaber:

Potresti dare un'occhiata anche a questo problema?


Il moderatore stava aggiornando a mano su mia richiesta. Ma non posso chiederlo ogni volta. La macchina non passa.

Corretto.

 
Anton:

Corretto.

Capisco, grazie.

 
Andrey Khatimlianskii:

Sui ticchettii di tutti gli strumenti utilizzati.


Ecco il mio codice per controllare i nuovi tick:

void OnTimer()
  {
//+------------------------------------------------------------------+
// Перебор всех символов, которые указаны в внешних переменных
// Recursion of all symbols that are specified in external variables
//+------------------------------------------------------------------+
   string SymbolToTick="";
   for(int si=0; si<12; si++)
     {
      if(si==0)
         SymbolToTick=PAIR1;
      if(si==1)
         SymbolToTick=PAIR2;
      if(si==2)
         SymbolToTick=PAIR3;
      if(si==3)
         SymbolToTick=PAIR4;
      if(si==4)
         SymbolToTick=PAIR5;
      if(si==5)
         SymbolToTick=PAIR6;
      if(si==6)
         SymbolToTick=PAIR7;
      if(si==7)
         SymbolToTick=PAIR8;
      if(si==8)
         SymbolToTick=PAIR9;
      if(si==9)
         SymbolToTick=PAIR10;
      if(si==10)
         SymbolToTick=PAIR11;
      if(si==11)
         SymbolToTick=PAIR12;
     
      if(SymbolToTick=="" && si==0)
        {
         SymbolToTick=Symbol();
        }
      if(SymbolToTick=="")
         continue;
      //|#############################################################################################+
      // проверяем текущий Бид Аск
      MqlTick last_tickSymbol;
      SymbolInfoTick(SymbolToTick,last_tickSymbol);
      double currentBid=last_tickSymbol.bid;
      double currentAsk=last_tickSymbol.ask;

      //|#############################################################################################+
      // Если тик изменился, запускаем тик этого символа
      if(currentBid!=LastBid[si] || currentAsk!=LastAsk[si])
        {
         // Запускаем исполнение тика
         OnTickSymbol(si,SymbolToTick);
         LastBid[si]=currentBid;
         LastAsk[si]=currentAsk;
         TicksAllNumbers[si]++;
        }
      //|#############################################################################################+
     }
  }


Creato un array per i test con il numero di zecche contate.


Test di due coppie EURUSD GBPUSD

Esecuzione di un test su GBPUSD:

2020.02.18 14:01:03.802	Core 1	2020.02.16 23:59:58    TICKS EURUSD TicksAllNumbers=621120
2020.02.18 14:01:03.802	Core 1	2020.02.16 23:59:58    TICKS GBPUSD TicksAllNumbers=1143002


Esecuzione di un test su EURUSD:

2020.02.18 14:01:37.129 Core 1  2020.02.16 23:59:58    TICKS EURUSD TicksAllNumbers=621120
2020.02.18 14:01:37.129 Core 1  2020.02.16 23:59:58    TICKS GBPUSD TicksAllNumbers=1143002


Le zecche sembrano essere le stesse. ... ... ... quindi devo essermi perso qualcosa da qualche parte.....

Grazie, continuerò a scavare.



DECISIONE: _Digit era nel codice, devo averlo aggiunto all'ambiente..... senza guardare.

non c'è bisogno di commentare :-)

 
Anton:

Sposta il file mql5pack-ico.zip in archivio nella cartella.

Spostato questo file nella cartella MQL5/Scripts. Non ha aiutato. Poi l'ho spostato nella cartella MQL5/Files - anche questo non è servito.

Probabilmente non capisco di cosa si tratta.

 
Stanislav Korotky:

Spostato nella cartella MQL5/Scripts. Non ha aiutato.

Fisso.

 

Konstantin Gruzdev

Sei un autore interessante, il più interessante qui. ha fatto una domanda a Vladislav, sono anche interessato a multicurrency, come ci sono sfumature sulla nuova barra e sulla non applicabilità di tutte le barre necessarie

 
il problema della multicurrency è ancora appeso, MQ non vuole dare segnali per qualche motivo, preferisco che i programmatori si riempiano di problemi di tempistica e di spionaggio. questo non dovrebbe continuare a lungo.
 
Vladislav Andruschenko:
Attraverso il timer sì,
È più probabile aumentare la frequenza del timer ......
Manca un certo numero di zecche. Ecco perché c'è una differenza nei risultati. La differenza è molto piccola. Ma basta saltare 1 tick e tutto si capovolge.

Non è un fatto che la frequenza migliorerà i risultati, ma sicuramente rallenterà la velocità dei test. Gli eventi del timer non sono perfetti, ci sarà quasi sempre un errore. Anche su un timer vuoto si può vedere l'errore. Se ci sono dei calcoli all'interno della funzione timer, è probabile che il margine di errore sia più alto. Anche caricare il computer con compiti di terzi può influenzare il timer. C'è la possibilità che non tutti i segnali di apertura/chiusura/modifica colpiscano allo stesso tempo e sugli stessi tick.

Vale la pena ricordare che ho fatto tutte queste osservazioni un paio di anni fa su un pesante strumento multicurrency che utilizza quasi 30 strumenti contemporaneamente. I risultati corrispondevano solo quando il timer era spento. Presumo che ora non sia cambiato molto.

 
Fast235:

Konstantin Gruzdev

Sei un autore interessante, il più interessante qui. ha fatto una domanda a Vladislav, sono anche interessato a multicurrency, come ci sono sfumature sulla nuova barra e sulla non applicabilità di tutte le barre necessarie

Ok. Rispondere al di sopra.