Erreurs, bugs, questions - page 1190

 
Luckhuman:
Désolé, c'est dans MT4.
Essayez d'ajouter la directive #property strict. Peut-être qu'une erreur sera écrite dans le journal.
 
Luckhuman:
Désolé, c'est dans MT4
Malheureusement, la fonction CopySpread() n'est pas prise en charge par MetaTrader 4 (une erreur s'est glissée dans l'aide).
 
Automated-Trading:
Malheureusement, la fonction CopySpread() n'est pas prise en charge par MetaTrader 4 (une erreur s'est glissée dans l'aide).
Combien de tampons d'indicateurs MT4 supporte-t-il ? J'ai pu lier seulement 17 tampons.
 
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_separate_window
#include <Object.mqh>

class CDoubleDynArray : public CObject
  {
public:
   double            Buffer[];

                     CDoubleDynArray(void){}
                    ~CDoubleDynArray(void){}
  };

CDoubleDynArray *buffers[];

int OnInit()
  {
//--- indicator buffers mapping
   ArrayResize(buffers,24);
   int i;
   for(i=0;i<ArraySize(buffers);i++)
      buffers[i]=new CDoubleDynArray;

   IndicatorBuffers(ArraySize(buffers));
   SetIndexBuffer(0,buffers[0].Buffer);
   for(i=1;i<ArraySize(buffers);i++)
     {
      if(!SetIndexBuffer(i,buffers[i].Buffer,INDICATOR_CALCULATIONS))
         Print(i," ",GetLastError());
      else
         Print(i," ",ArraySize(buffers[i].Buffer));
     }
//---
   return(INIT_SUCCEEDED);
  }

void OnDeinit(const int reason)
  {
   IndicatorBuffers(1);
   for(int i=1;i<ArraySize(buffers);i++)
     {
      delete buffers[i];
      buffers[i]=NULL;
     }
   delete buffers[0]; 
   ArrayResize(buffers,0); 
  }

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[])
  {
//---

//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+


 
Luckhuman:


Où dans le code voyez-vous que seulement 17 ? Vous créez 24, n'est-ce pas ?

Montre-moi ce que dit le journal.

 
Luckhuman:
Combien de tampons d'indicateurs MT4 supporte-t-il ? J'ai pu lier seulement 17 tampons.

Il y a 512 tampons disponibles dans MT4 :

Le nombre de tampons ne peut pas dépasser 512 et être inférieur à la valeur spécifiée dans la propriété indicator_buffers. Si votre indicateur personnalisé nécessite des tampons supplémentaires pour le comptage, vous devez utiliser cette fonction pour spécifier le nombre total de tampons.

Dans l'exemple, vous devez ajouter une ligne :

#property indicator_buffers 24
IndicatorBuffers - Документация на MQL4
  • docs.mql4.com
IndicatorBuffers - Документация на MQL4
 
Automated-Trading:


Dans l'exemple, vous devez ajouter une ligne :

Peut-on faire un avertissement comme dans MT5 sur les parcelles de propriétés manquantes ?
 
Automated-Trading:

Il y a 512 tampons disponibles dans MT4 :

Dans l'exemple, nous devons ajouter une ligne :

Dans cette ligne je spécifie le nombre de tampons

IndicatorBuffers(ArraySize(buffers));

Voici une capture d'écran du résultat

 
Automated-Trading:

Il y a 512 tampons disponibles dans MT4 :

Une ligne devrait être ajoutée à l'exemple :

#property indicator_buffers 24

Avec cette ligne, ça marche. Mais alors la fonction IndicatorBuffers() ne fonctionne pas, car c'est celle utilisée dans le code avec la valeur 24

Veuillez m'excuser. J'ai réduit le code à un exemple de test, en partant d'un indicateur modèle. Il y avait la ligne suivante dans l'indicateur

#property indicator_buffers 1
#property indicator_plots   1
 

L'exemple original avec ce code au début

#property indicator_buffers 1
#property indicator_plots   1

donne le même résultat que sur la capture d'écran (avec l'erreur 4051)

Histogramme et beaucoup de tampons de calcul ))))

Raison: