Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 232

 
Rustam Bikbulatov:
Deuxièmement. La commande pour ouvrir une commande

Ça n'a aucun sens. Qu'est-ce que cela a à voir avec un ordre au marché ? Peut-être est-ce l'appel de l'indicateur? Ensuite, modifiez l'indicateur et appelez-le en utilisant iCustom au lieu de iMACD.

Peut-être, il n'y a pas besoin de modifier quoi que ce soit, la kodobase est pleine de bonnes choses.

 
Vitalie Postolache:

Ça n'a aucun sens. Qu'est-ce que cela a à voir avec un ordre au marché ? Peut-être est-ce l'appel de l'indicateur? Ensuite, modifiez l'indicateur et appelez-le en utilisant iCustom au lieu de iMACD.

Peut-être que je n'ai pas besoin de modifier quoi que ce soit du tout, Kodobase est plein de bonnes choses.


J'ai essayé via iCustom mais cela fonctionne lentement. J'ai essayé viaiMAOnArray mais j'ai eu un problème avec les tableaux. Je n'ai pas réussi à les lier tous en un seul. C'estplus facile de faire un iMACD mais c'est la question.

 
Rustam Bikbulatov:

J'ai essayé iCustom, mais il fonctionne lentement. J'ai essayéiMAOnArray, mais il y a un problème avec les tableaux. Je n'ai pas pu tout relier pendant quelques jours. Il est plus facile de faire desiMACD, mais c'est la question.


Vous ne pouvez pas, l'iMACD standard calcule la ligne de signal en utilisant la formule SMA, seule la personnalisation peut aider.

 
Vitalie Postolache:

Impossible, l'iMACD standard calcule la ligne de signal en utilisant la formule SMA, seule la personnalisation peut aider.


Ok, j'ai compris que c'est impossible de faire ça. Merci beaucoup pour l'info.

 
Rustam Bikbulatov:

Je me suis rendu compte que c'est impossible. Merci beaucoup pour l'info.


Rien n'est impossible, il faut juste élargir un peu le champ d'action ))))

 
Rustam Bikbulatov:

C'est ça, j'ai compris que ce n'est pas possible. Merci beaucoup pour l'info.

Voici le code du MACD standard

//+------------------------------------------------------------------+
//|                                                  Custom MACD.mq4 |
//|                   Copyright 2005-2014, MetaQuotes Software Corp. |
//|                                              http://www.mql4.com |
//+------------------------------------------------------------------+
#property copyright   "2005-2014, MetaQuotes Software Corp."
#property link        "http://www.mql4.com"
#property description "Moving Averages Convergence/Divergence"
#property strict

#include <MovingAverages.mqh>

//--- indicator settings
#property  indicator_separate_window
#property  indicator_buffers 2
#property   indicator_color1  Silver
#property   indicator_color2  Red
#property   indicator_width1  2
//--- indicator parameters
input int InpFastEMA=12;   // Fast EMA Period
input int InpSlowEMA=26;   // Slow EMA Period
input int InpSignalSMA=9;  // Signal SMA Period
//--- indicator buffers
double    ExtMacdBuffer[];
double    ExtSignalBuffer[];
//--- right input parameters flag
bool      ExtParameters=false;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit(void)
  {
   IndicatorDigits(Digits+1);
//--- drawing settings
   SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexDrawBegin(1,InpSignalSMA);
//--- indicator buffers mapping
   SetIndexBuffer(0,ExtMacdBuffer);
   SetIndexBuffer(1,ExtSignalBuffer);
//--- name for DataWindow and indicator subwindow label
   IndicatorShortName("MACD("+IntegerToString(InpFastEMA)+","+IntegerToString(InpSlowEMA)+","+IntegerToString(InpSignalSMA)+")");
   SetIndexLabel(0,"MACD");
   SetIndexLabel(1,"Signal");
//--- check for input parameters
   if(InpFastEMA<=1 || InpSlowEMA<=1 || InpSignalSMA<=1 || InpFastEMA>=InpSlowEMA)
     {
      Print("Wrong input parameters");
      ExtParameters=false;
      return(INIT_FAILED);
     }
   else
      ExtParameters=true;
//--- initialization done
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Moving Averages Convergence/Divergence                           |
//+------------------------------------------------------------------+
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[])
  {
   int i,limit;
//---
   if(rates_total<=InpSignalSMA || !ExtParameters)
      return(0);
//--- last counted bar will be recounted
   limit=rates_total-prev_calculated;
   if(prev_calculated>0)
      limit++;
//--- macd counted in the 1-st buffer
   for(i=0; i<limit; i++)
      ExtMacdBuffer[i]=iMA(NULL,0,InpFastEMA,0,MODE_EMA,PRICE_CLOSE,i)-
                    iMA(NULL,0,InpSlowEMA,0,MODE_EMA,PRICE_CLOSE,i);
//--- signal line counted in the 2-nd buffer
   SimpleMAOnBuffer(rates_total,prev_calculated,0,InpSignalSMA,ExtMacdBuffer,ExtSignalBuffer);
   //ExponentialMAOnBuffer(rates_total,prev_calculated,0,InpSignalSMA,ExtMacdBuffer,ExtSignalBuffer);
//--- done
   return(rates_total);
  }
//+------------------------------------------------------------------+

La ligne marquée en rose, je l'ai ajoutée.

Si je décommente la ligne marquée en rose et commente la ligne marquée en vert, le MACD devrait être calculé en utilisant tous les MACD exponentiels.

 
Artyom Trishkin:

Voici le code pour le MACD standard

La ligne marquée en rose, je l'ai ajoutée.

Si je décommente la ligne marquée en rose et commente la ligne marquée en vert, le MACD devrait être calculé en utilisant toutes les MACD exponentielles.


La question était de savoir comment le faire dans l'EA. L'EA calculeautomatiquement en utilisant la formule SMA

 
Rustam Bikbulatov:

La question était de savoir comment faire cela dans l'EA. L'EA calculeautomatiquement la SMA en utilisant la formule suivante

Je vous ai montré comment créer un MACD personnalisé.

C'est ce que vous devez utiliser dans votre Expert Advisor via iCustom()

 
Artyom Trishkin:

Je vous ai montré comment créer un MACD personnalisé.

C'est ce que vous devez utiliser dans votre Conseiller Expert via iCustom()


J'ai beaucoup de données et le bush ralentit. J'ai déjà essayé. Ça affecte les résultats. Merci quand même.

 
Rustam Bikbulatov:

J'ai beaucoup de données et le bush ralentit. J'ai déjà essayé. Ça affecte les résultats. Merci quand même.

Vérifiez vos paramètres, peut-être avez-vous trop de barres à afficher, d'où les décalages.
Raison: