Custom Indikator (icustom) mit standard-indikator als Signale in einem CExpert - basierten Advisor kombinieren

 

Hallo,

ich habe mit dem EA-Wizard eine entspr. EA-klasse erzeugt, die mit einem CExpert-Objekt arbeitet.

In dieser wird der Oscillator "Stochastic" als CExpertSignal und CExpertIndicator erzeugt und an das CExpert-Objekt übergeben.

Dasselbe möchte ich nun per iCustom mit einem in MT5 nicht enthaltenen Indikator tun.

Leider finde ich keinen Ansatz, wie ich dem verwendeten CExpert-Objekt den per iCustom erzeugten Handle übergebe, so dass bei einem entspr. Signal automatisch die entspr. Trade-Logik anlaeuft.

Any hints, wie man das mit dem CExpert-Objekt hinbekommt ? 

Thx in advance

Frank

 

Ein nutzerdefinierter Indikator bzw. dessen ex5-Datei wird über iCustom() von einem EA geladen und gelesen. Wie das geht ist als Beispiel in der Dok. gezeigt.

D.h. Du musst Deinen eigenen Indikator aufrufen wie den anderen.

Dies ist ein Beispiel wie aus mehreren Indikatoren die Signale erzeugt werden: ..\MQL5\Experts\Examples\Mean Reversion\Mean Reversion.mq5

Dokumentation zu MQL5: Technische Indikatoren / iCustom
Dokumentation zu MQL5: Technische Indikatoren / iCustom
  • www.mql5.com
iCustom - Technische Indikatoren - Nachschlagewerk MQL5 - Nachschlagewerk über die Sprache des algothitmischen/automatischen Handels für MetaTrader 5
 

Danke,

ja das verstehe ich soweit. Der EA-Wizard erstellt aber ein Handelssystem mit den Basisklassen CExpert, CExpertSignal, CETrade usw.

Für die CExpert-Klasse müssen dann Signale definiert werden, die Handelsaktionen auslösen, z.b. wie:


//--- Creating signal
   CExpertSignal *signal=new CExpertSignal;
   if(signal==NULL)
     {
      //--- failed
      printf(__FUNCTION__+": error creating signal");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//---
   ExtExpert.InitSignal(signal);
   signal.ThresholdOpen(Signal_ThresholdOpen);
   signal.ThresholdClose(Signal_ThresholdClose);
   signal.PriceLevel(Signal_PriceLevel);
   signal.StopLevel(Signal_StopLevel);
   signal.TakeLevel(Signal_TakeLevel);
   signal.Expiration(Signal_Expiration);
//--- Creating filter CSignalStoch
   CSignalStoch *filter0=new CSignalStoch;
   if(filter0==NULL)
     {
      //--- failed
      printf(__FUNCTION__+": error creating filter0");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
   signal.AddFilter(filter0);
//--- Set filter parameters
   filter0.PeriodK(Signal_Stoch_PeriodK);
   filter0.PeriodD(Signal_Stoch_PeriodD);
   filter0.PeriodSlow(Signal_Stoch_PeriodSlow);
   filter0.Applied(Signal_Stoch_Applied);
   filter0.Weight(Signal_Stoch_Weight);

Meine Frage ist, ob ich solche Signale auch aus den Werten eines per iCustom Indicators erzeugen und der CExpert-Klasse übergeben kann ... Das wäre ja der saubere Weg, beliebige indikatorwerte in ein Handelssignal zu wandeln und das von MT5 implementierte Handelssystem zu triggern.

 
Frank Gerards:

Danke,

ja das verstehe ich soweit. Der EA-Wizard erstellt aber ein Handelssystem mit den Basisklassen CExpert, CExpertSignal, CETrade usw.

Für die CExpert-Klasse müssen dann Signale definiert werden, die Handelsaktionen auslösen, z.b. wie:


Meine Frage ist, ob ich solche Signale auch aus den Werten eines per iCustom Indicators erzeugen und der CExpert-Klasse übergeben kann ... Das wäre ja der saubere Weg, beliebige indikatorwerte in ein Handelssignal zu wandeln und das von MT5 implementierte Handelssystem zu triggern.

Ich habe den Wizzard noch nie verwendet, ich nehme immer einen EA, der schon funktioniert als "Wizzard".

Ich hatte den EA erwähnt: ..\MQL5\Experts\Examples\Mean Reversion\Mean Reversion.mq5

Der verwendet mehrere Indikatoren. Wieso nimmst Du nicht den (er ist fertig und fehlerfrei) und änderst ihn Stück für Stück ab?

Er verwendet (nur):

#include <Trade\Trade.mqh>
#include <Trade\OrderInfo.mqh>
#include <Trade\PositionInfo.mqh>
#include <Trade\SymbolInfo.mqh>

Ich habe mir zum Beispiel Trade\Trade.mqh kopiert, die Kopie umbenannt und und dann dort meine eigenen Funktionen hinzugefügt (so bin ich sicher, dass nicht ein Update Trade.mqh überschreibt und alle meine Sachen plötzlich löscht).

 

hi,

danke - ja eine low-level-Lösung hab ich mir nun für mehrere Indikatoren mit den entspr. i<Indicatorname> Klassen gebaut.

Der Vorteil der EA-Wizard Scaffold Lösung ist, dass das ganze Trading in den entspr. CExpert,CSignal,CTrade,CPosition Klassen implementiert ist und mit relativ wenig Aufwand getriggert/gesteuert werden kann.

Danke jedenfalls für den Hinweis, ich werde das Stück für Stück richtung "EA Wizard" entwickeln.