Calling the iCustom(Symbol(),Period(),"Examples\\Zigzag".... about a separate class; works in debugging with historical data, but not in real time

Einloggen oder registrieren, um einen Kommentar zu schreiben
wtu Hagner
42
wtu Hagner  

My class for the iCustom (Symbol (), Period (), "Examples\\Zigzag"... in the file<identifycandle\SARBBKlassen.mqh>

class CGetHochTief {
   int zigZagHandle;
   double   zigZagLow[];

   public:

double GetTief(int FeinheitE ,int AbweichungE, int RueckschritteE) { 

          zigZagHandle=iCustom(Symbol(),Period(),"Examples\\Zigzag",FeinheitE,AbweichungE,RueckschritteE,0);

          if(CopyBuffer(zigZagHandle,2,0,AbweichungE,zigZagLow)<0) {     Print("Can't copy ZigZag buffer 1!");    }

          return(zigZagLow[0]);

        }

};

CGetHochTief GetHochTief;

_______________________________________________________________

Calling the class in the Expertadviser

#include <identifycandle\SARBBKlassen.mqh>

....

void OnTick()  {

LetztesTiefMerker = GetHochTief.GetTief(20,7,5);

...

}

_______________________________________________________________

I'm at a loss, does anyone have any idea why it works in the test environment and not in the real market?

I would be very grateful for any tips.

Kind regards - Thomas

Carl Schreiber
Moderator
9812
Carl Schreiber  
  1. Ich kann Dir zu mt5 nicht helfen, aber
  2. Du kannst hier Deutsch sprechen,
  3. trotzdem ist ".. it works .. not .. in real market" zu wenig Dir zu helfen!

Was sagen die logs? Es wird doch eine Auftrag erteilt? Bist Du mit dem Debugger Deinen EA durchgegangen?

Verwende Print oder Comment, um die entscheidenden Variablenwerte einzusehen!

wtu Hagner
42
wtu Hagner  
Carl Schreiber:
  1. Ich kann Dir zu mt5 nicht helfen, aber
  2. Du kannst hier Deutsch sprechen,
  3. trotzdem ist ".. it works .. not .. in real market" zu wenig Dir zu helfen!

Was sagen die logs? Es wird doch eine Auftrag erteilt? Bist Du mit dem Debugger Deinen EA durchgegangen?

Verwende Print oder Comment, um die entscheidenden Variablenwerte einzusehen!


Im Register Journal steht:

2017.11.29 05:04:23.458              Experts expert M1HochTief (EURUSD,M1) loaded successfully

2017.11.29 05:53:56.252              Network              '5092998': scanning network for access points

2017.11.29 05:53:59.952              Network              '5092998': scanning network finishedEs kommen

keine Fehler oder so.


Im Register Experten kommt:

2017.11.29 05:04:25.160 M1HochTief (EURUSD,M1)          vorher

2017.11.29 05:04:25.359 M1HochTief (EURUSD,M1)          zigZagLow[0]: 0.0

2017.11.29 05:04:25.359 M1HochTief (EURUSD,M1)          nachher 0

2017.11.29 05:04:25.359 M1HochTief (EURUSD,M1)          LetztesTief3: 0.0 LetztesTief2: 0.0 LetztesTief1: 0.0 LetztesTief: 0.0 LetztesTiefMerker: 0.0

2017.11.29 05:04:25.430 M1HochTief (EURUSD,M1)          zigZagHigh[0]: 0.0

2017.11.29 05:04:25.430 M1HochTief (EURUSD,M1)          LetztesHoch3: 0.0 LetztesHoch2: 0.0 LetztesHoch1: 0.0 LetztesHoch: 0.0 LetztesHochMerker: 0.0

 

Das bedeutet, das Programm wird geladen, läuft 2mal durch und bleibt dann stehen

Otto Pauser
2166
Otto Pauser  

Hi Thomas,

Falls du mehr Code postest, kann ich dir helfen.

Grüße, Otto

Carl Schreiber
Moderator
9812
Carl Schreiber  

Naja, wenn keine neuen Positionen eröffnet werden, könnte es sein, dass:

  1. Du zu ungeduldig bist ;)
  2. Du einen Fehler in Deiner 'Logik' zu Positionseröffnung hast.

Dazu lass Dir mit Comment() die aktuellen Werte für die Positionseröffnung auf dem Chart anzeigen (so wird das EA-Log nicht so voll wie mit Print()) und Du kannst Deinen EA 'beim Atmen' zuschauen!

(Bei mir werden boolsche Ausdrücke mit "..",(string)boolVar,.. mit true oder false ausgegeben nicht mit 0 und 1 (jedenfalls im MT4)

wtu Hagner
42
wtu Hagner  
Otto Pauser:

Hi Thomas,

Falls du mehr Code postest, kann ich dir helfen.

Grüße, Otto


Vielmehr Code ist es nicht. Die Klasse und der Aufruf der Klasse. Alles andere läuft ja.

Dennoch, im Anhang die kompletten Dateien ...

Dateien:
wtu Hagner
42
wtu Hagner  

Hab’s selber rausgefunden.

Der Aufruf

zigZagHandle=iCustom(Symbol(),Period(),"Examples\\Zigzag",20,7,5);

Muss schon im Bereich

int OnInit()

stattfinden, dann gibt der ZigZag seine Werte im Bereich

void OnTick()

  mit

if(CopyBuffer(zigZagHandle,1,0,7,zigZagHigh)<0)

   {      Print("Can't copy ZigZag buffer 1!");

      return;

   }

Immer zurück

 

Wenn jedoch der Zigzag in einer eigenen Klasse aufgerufen wird und somit bei jeder Abfrage des nächsten Hochs der Zigzag wiederholt mit

zigZagHandle=iCustom(Symbol(),Period(),"Examples\\Zigzag",20,7,5);

initialisiert wird (siehe oben im Code der Klasse), fängt er nach einiger Zeit an zu spinnen. Manchmal geht er, meistens jedoch nicht.

So sieht nach meinen Test aus

Einloggen oder registrieren, um einen Kommentar zu schreiben