Errori, bug, domande - pagina 841

 
faton:

Buon pomeriggio. Potete consigliarmi, ho scritto un semplice indicatore... e quando arriva una nuova barra, ecco come si comporta la linea dell'indicatore. Quale può essere il problema?

CopyRates(FirstAktiv,PERIOD_CURRENT,0,rates_total,mrate1);
CopyRates(SecondAktiv,PERIOD_CURRENT,0,rates_total,mrate2);
Controlla cosa viene restituito daCopyRates. Ilnumero di elementi copiati non è necessariamente uguale a quello richiesto. Pertanto, l'array può essere superato e i dati in questo posto del buffer saranno nulli, il che è successo.
 

Sembra che durante l'aggiornamento della nuova versione di Terminal, la cartella Program Files\Meta Trader 5\MQL5 sia completamente copiata in C:\Users\user\AppData\Roaming\MetaQuotes\Terminal\00C5B588590D4A2C89EFC1E0C5301ECA\MQL5 (è Win7, anche se altri OS probabilmente hanno la stessa cartella + forse anche altre). Altrimenti non posso spiegare, dove è la coppia di ore di lavoro, fatto pochi giorni fa e che frutta testato con successo.

Il fatto è che ho l'abitudine di formattare le classi attraverso .mqh-file, e poi collegarle. Senza saperlo, ho buttato i miei mqh e mq5 in Program Files\Meta Trader 5\MQL5, ho visto che non appaiono in Navigator e li ho spostati nella cartella di lavoro (C:\Users\user\AppData\Roaming\MetaQuotes\Terminal\00C5B588590D4A2C89EFC1E0C5301ECA\MQL5). Tutto andava bene, fino a quando il terminale è stato aggiornato - ho eseguito l'Expert Advisor per testare ulteriormente, e poi ho voluto modificare qualcos'altro e ho visto un vecchio codice, una copia di quello in Program Files\Meta Trader 5\MQL5. La versione corretta è stata ottimizzata, perché mq5 non è cambiato e il terminale non ha indovinato che sono stati fatti cambiamenti in mqh. La ricompilazione ha portato a un ritorno alla vecchia versione.

Come risultato sono molto seccato e dovrò spendere una o due ore per quello che ho già fatto.

Le vie d'uscita da questa situazione che vedo sono.

1) copiare l'intera cartella, ma solo l'elenco dei file inclusi nel pacchetto standard;

2) in qualche modo avvertire l'utente che verrà sovrascritto (anche se, se si cambiano molti file nella libreria standard, sarà un dolore);

3) determinare in qualche modo (calcolare il crc, per esempio) che la cartella mql5 in Program Files è cambiata, e prima di installare una nuova versione, emettere un avviso in modo da poter salvare i propri dati;

4) fare una copia del vecchio MQL5 in Terminal\00C5B588590D4A2C89EFC1E0C5301ECA\ (aggiungere, per esempio, la versione MQL5.384) - la più semplice.

Il problema è raro, ma dannazione, è brutto.

Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека - Документация по MQL5
 
notused:

Sembra che durante l'aggiornamento della nuova versione del terminale, ci sia una copia COMPLETA della cartella.................................

........................... ......................

.............................

In conclusione - molto incazzato, dovrà spendere un'ora o due di nuovo su qualcosa che ho già fatto.

Vedo una via d'uscita da questa situazione - ................

....................

È un problema raro, ma dannazione, è un brutto problema.

Feedback costruttivo agli sviluppatori: si prega di fare un backup automatico dell' intera cartella MQL5 dalla build precedente, quando si installa una nuova. La durata - fino alla prossima build, poi sostituirla. Questo non annulla il trattamento attento dei file client quando si installa la build. È per il caso di forza maggiore (come descritto sopra) + per salvare le versioni client della libreria standard.
Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека - Документация по MQL5
 

Recovery Factor- questo indicatore mostra la rischiosità della strategia, quanto l'Expert Advisor sta rischiando per guadagnare il profitto. Si calcola come il rapporto tra il profitto ottenuto e il drawdown massimo; (non dice quale)

FATTORE DI RECUPERO STATISTICO

Fattore di recupero - rapportoSTAT_PROFIT/STAT_BALANCE_DD

doppio



Print("Factor=",TesterStatistics(STAT_RECOVERY_FACTOR));                                    // Выводим Фактор Восстановления
Print("Profit/BalanceDD=",TesterStatistics(STAT_PROFIT)/TesterStatistics(STAT_BALANCE_DD)); // Отношение профита к просадке по балансу
Print("Profit/EquityDD=",TesterStatistics(STAT_PROFIT)/TesterStatistics(STAT_EQUITY_DD));   // Отношение профита к просадке по средствам

Abbiamo stabilito sperimentalmente che il fattore di recupero è calcolato come il rapporto tra l'utile e il prelievo per il patrimonio netto, non per il saldo.

C'è un errore nel riferimento?

 
ilunga:
Bene, è vero, vi sono stati mostrati gli ultimi 50.000. Ci sono 1440 barre nel giorno.

Grazie, uh...

Non è questa la domanda. Non è una domanda, è un sospiro di dolore...

Se scelgo solo il mese di giugno per il test (30 giorni X 1440 < 50.000), cosa dovrei vedere sul grafico per motivo? Agosto??

A proposito, i timpicker nel tester hanno la sgradevole proprietà di chiudersi dopo un secondo - l'altro...

Non è fatale - si può comunque scegliere una data più velocemente con le mani, ma...

 
//+------------------------------------------------------------------+
//|                                                  Sample_Tick.mq5 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"

int Tick_All;

MqlTick           last_tick;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   Tick_All=0;

//---
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(!SymbolInfoTick(_Symbol,last_tick))
     {
      Print("Failed to get Symbol info!");
     }

   Tick_All++;
   Print(Tick_All,"   ",last_tick.bid,"   ",last_tick.ask,"  ",last_tick.last," ",last_tick.volume);
  }
//+------------------------------------------------------------------+

Non capisco perché OnTick viene attivato anche se il prezzo non cambia?????

2012.09.10 11:52:11 Sample_Tick (EURUSD,M5) 493 1.2787 1.2789 1.2788 300000
2012.09.10 11:52:10 Sample_Tick (EURUSD,M5) 492 1.2787 1.2789 1.2788 300000
2012.09.10 11:52:09 Sample_Tick (EURUSD,M5) 491 1.2787 1.2789 1.2788 300000
2012.09.10 11:52:07 Sample_Tick (EURUSD,M5) 490 1.2787 1.2789 1.2788 300000

 
EQU:

Grazie, uh...

Non è questa la domanda. Non è una domanda, è un sospiro di dolore...

Se scelgo solo il mese di giugno per il test (30 giorni X 1440 < 50.000), cosa dovrei vedere sul grafico per motivo? Agosto??

Scrivere al service-desk. Inoltre non capisco perché il numero di barre sul grafico conta _sempre_ dal reale e non dalla data finale impostata nel tester.
 
sion:
Volume - può cambiare, e c'è di più)

potete vedere che il volume non cambia!!!

 
dentraf:

potete vedere che il volume non cambia!!!

Ho già guardato il codice.
 

Non capisco come funziona o non funziona)


Print("<><><><><",request_action.magic);//Print((ulong)MathMod(request_action.magic-MathMod(request_action.magic,100000000),100000000000)/100000000);
  if(magic_num!=(ulong)MathMod(request_action.magic-MathMod(request_action.magic,100000000),100000000000)/100000000){Print("<<<<<<<<<<<<<<<<<<<<<",(ulong)MathMod(request_action.magic-MathMod(request_action.magic,100000000),100000000000)/100000000," magic_num=",magic_num);return;}

KG 0 prp4 (EURJPY,M15) 02:23:25 <><><><><73200011000
RR 0 prp4 (EURJPY,M15) 02:23:25 <<<<<<<<<<<<<<<<<<<<<732 magic_num=732   <-поидее числа равны и условие не должно срабатывать

Stampa commentata

Print("<><><><><",request_action.magic);Print((ulong)MathMod(request_action.magic-MathMod(request_action.magic,100000000),100000000000)/100000000);
  if(magic_num!=(ulong)MathMod(request_action.magic-MathMod(request_action.magic,100000000),100000000000)/100000000){Print("<<<<<<<<<<<<<<<<<<<<<",(ulong)MathMod(request_action.magic-MathMod(request_action.magic,100000000),100000000000)/100000000," magic_num=",magic_num);return;}

MH 0 prp4 (EURJPY,M15) 02:28:11 <><><><73200011000
PE 0 prp4 (EURJPY,M15) 02:28:11 92233720368 <- e questo numero non so da dove venga, apparentemente nel primo calcolo "(ulong)MathMod(request_action.magic-MathMod(request_action.magic,100000000),100000000000)/100000000" di questo, qualcosa di strano conta

<-condizione non ha tenuto, la stampa non ha stampato, quindi i numeri erano uguali.

Fino all'1 di notte circa, non c'è stato alcun problema.

P.S. Ho provato sul mio portatile, la build 687 è ancora lì, stessa torta.