Indicadores: BB Stops - MACD

 

BB Stops - MACD:

El indicador MACD que utiliza el indicador famoso BB Stops, en vez de la línea de señal.

Autor: Mladen Rakic

 

Creo que MetaTrader 5 tiene un gran error. Cuando añado este indicador a mi EA, se clona cientos de veces.

*****************************************************************************************************************************

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

void tickProcess(int index)

{


orderClose(index);

int bbMACDDefinition = iCustom(sympol,0, "BB stops - MACD"); /¡No funciona! Supongo que error de MT.

double macd[];

double bmax[];

double bmin[];

double bblu[];

double bbld[]

doble bba[]

doble bbc[];

ArraySetAsSeries(macd,true);

ArraySetAsSeries(bmax,true);

ArraySetAsSeries(bmin,true);

ArraySetAsSeries(bblu,true);

ArraySetAsSeries(bbld,true);

ArraySetAsSeries(bba,true);

ArraySetAsSeries(bbc,true);

CopyBuffer(bbMACDDefinition,0,0,6,macd);

CopyBuffer(bbMACDDefinition,1,0,6,bmax);

CopyBuffer(bbMACDDefinition,2,0,6,bmin);

CopyBuffer(bbMACDDefinition,3,0,6,bblu);

CopyBuffer(bbMACDDefinition,4,0,6,bbld);

CopyBuffer(bbMACDDefinition,5,0,6,bba);

CopyBuffer(bbMACDDefinition,6,0,6,bbc);

int adxDefinition=iADXWilder(sympol,0,14); // ¡Funciona bien!

double adxArray[];

double dipArray[];

double dinArray[];

ArraySetAsSeries(adxArray,true);

ArraySetAsSeries(dipArray,true);

ArraySetAsSeries(dinArray,true);

CopyBuffer(adxDefinition,0,0,11,adxArray);

CopyBuffer(adxDefinition,1,0,11,dipArray);

CopyBuffer(adxDefinition,2,0,11,dinArray);




Bucle

 
cuneytates:

Creo que MetaTrader 5 tiene un gran error. Cuando añado este indicador a mi EA, se clona veces hundered.

*****************************************************************************************************************************

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

void tickProcess(int index)

{


orderClose(index);

int bbMACDDefinition = iCustom(sympol,0, "BB stops - MACD"); /¡No funciona! Supongo que error MT.

...





No hay nada malo con MT5 con respecto a que

Estás forzando (al no comprobar si el indicador personalizado ya está cargado) esa carga múltiple. Corrija su código

 
Mladen Rakic:

No hay nada malo con MT5 con respecto a eso

Estás forzando (al no comprobar si el indicador personalizado ya está cargado) esa carga múltiple. Corrija su código

Estimado Rakic,

Soy nuevo en la codificación.

Por favor, dime ¿dónde me equivoqué?

¿Qué significa "carga múltiple"?

Gracias

 
cuneytates:

Querido Rakic,

soy nuevo en la codificación.

Por favor, dígame en qué me he equivocado.

¿Qué significa "carga múltiple"?

Gracias

Entonces, por favor, publique en los temas del foro, no en la base de código

Una de las posibles (muchas) soluciones a su error :

void tickProcess(int index)
{

   //...

   static int bbMACDDefinition=INVALID_HANDLE;
          if (bbMACDDefinition==INVALID_HANDLE) bbMACDDefinition = iCustom(_Symbol,_Period,"BB stops - MACD");    //¡No funciona! Supongo MT bug.
          if (bbMACDDefinition==INVALID_HANDLE) return;

   //
   // haga el resto del procesamiento igual que en su código
   //
}
En cuanto al resto : Creo que no hay nada que explicar en la expresión "carga múltiple
 
Mladen Rakic:

El mensaje por favor en los temas del foro, no en la base de código

Una de las posibles (muchas) soluciones :

Como del resto : Creo que no hay nada más que explicar en la expresión "carga múltiple".
Gracias. Voy a publicar en el foro.