Indikatoren: BB Stops - MACD

 

BB Stops - MACD:

Der Indikator MACD, der die gut bekannten BB_Stopps statt der Signallinie für die Signale verwendet.

Autor: Mladen Rakic

 

Ich glaube, MetaTrader 5 hat einen großen Fehler. Wenn ich diesen Indikator zu meinem EA hinzufüge, klont er sich hunderte Male.

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

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

//| |

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

void tickProcess(int index)

{


orderClose(index);

int bbMACDDefinition = iCustom(sympol,0, "BB stops - MACD"); //Funktioniert nicht! Ich vermute MT-Bug.

double macd[];

double bmax[];

double bmin[];

double bblu[];

double bbld[];

double bba[];

double 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); // Funktioniert gut!

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




Schleife

 
cuneytates:

Ich glaube, MetaTrader 5 hat einen großen Fehler. Wenn ich diesen Indikator zu meinem EA hinzufügen, es klont sich hunderte Male.

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

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

//| |

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

void tickProcess(int index)

{


orderClose(index);

int bbMACDDefinition = iCustom(sympol,0, "BB stops - MACD"); //Funktioniert nicht! Ich vermute MT-Bug.

...





MT5 hat diesbezüglich keine Probleme

Sie erzwingen (indem Sie nicht prüfen, ob der benutzerdefinierte Indikator bereits geladen ist) dieses mehrfache Laden. Korrigieren Sie Ihren Code

 
Mladen Rakic:

Diesbezüglich ist an MT5 nichts auszusetzen.

Sie erzwingen (indem Sie nicht prüfen, ob der benutzerdefinierte Indikator bereits geladen ist) dieses mehrfache Laden. Korrigieren Sie Ihren Code

Lieber Rakic,

ich bin neu im Programmieren.

Bitte sagen Sie mir, was ich falsch gemacht habe?

Was ist mit "mehrfachem Laden" gemeint?

Danke

 
cuneytates:

Lieber Rakic,

ich bin neu in der Codierung.

Bitte sagen Sie mir, was ich falsch gemacht habe?

Was bedeutet "mehrfaches Laden"?

Danke

Dann posten Sie bitte in den Forumsthemen, nicht in der Codebasis

Eine der möglichen (vielen) Lösungen für Ihren Fehler :

void tickProcess(int index)
{

   //...

   static int bbMACDDefinition=INVALID_HANDLE;
          if (bbMACDDefinition==INVALID_HANDLE) bbMACDDefinition = iCustom(_Symbol,_Period,"BB stops - MACD");    //Funktioniert nicht! Ich vermute MT-Fehler.
          if (bbMACDDefinition==INVALID_HANDLE) return;

   //
   // Der Rest der Verarbeitung erfolgt genauso wie in Ihrem Code
   //
}
Im Übrigen glaube ich, dass der Ausdruck "Mehrfaches Laden" nichts weiter zu erklären hat.
 
Mladen Rakic:

Bitte posten Sie in den Forenthemen, nicht in der Codebasis.

Eine der möglichen (vielen) Lösungen :

Was den Rest betrifft: Ich glaube, dass es nichts weiter zu erklären gibt in der "multiple loading" Ausdruck
Danke. Ich werde im Forum zu posten.