Domande da un "manichino" - pagina 52

 

Deve andare da qualche parte? ... Non so...

Voglio dire, vola sull'EMA, ma ci vuole 10 volte di più sull'iCustom...

 

Non dovreste mai farlo:

void OnTick()
  {
   //--- безусловно создаем индикатор
   ma_handle = iMA(_Symbol,0, MA,0, MODE_EMA, PRICE_CLOSE);
  }

Non fatevi ingannare dicendo"prendete il manico dell'indicatore" quando in realtàstate "creando un nuovo indicatore".

Inoltre, c'è una perdita di maniglie.

 
Karlson:

Deve andare da qualche parte? ... Non so...

Voglio dire, vola sull'EMA, ma ci vuole 10 volte di più per eseguire l'iCustom...

Dove dovremmo mettere un mucchio di Handles-Indicators obsoleti? Non lo so. Non ho lavorato in quel modo, ce ne sono sempre di più ad ogni spunta.

Se dovessi implementare una strategia del genere, mi rifiuterei di chiamare un indicatore personalizzato pronto attraverso iCustom() e metterei invece il corpo dell'indicatore in OnTick() dell'Expert Advisor. E i calcoli dei dati verrebbero eseguiti dall'Expert Advisor stesso.

...Il problema sorgerà se l'indicatore è in formato .ex5 e non c'è codice.

 

Mi sono ricordato: " La funzione IndicatorRelease() è usata per rilasciare un indicatore inutilizzato dalla memoria del computer e l'handle di questo indicatore viene passato ad essa" (la uso durante la deinizializzazione di Expert Advisor).

Ma comunque: una nuova maniglia ad ogni tick è fastidiosa.

 

Per quanto riguarda l'accumulo di maniglie, mi informerò.

È quello che ho intenzione di fare, mettere il tacchino nell'EA.

 
Karlson:

Per quanto riguarda l'accumulo di maniglie, mi informerò.

È quello che ho intenzione di fare, mettere il tacchino nell'EA.

Potete lasciare l'indicatore così com'è e crearne una copia nel timer o per evento.
 
Interesting:
Si potrebbe lasciare l'indicatore così com'è e crearne una copia in un timer o per evento.

Qual è la differenza tra creare una copia dell'indicatore: in OnTick(), OnTimer() o in OnChartEvent()? In ogni caso, ogni attivazione speciale creerà una "copia dell'indicatore", aggravando il già enorme mucchio.

O forse non capisco la sua logica.

 
Yedelkin:

Qual è la differenza tra creare una copia dell'indicatore: in OnTick(), OnTimer() o in OnChartEvent()? In ogni caso, ogni attivazione speciale creerà una "copia dell'indicatore", aggravando il già enorme mucchio.

O forse non capisco la sua logica.

Ecco il trucco - Se non hai bisogno di cambiare i parametri dell'indicatore (non c'è bisogno di creare una nuova copia dell'indicatore), allora è più logico creare l'indicatore una volta nel blocco di inizializzazione.

Ma se nel corso del lavoro i parametri dell'indicatore devono essere cambiati automaticamente, dobbiamo farlo nel modo più efficace possibile.

Il modo più efficiente è quello di creare una nuova copia dell'indicatore nel timer (non necessariamente ad ogni tick).

Il modo più efficace sarebbe quello di creare una nuova copia dell'indicazione quando si verifica qualche evento (qualche evento).

PS

È necessario prendere in considerazione il tempo speso per calcolare l'indicatore e assicurarsi di sbarazzarsi delle copie "inutili".

 

Un'idea da prendere in considerazione... Ricalcolare una nuova borsa può essere fatto una volta al giorno o alla settimana per me... Impostare un timer:

bool  EventSetTimer(
   int  seconds      // количество секунд
   );

Davvero confuso dal numero di secondi in un giorno o in una settimana...))) Puoi anche farlo su una nuova barra giornaliera...

Nella funzione OnTimer(), prima rimuovo l'indicatore precedente conIndicatorRelease(), poi ne creo uno nuovo con un nuovo periodo.

void OnTimer() 
{

IndicatorRelease( ma_handle );

ma_handle=iMA(Symbol(),0,newMA,0,MA_EMA,PRICE_CLOSE);

}

Questa è un'idea generale...

 
Renat:

Non dovreste mai farlo:

Non fatevi ingannare dicendo"prendete il manico dell'indicatore" quando in realtàstate "creando un nuovo indicatore".

Inoltre, c'è la perdita di maniglie.

Nei primi giorni di MQL5, un sacco di domande sono state discusse, avete tagliato una parte importante degli sviluppi per l'auto-trading, e come risultato, le persone soffocano il vostro super-ottimizzato OnCalculate() con spazio vuoto e mettono i calcoli negli eventi. È un po' lento, ma comunque più veloce che creare il proprio handle per ogni parametro dinamico.