Indicadores: BB Stops - MACD

 

BB Stops - MACD:

O indicador MACD que está usando o famoso BB Stops em vez de usar a linha de sinal para sinais.

BB Stops - MACD

Autor: Mladen Rakic

 

Acho que o MetaTrader 5 tem um grande erro. Quando adiciono esse indicador ao meu EA, ele se clona centenas de vezes.

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

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

//| |

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

void tickProcess(int index)

{


orderClose(index);

int bbMACDDefinition = iCustom(sympol,0, "BB stops - MACD"); //Não funciona! Acho que é um bug do MT.

double macd[];

double bmax[];

double bmin[];

double bblu[];

double bbld[];

double bba[];

double bbc[];

ArraySetAsSeries(macd,true);

ArraySetAsSeries(bmax,true);

ArraySetAsSeries(bmin,true); ArraySetAsSeries(bmin,true);

ArraySetAsSeries(bblu,true); ArraySetAsSeries(bblu,true);

ArraySetAsSeries(bbld,true); ArraySetAsSeries(bbld,true);

ArraySetAsSeries(bba,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,2,0,6,bmin);

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

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

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

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

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

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);




Loop

 
cuneytates:

Acho que o MetaTrader 5 tem um grande erro. Quando adiciono esse indicador ao meu EA, ele se clona centenas de vezes.

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

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

//| |

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

void tickProcess(int index)

{


orderClose(index);

int bbMACDDefinition = iCustom(sympol,0, "BB stops - MACD"); //Não funciona! Acho que é um bug do MT.

...





Não há nada de errado com o MT5 com relação a isso

Você está forçando (ao não verificar se o indicador personalizado já está carregado) esse carregamento múltiplo. Corrija seu código

 
Mladen Rakic:

Não há nada de errado com o MT5 com relação a isso

Você está forçando (ao não verificar se o indicador personalizado já está carregado) esse carregamento múltiplo. Corrija seu código

Prezado Rakic,

Sou novato em codificação.

Por favor, diga-me onde errei?

Qual é o significado de "carregamento múltiplo"?

Muito obrigado

 
cuneytates:

Prezado Rakic,

Sou novato em codificação.

Por favor, diga-me onde errei?

O que significa "carregamento múltiplo"?

Obrigado

Então, publique nos tópicos do fórum, não na base de código

Uma das possíveis (muitas) soluções para seu erro:

void tickProcess(int index)
{

   //...

   static int bbMACDDefinition=INVALID_HANDLE;
          if (bbMACDDefinition==INVALID_HANDLE) bbMACDDefinition = iCustom(_Symbol,_Period,"BB stops - MACD");    //Não funciona! Acho que é um bug da MT.
          if (bbMACDDefinition==INVALID_HANDLE) return;

   //
   // faça o restante do processamento da mesma forma que você fez em seu código
   //
}
Quanto ao resto: Acredito que não há nada a ser explicado na expressão "carregamento múltiplo".
 
Mladen Rakic:

Por favor, poste nos tópicos do fórum, não na base de código

Uma das possíveis (muitas) soluções:

Quanto ao resto: Acredito que não há nada a ser explicado na expressão "carregamento múltiplo".
Obrigado. Vou postar no fórum.