Errori, bug, domande - pagina 324

 
Urain:

Non ho chiarito questa domanda in quel momento, e ora ho dei dubbi.

Qual è il modo giusto per riservare la memoria?

come questo

o come segue

E correggere l'aiuto, è molto ambiguo.

ZS Nelle varianti date è implicito che la dimensione della memoria allocata tenendo conto della prenotazione dovrebbe essere 2016.

Al momento funziona così

ArrayResize(array,10,2000);

Questo assegnerà un buffer per 2010 elementi e 10 di essi saranno disponibili.

Questo puòprobabilmente cambiare nel prossimo futuro.

 
alexvd:

Al momento funziona così

Questo assegnerà un buffer di 2010 elementi e 10 di essi saranno disponibili.

Questopotrebbe cambiare presto.

Perché non 2000 buffer di cui 10 sono disponibili?

Questo ha più senso secondo me.

 
alexvd:

Al momento funziona come segue

Questo assegnerà un buffer di 2010 elementi e 10 di essi saranno disponibili.

...

Ho capito, in un posto come questo:

int reserved=0;// размер распределённой памяти
//+------------------------------------------------------------------+
//| изменение размера массива                                        |
//+------------------------------------------------------------------+
int Resize(int size)
  {
   int step=4;// резервирование с шагом 2^4=16
   int new_reserv=0;
   if((size>>step<<step)>=reserved)
     {
      reserved=((size>>step)+1)<<step;
      new_reserv=reserved-size;// сколько памяти нужно дорезервировать      
      ArrayResize(arr,size,new_reserv);      
     }
   else ArrayResize(arr,size);     
   Print("ArrayResize(arr,"+size+","+new_reserv+"); reserved="+reserved);
   return(size);
  }

...

Questopotrebbe probabilmente cambiare nel prossimo futuro.

Cosa c'è di sbagliato nell'attuale schema di licenziamento?

 

Non so se è un bug o no, ma quando si ottimizzano Expert Advisors basati su un indicatore pesante come CCFp(Cluster Indicator) alla fine del passaggio appare la seguente finestra sull'agente locale: Strategy Tester Agent ha smesso di funzionare.

Quando si chiude questa finestra il programma non si apre e in un paio di secondi continua l'ottimizzazione, e i risultati del passaggio sono registrati nel rapporto.

Le seguenti informazioni sono presenti nel codice EA

void OnDeinit(const int reason)
{
IndicatorRelease(CCp_Handle);
}

Se la linea IndicatorRelease(CCp_Handle); viene commentata, l'ottimizzazione va senza errori.

Non sono bravo a programmare, ma la mia domanda è: quando devo usare questa funzione negli indicatori e negli Expert Advisors? Nel mio codice dell'indicatore CCFp utilizza anche la deinizializzazione con il rilascio delle maniglie di un heap di movimenti.

Построение мультивалютного индикатора с применением множества промежуточных индикаторных буферов
Построение мультивалютного индикатора с применением множества промежуточных индикаторных буферов
  • 2010.05.17
  • Alexey Klenov
  • www.mql5.com
В последнее время возрос интерес к кластерному анализу рынка FOREX. MQL5 открывает новые возможности исследования закономерностей движения валютных пар. Важным преимуществом MQL5, по сравнению с MQL4, является возможность использования неограниченного количества индикаторных буферов. В данной статье описан пример построения мультивалютного индикатора.
File:
optim.jpg  580 kb
 
52_rus:

Non so se è un bug o no, ma quando si ottimizzano gli Expert Advisor basati su un indicatore pesante come il CCFp(Cluster Indicator) alla fine del passaggio appare la seguente finestra sull'agente locale: Strategy Tester Agent ha smesso di funzionare.

Quando si chiude questa finestra il programma non si apre e in un paio di secondi continua l'ottimizzazione, e i risultati del passaggio sono registrati nel rapporto.

Si prega di scrivere al Service Desk. Allegare il codice sorgente e le condizioni di ottimizzazione.
 

Le interruzioni di connessione sono diventate più frequenti/più lunghe.

 20110224

...

GI 1 Network 15:02:34 '728041': connessione a MetaQuotes-Demo persa

HJ 0 Rete 13:19:25 '728041': connessione a un access point con qualità dell'83% (precedente: 83%)

...


20110302

...

KJ 0 Rete 08:53:17 '728041': scansione della rete per i punti di accesso

IL 0 Rete 08:54:14 '728041': scansione della rete terminata

ME 0 Rete 08:54:14 '728041': auto connessione a un punto di accesso migliore con 93% di qualità (precedente: 61%)

LK 1 Network 08:54:14 '728041': connessione a MetaQuotes-Demo persa

ES 0 Rete 12:05:25 '728041': connessione a un punto di accesso con il 92% di qualità (precedente: 0%)

KN 0 Network 12:05:26 '728041': autorizzato su MetaQuotes-Demo via Access Point 1 Europe

MF 0 Network 12:05:26 '728041': terminale sincronizzato con MetaQuotes Software Corp.

OR 0 Rete 15:08:22 '728041': scansione della rete per i punti di accesso

QD 0 Rete 15:09:18 '728041': scansione della rete terminata

...


20110303

...

FI 1 Network 21:26:45 '728041': connessione a MetaQuotes-Demo persa

PL 0 Rete 10:10:49 '728041': connessione a un access point con qualità dell'83% (precedente: 83%)

...

 
Voglio usare variabili esterne nello script in modo da poter impostare il valore richiesto prima di eseguirlo. In MT4 questo è stato implementato utilizzando #property show_iputs, ma in MT5 non è possibile (c'è #property script_show_inputs, ma non dà nulla). Se qualcuno ha affrontato una domanda del genere, per favore consigliate come fare.
Документация по MQL5: Основы языка / Препроцессор / Свойства программ (#property)
Документация по MQL5: Основы языка / Препроцессор / Свойства программ (#property)
  • www.mql5.com
Основы языка / Препроцессор / Свойства программ (#property) - Документация по MQL5
 
DenisR:
Voglio usare variabili esterne nello script in modo da poter impostare il valore richiesto prima di eseguirlo. In MT4 questo è stato implementato utilizzando #property show_iputs, ma in MT5 non è possibile (c'è #property script_show_inputs, ma non dà nulla). Se qualcuno ha incontrato questo problema, per favore consigliate come fare.
Levariabili di input funzionerebbero?
 
Yedelkin:
Levariabili di input funzionerebbero?
Grazie, tutto funziona.
 
DenisR:
Voglio usare variabili esterne nello script in modo da poter impostare il valore richiesto prima di eseguirlo. In MT4 questo è stato implementato utilizzando #property show_iputs, ma in MT5 non è possibile (c'è #property script_show_inputs, ma non dà nulla). Se qualcuno ha incontrato questo problema, per favore consigliate come fare.
Merda... Il terminale è dotato di così tanti esempi... ...tanti esempi... Lo script SymbolInfoSample.mq5, per esempio