Il POF per gli scolari. - pagina 9

 
Dmitry Fedoseev:

Se l'indicatore è calcolato da sinistra a destra, allora se succede qualcosa, per esempio si forma un frattale, dovete memorizzare l'indice della barra con questo evento (per usarlo per qualcos'altro). Se l'indicizzazione è da destra a sinistra, dovremmo calcolare n=Barre-i e ricordare n, e poi fare il contrario: i=Barre-n. Ma se fai l'indice da sinistra a destra, dovresti solo salvare l'indice e usarlo, non cambierà. Poiché in indicatori più o meno complicati questo è sempre necessario, l'indicizzazione da sinistra a destra è un grande aiuto per gli sviluppatori di indicatori.

Una volta che ho iniziato a scrivere un indicatore in mql4, ne ho scritto 1/3, un'altra parte 1/3 era basata sui risultati del primo e la terza parte era basata sui valori del secondo terzo. Ho affrontato un grosso problema quando ho calcolato la barra con il valore necessario. Ma è successo che il cliente è scomparso e non ho finito di scriverlo. E quando si indicizza a destra il numero di barra è invariato, basta scrivere il numero di barra nell'array ausiliario e solo questo array deve essere eseguito per costruire la seconda e la terza parte...

 
Dmitry Fedoseev:

Se l'indicatore è calcolato da sinistra a destra, allora se succede qualcosa, per esempio si forma un frattale, dovete memorizzare l'indice della barra con questo evento (per usarlo per qualcos'altro). Se l'indicizzazione è da destra a sinistra, dovremmo calcolare n=Barre-i e ricordare n, e poi fare il contrario: i=Barre-n. Ma se fai l'indice da sinistra a destra, dovresti solo salvare l'indice e usarlo, non cambierà. Poiché in indicatori più o meno complicati questo è sempre necessario, l'indicizzazione da sinistra a destra è un grande aiuto per gli sviluppatori di indicatori.

Che ne dici di. E poi il terminale scarica la storia e cosa?
 
Ihor Herasko:

Ecco un esempio.

Grazie, ma

  1. Sfortunatamente, è a quattro zampe.
  2. Vorrei un chiaro esempio di collegamento di un tale indicatore senza iCustom )))
 
Vladimir Simakov:
Oh, cavolo. E poi il terminale scarica la storia e cosa?

Non è un grosso problema. Devi solo dimenticare l'approccio a quattro

   int counted_bars=IndicatorCounted();
   int i,r,limit;

   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
         limit = Bars-counted_bars;
         if (ArrayRange(working,0) != Bars) ArrayResize(working,Bars);

   //
   //
   //
   //
   //
        
   for(i=limit, r=Bars-i-1; i >= 0; i--,r++)

E fare così.

if(rates_total-prev_calculated > 1)
 {
  // Если это первый запуск или подгрузилась история пересчитаем весь индикатор.
 }
if(rates_total-prev_calculated >= 0)
 {
  // Пересчитаем только последнее изменение.
 }
 
#include <Indicators/Indicators.mqh>

CiADX adx;

int OnInit()
  {

   if(!adx.Create(Symbol(),Period(),14)){
      return(INIT_FAILED);
   }

   OnTick(); // это только для этого примера, чтобы на выходных сработало

   return(INIT_SUCCEEDED);
  }

void OnTick()
  {
   double buf[];
   
   if(adx.GetData(0,1,0,buf)==-1){
      return;
   }

   Comment(buf[0]);
   
  }
 
Vladimir Simakov:
Oh, sì. E poi il terminale ha scaricato la storia e cosa?

Da dove vieni e perché sei qui? Hai scritto un singolo indicatore per MT4 o MT5? Almeno dovresti conoscere le basi della scrittura di indicatori per MetaTrader.

 
Dmitry Fedoseev:

Perché non hanno mai scritto indicatori complessi ma veloci, altrimenti l'indicizzazione da sinistra a destra sarebbe stata una soluzione molto importante.

Se hai bisogno di un indicatore veloce per un EA, è meglio mettere la parte di calcolo direttamente nell'EA.

 
Alexey Volchanskiy:

Se hai bisogno di un indicatore rapido per l'EA, è più redditizio inserire la parte di calcolo direttamente nell'EA.

Niente da fare... Raccontalo alle tue amiche, per amore della brutalità.

 
Dmitry Fedoseev:

Da dove vieni e perché sei qui? Hai scritto un singolo indicatore per MT4 o MT5? Dovresti almeno conoscere le basi della scrittura di indicatori per MetaTrader.

Dimitri è arrabbiato, non ha ancora preso la sbornia)))

 
L'ho aggiustato un po'. GetData() dovrebbe essere controllato per la disuguaglianza -1.