[J'écrirai n'importe quel expert ou indicateur gratuitement. - page 89

 
Vinin:
Pas plus facile. Pas assez de tampons.
Il n'y aurait pas assez de tampons. Mais l'auteur ne voulait que des histogrammes :))
"Je veux dire 3 histogrammes avec des valeurs différentes"
 
granit77:
Ce n'est pas suffisant. Mais l'auteur ne voulait que des histogrammes :))
"Je veux dire 3 histogrammes avec des valeurs différentes"

Il n'est donc pas réaliste de faire 3 histogrammes ? Est-ce que je perds mon temps avec ce code ?
 
J'ai utilisé celui-ci comme base. Je n'arrive pas à trouver comment ajouter un troisième histogramme. Je ne sais pas quoi faire. Sauf à me tenir sur la tête.
 
alkeon:
Il n'est donc pas réaliste de faire 3 histogrammes ? Est-ce que je me suis donné tout ce mal pour casser le code pour rien ?
Il n'y a rien pour rien. L'expérience a plus de valeur que le résultat.
Dans ce cas particulier, cela dépend du nombre de copies MACD dont vous avez besoin. Une copie nécessite deux tampons (histogramme et ligne de signal), vous avez besoin de huit tampons au total. C'est-à-dire que trois copies prendront six tampons et qu'il en restera encore.
Comment va votre agonie ? Où est le code ?

P.S.
Je n'aime pas votre prototype. Ce n'est pas deux MACDs, c'est un lissage séquentiel. Mieux vaut prendre un simple MACD classique et le tripler.
Dossiers :
macd.mq4  3 kb
 
Les principales brimades se situent au niveau du travail sur l'ordinateur. Mais ce n'est pas un problème, je l'ai déjà tellement tourmenté que je me souviens par cœur de ce qu'il faut répéter.
 
C'est juste que c'est plus facile (comme je le pensais). Merci pour l'indicateur, je vais maintenant commencer à m'y habituer.
 

Voilà où j'en étais. Totalement confus au sujet des formules. Qu'est-ce qu'il y a ?

Il s'agit de la dernière version sans erreur. Mais c'est aussi un désordre.

Dossiers :
macd_3.mq4  5 kb
 
En général, la direction est bonne, corrigez les erreurs et cela fonctionnera. Je ne le corrigerai pas, je l'expliquerai avec des mots.

//+------------------------------------------------------------------+
//|                                                  Custom MACD.mq4 |
//|                      Copyright © 2004, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property  copyright "Copyright © 2004, MetaQuotes Software Corp."
#property  link      "http://www.metaquotes.net/"
//---- indicator settings
#property  indicator_separate_window
#property  indicator_buffers 6
#property  indicator_color1  Silver
#property  indicator_color2  Red
#property  indicator_color3  Silver
#property  indicator_color4  Red
#property  indicator_color5  Silver
#property  indicator_color6  Red
#property  indicator_width1  2
//---- indicator parameters
extern int FastEMA=12;
extern int SlowEMA=26;
extern int SignalSMA=9;
extern int FastEMA1=12;
extern int SlowEMA1=26;
extern int SignalSMA1=9;
extern int FastEMA2=12;
extern int SlowEMA2=26;
extern int SignalSMA2=9;
//---- indicator buffers
double     MacdBuffer[]; //Проверить соответствие нумерации
double     SignalBuffer[];
double     MacdBuffer1[];
double     SignalBuffer2[];
double     MacdBuffer3[];
double     SignalBuffer4[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- drawing settings
   SetIndexStyle(0,DRAW_HISTOGRAM);// нумерация буферов должна идти подряд от 0 до 6
   SetIndexStyle(1,DRAW_LINE);
   SetIndexDrawBegin(1,SignalSMA);
   IndicatorDigits(Digits+1);
    SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexDrawBegin(1,SignalSMA);
   IndicatorDigits(Digits+1);
    SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexDrawBegin(1,SignalSMA);
   IndicatorDigits(Digits+1);
//---- indicator buffers mapping
   SetIndexBuffer(0,MacdBuffer);
   SetIndexBuffer(1,SignalBuffer);
   SetIndexBuffer(0,MacdBuffer);
   SetIndexBuffer(1,SignalBuffer);
   SetIndexBuffer(0,MacdBuffer);
   SetIndexBuffer(1,SignalBuffer);
//---- name for DataWindow and indicator subwindow label
   IndicatorShortName("MACD("+FastEMA+","+SlowEMA+","+SignalSMA+","+FastEMA1+","+SlowEMA1+","+SignalSMA1+","+FastEMA2+","+SlowEMA2+","+SignalSMA2+")");
   SetIndexLabel(0,"MACD");
   SetIndexLabel(1,"Signal");
//---- initialization done
   return(0);
  }
//+------------------------------------------------------------------+
//| Moving Averages Convergence/Divergence                           |
//+------------------------------------------------------------------+
int start()
  {
   // Эта часть пишется только 1 раз
   int limit;
   int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
   //-------------------------------  
//---- macd counted in the 1-st buffer
   for(int i=0; i<limit; i++)
      MacdBuffer[i]=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);
//---- signal line counted in the 2-nd buffer
   for(i=0; i<limit; i++)
      SignalBuffer[i]=iMAOnArray(MacdBuffer,Bars,SignalSMA,0,MODE_SMA,i);
      
      
      int limit;
   int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
//---- macd counted in the 1-st buffer
   for(int i=0; i<limit; i++)
      MacdBuffer1[i]=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);
//---- signal line counted in the 2-nd buffer
   for(i=0; i<limit; i++)
      SignalBuffer2[i]=iMAOnArray(MacdBuffer,Bars,SignalSMA,0,MODE_SMA,i);
      
      
      int limit;
   int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
//---- macd counted in the 1-st buffer
   for(int i=0; i<limit; i++)
      MacdBuffer3[i]=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);
//---- signal line counted in the 2-nd buffer
   for(i=0; i<limit; i++)
      SignalBuffer4[i]=iMAOnArray(MacdBuffer,Bars,SignalSMA,0,MODE_SMA,i);
      
//---- done
   return(0);
  }
//+------------------------------------------------------------------+
 

Bonjour cher kubodel, veuillez corriger le conseiller d'ouvrir une transaction non à 00 minutes de chaque période.

et après 30 secondes à compter du début de l'horizon temporel de la bougie

 
abolk:

J'ai modifié les chiffres du tampon en première approximation - ensuite, c'est à vous de jouer :

Andrey Nikolaevich, quelle est votre hâte ! Il l'aurait compris lui-même, mais il s'en serait mieux souvenu.