Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 232

 
Rustam Bikbulatov:
Segundo. El comando para abrir una orden

No tiene ningún sentido. ¿Qué tiene que ver con una orden de mercado? ¿Tal vez sea la llamada del indicador? Entonces modifique el indicador y llámelo usando iCustom en lugar de iMACD.

Tal vez, no hay necesidad de modificar nada en absoluto, el kodobase está lleno de golosinas.

 
Vitalie Postolache:

No tiene ningún sentido. ¿Qué tiene que ver con una orden de mercado? ¿Tal vez sea la llamada del indicador? Entonces modifique el indicador y llámelo usando iCustom en lugar de iMACD.

Tal vez no tenga que modificar nada, el kodobase está lleno de cosas buenas.


Lo he intentado a través de iCustom pero funciona lentamente. Lo intenté a través deiMAOnArray pero tuve un problema con los arrays. Estuve un par de días intentando unir todas las matrices. Esmás fácil hacer iMACD pero esa es la cuestión

 
Rustam Bikbulatov:

He probado iCustom, pero funciona lentamente. Probé coniMAOnArray, pero hay un problema con los arrays. No pude unir todo durante un par de días. Es más fácil haceriMACD, pero esa es la cuestión.


No se puede, el iMACD estándar calcula la línea de señal utilizando la fórmula SMA, sólo la costumbre ayudará.

 
Vitalie Postolache:

De ninguna manera, el iMACD estándar calcula la línea de señal utilizando la fórmula SMA, sólo la costumbre ayudará.


Vale, ya me he dado cuenta de que es imposible hacerlo. muchas gracias por la información

 
Rustam Bikbulatov:

Me he dado cuenta de que es imposible, muchas gracias por la información.


Nada es imposible, sólo hay que ampliar un poco el alcance ))))

 
Rustam Bikbulatov:

Ya está, me he dado cuenta de que no es posible. muchas gracias por la información

Este es el código del MACD estándar

//+------------------------------------------------------------------+
//|                                                  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 línea marcada en rosa la he añadido yo.

Si descomento la línea marcada en rosa y comento la línea marcada en verde, el MACD debería calcularse utilizando todos los MACD exponenciales.

 
Artyom Trishkin:

Este es el código para el MACD estándar

La línea marcada en rosa la he añadido yo.

Si descomento la línea marcada en rosa y comento la línea marcada en verde, el MACD debería calcularse utilizando todos los MACD exponenciales.


La cuestión era cómo hacerlo en la EA. El EA calculaautomáticamente utilizando la fórmula de la SMA

 
Rustam Bikbulatov:

La cuestión era cómo hacerlo en la EA. El EA calculaautomáticamente la SMA mediante la fórmula

Te mostré cómo hacer un MACD personalizado.

Esto es lo que debe utilizar en su Asesor Experto a través de iCustom()

 
Artyom Trishkin:

Te mostré cómo hacer un MACD personalizado.

Esto es lo que debe utilizar en su Asesor Experto a través de iCustom()


Tengo muchos datos y el arbusto se está ralentizando. Ya lo he probado. Afecta a los resultados. Gracias de todos modos.

 
Rustam Bikbulatov:

Tengo muchos datos y el arbusto se está ralentizando. Ya lo he probado. Está afectando a los resultados. Gracias de todos modos.

Comprueba tu configuración, quizás tienes demasiadas barras para mostrar, de ahí los retrasos.