Errori, bug, domande - pagina 2138

 

Penso che ci sia un problema con il caricamento della storia.

Ieri ho aspettato per circa 30 minuti, poi ho cambiato il mio account e oggi ho deciso di ricontrollare:


  1. Apro un conto in rubli RUR
  2. Nel tester sto eseguendo un test su EURUSD
  3. il terminale sta cercando di caricare le quotazioni EURRUR
  4. Nessuna citazione, il tester si è bloccato



Ho lottato in qualche modo, poi ho deciso di scaricare la storia, che non esiste

2018.02.21 15:58:48.244 Tester  EURRUR: history data begins from 2018.02.21 00:00
2018.02.21 15:58:48.344 Tester  USDRUR: preliminary downloading of M1 history started
2018.02.21 15:58:49.244 Tester  USDRUR: 20% history downloaded
2018.02.21 15:58:49.544 Tester  USDRUR: 30% history downloaded
2018.02.21 15:58:49.844 Tester  USDRUR: 40% history downloaded
2018.02.21 15:58:50.144 Tester  USDRUR: 51% history downloaded
2018.02.21 15:58:50.444 Tester  USDRUR: 61% history downloaded
2018.02.21 15:58:50.657 Tester  USDRUR: 71% history downloaded
2018.02.21 15:58:51.057 Tester  USDRUR: 81% history downloaded
2018.02.21 15:58:51.357 Tester  USDRUR: 91% history downloaded
2018.02.21 15:58:51.657 Tester  USDRUR: preliminary downloading of M1 history completed in 0:03.417
2018.02.21 15:58:51.657 Tester  USDRUR: history data begins from 2016.12.26 00:00
2018.02.21 15:58:51.661 Core 1  agent process started
2018.02.21 15:58:52.095 Core 1  connecting to 127.0.0.1:3000
2018.02.21 15:58:52.095 Core 1  connected
2018.02.21 15:58:52.103 Core 1  authorized (agent build 1755)
2018.02.21 15:58:52.105 Tester  EURUSD,H1 (Alpari-MT5-Demo): testing of Experts\Exp - TickSniper PRO FULL v36 20180220.ex5 from 2018.01.01 00:00 to 2018.02.10 00:00
2018.02.21 15:58:52.891 Core 1  common synchronization completed
2018.02.21 15:58:53.064 Tester  quality of analyzed history is 100%
2018.02.21 15:58:54.393 Core 1  EURRUR: history synchronization started



Va bene su USDJPY

 

È una situazione stupida con le barre dei caratteri personalizzate. Posso scrivere nella storia (CustomRatesReplace) tutte le barre che voglio, ma non posso leggerle (CopyRates) qui (TERMINAL_MAXBARS).

Dobbiamo risolvere questa situazione sbagliata in qualche modo. Vedere perfettamente l'inizio della storia locale attraverso

SeriesInfoInteger(_Symbol, PERIOD_M1, SERIES_SERVER_FIRSTDATE);

Ma per arrivarci.

Forse per dare la possibilità di cambiare TERMINAL_MAXBARS tramite MQL? O rendere CopyRates sovraccarico senza limite di MaxBars?

 

Ho notato questo comportamento di MT5 per molto tempo, ma ora ho deciso di scrivere.

Sto lavorando in ME e MT5+tester. A volte non riesco a connettermi all'agente e devo riavviare il terminale. Mi sono abituato a questo bug, quindi non ne parlo.

Quindi, chiudo Terminale e premo F4 in ME per aprire Terminale. Ed è qui che cominciano le sciocchezze.

ME va in uno stato "Non risponde" diverse volte. Il terminale non si avvia. Dopo qualche secondo premo di nuovo F4 - la reazione è la stessa di prima.

Come risultato, in 20 secondi (minimo) su una macchina non debole (molta memoria, SSD, 95% di CPU libera) viene lanciato Terminal.

Se lo si confronta con MT4 - è il cielo e la terra. MT4 è quasi istantaneamente lanciato da F4 da ME. MT5 - si lancia come un'applicazione super cruda.

 
fxsaber:

È una situazione stupida con le barre dei caratteri personalizzate. Posso scrivere nella storia (CustomRatesReplace) tutte le barre che voglio, ma non posso leggerle (CopyRates) qui (TERMINAL_MAXBARS).

Dobbiamo risolvere questa situazione sbagliata in qualche modo. Vedere perfettamente l'inizio della storia locale attraverso

Ma per arrivarci.

Forse sarebbe possibile cambiare TERMINAL_MAXBARS tramite MQL? O rendere CopyRates sovraccarico senza limite di MaxBars?

SD pensa che non ci siano problemi quando non si può ottenere la cronologia delle quotazioni oltre MaxBars. Questo esempio (uno dei tanti scenari in cui la storia richiesta, che è già sulla macchina locale)

L'ipotesi è che il limite sia fissato per risparmiare risorse. E giustamente!

Immaginiamo un prodotto di mercato, che è progettato per calcolare le statistiche di equiti-line.

Si scopre che l'utente, prima di applicare questo prodotto, dovrà fare UnlimitBars. E dopo averlo applicato - per restituirlo.

non impressionato. La stampella rimane viva!

 

Gli indicatori non sempre restituiscono ACCOUNT_LOGIN all'avvio del terminale

0 11:00:01.880 indicatore personalizzato tester EURUSD,H1: caricato con successo
0 11:00:01.887 tester EURUSD,H1: OnInit 0 < ---- AccountInfoInteger(ACCOUNT_LOGIN) returned 0
0 11:00:01.887 tester EURUSD,H1: inizializzato
0 11:00:01.887 tester EURUSD,H1: OnCalculate 0 < ---- AccountInfoInteger(ACCOUNT_LOGIN) returned 0
0 11:00:05.980 tester EURUSD,H1: OnCalculate 0 < ---- AccountInfoInteger(ACCOUNT_LOGIN) returned 0
0 11:00:06.654 tester EURUSD,H1: OnCalculate 0 < ---- AccountInfoInteger(ACCOUNT_LOGIN) returned 0
0 11:00:07.030 tester EURUSD,H1: OnCalculate 442394 < ---- AccountInfoInteger(ACCOUNT_LOGIN) ha restituito il numero di conto
0 11:00:07.040 tester EURUSD,H1: OnCalculate 442394 < ---- AccountInfoInteger(ACCOUNT_LOGIN) ha restituito il numero di conto

Codice sorgente

//+------------------------------------------------------------------+
//|                                                       tester.mq4 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_chart_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   string text=IntegerToString(AccountInfoInteger(ACCOUNT_LOGIN));
   Print("OnInit "+text);

   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   string text=IntegerToString(AccountInfoInteger(ACCOUNT_LOGIN));
   Print("OnCalculate "+text);
   return(rates_total);
  }
//+------------------------------------------------------------------+

Potrei sbagliarmi ma secondo me nessun programma può funzionare se il numero di conto non è conosciuto .....

 
Vladimir Pastushak:

Potrei sbagliarmi, ma secondo me nessun programma può funzionare se il numero di conto non è conosciuto.....

Non uso mai ilnumero di conto negli EAs e negli indicatori, tranne che per il Report-dealing.

Ma sono d'accordo che anche offline il numero di conto (l'ultima connessione prima dello spegnimento del terminale) dovrebbe essere sempre disponibile.

 
fxsaber:

Non uso maiil numero di conto negli EA e negli indicatori, tranne che per Report-doors.

Ma sono d'accordo che anche offline, il numero di conto (ultima connessione prima dello spegnimento del terminale) dovrebbe essere sempre disponibile.

Anche online. Bisogna sempre sapere e capire sotto quale conto è successo e in quale punto.

Come si può eseguire un programma se non si sa per quale conto si fa qualcosa.

Questo non è "sharash montash", le persone possono avere milioni nei loro conti qui....

 
Vladimir Pastushak:

Anche online. Bisogna sempre sapere e capire sotto quale conto è successo e in quale punto.

Come si può eseguire un programma se non si sa per quale account si sta facendo qualcosa.

Questo non è un "sharash montash", le persone possono avere milioni nei loro conti qui....

Il 99% degli EA non analizza i numeri di conto.

 
fxsaber:

Il 99% dei consulenti non analizza il numero di conto

perché il 99,99% degli EA sono "sharash montash" ....

Sono sicuro che ogni EA di qualità dovrebbe tenere il proprio registro delle operazioni, sia durante il funzionamento o quando si scarica l'EA l'utente dovrebbe ottenere il registro delle operazioni su richiesta. In caso di errori critici, è obbligatorio!

Per errore critico intendo disconnessione, requote, codice lento.

 
Vladimir Pastushak:

perché il 99,99% degli EA sono "sharash montash" ....

Scrivo esattamente questo tipo di EA.