Diskussion zum Artikel "Der NRTR Indikator und Handelsmodule basierend auf NRTR für MQL5 Wizard"

 

Neuer Artikel Der NRTR Indikator und Handelsmodule basierend auf NRTR für MQL5 Wizard :

Der Artikel beschreibt den NRTR Indikator und ein Handelssystem, das auf diesem Indikator basiert. Wir erstellen ein Modul von Handelssignalen, mit welchen Strategien basierend auf Kombinationen von NRTR und zusätzlichen Indikatoren, die einen Trend bestätigen, entwickelt werden.

Die Idee des NRTR Indikators, Nick Rypock Trailing Reverse, gehört Konstantin Kopyrkin. Interessante Information: hinter dem Namen "Nick Rypock" verbirgt sich der Familienname "Kopyrkin", rückwärts geschrieben. 

Aber zurück zum Indikator. Er stellt einen dynamischen Preiskanal dar. Der Autor veranschaulicht die Grundidee durch die folgende Abbildung:

NRTR

Autor: Dmitrii Troshin

 
MetaQuotes Software Corp.:

Veröffentlichter Artikel NRTR Indikator und darauf basierende Handelsmodule für MQL5 Wizard:

Autor: Dmitrii Troshin


Ich verstehe nicht, wie man über iCustom darauf zugreifen kann ... bitte erklären

es sollte etwas geben wie

double iCustom (
stringsymbol, // Symbolname
int timeframe, // Zeitrahmen
stringname, // Ordner/Benutzername des Indikators
... // Liste der Indikator-Eingabeparameter
int mode, // Datenquelle
int shift// Verschiebung
);

das ist speziell in unserem Fall

//+------------------------------------------------------------------+
//| NRTRvolatile|
//+------------------------------------------------------------------+
//iBufferNumber
//0
//1 
//2 - Signal nach oben
//3 - Signal nach unten
double indNRTRvolatile(string sSymbol=NULL,
                int tf=PERIOD_M5,
                int period=12,                  //dynamische Periode
                double K=1,                       //Skalierungsfaktor
                int iBufferNumber=0,
                int iShift=0)
{
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   double handle=iCustom(sSymbol,timeframe,"NRTRvolatile",period,K,iBufferNumber,iShift);
   
   if(handle<0)
     {
      Print("NRTRvolatile-Objekt nicht erstellt: Fehler ",GetLastError());
      return(-1);
     }
   else
      return(CopyBufferMQL4(handle,0,iShift));
}  


nur irgendeinen Unsinn ausgibt, z.B. aktuelle Preise, wenn man sich auf Puffer 2 oder 3 bezieht

 
gedd:

Ich verstehe nicht, wie man über iCustom darauf zugreifen kann ... bitte erklären

Die Puffer 2,3 enthalten Signale, die nur im Moment des Trendwechsels aktualisiert werden.

Unterstützung/Widerstand sind in den Puffern 0,1 - das sind die Linien, die wir als Linien sehen

CopyBuffer() - hat drei Überladungen, aber keine von ihnen hat drei Parameter.

Eine Variante des Codes zum Abrufen der Werte der Puffer

void OnStart()
{
double arr[];
int handle =iCustom(Symbol(),0,"NRTRvolatile",12,1);
CopyBuffer(handle,0,0,1,arr);
Print("Unterer Kanal",arr[0]);
CopyBuffer(handle,1,0,1,arr);
Print("Oberer Kanal",arr[0]);
CopyBuffer(handle,2,0,1,arr);
Print("Signalisieren Sie.",arr[0]);
CopyBuffer(handle,3,0,1,arr);
Print("Signal unten".,arr[0]);
}

Dies ist das Skript

 
Dmitrii Troshin:

Die Puffer 2 und 3 enthalten Signale, die nur im Moment des Trendwechsels aktualisiert werden.

Unterstützung/Widerstand sind in den Puffern 0,1 - das sind die Linien, die wir als Linien sehen

CopyBuffer() - hat drei Überladungen, aber keine von ihnen hat drei Parameter.

Eine Variante des Codes zum Abrufen der Werte der Puffer

Dies ist ein Skript


Ja, jetzt ist es klarer.

über CopyBuffer - es ist aus der mql4-Kompatibilitätsbibliothek, genauer gesagt aus initmql4__1.mqh.

double CopyBufferMQL4(int handle,int index,int shift)
  {
   double buf[];
   switch(index)
     {
      case 0: if(CopyBuffer(handle,0,shift,1,buf)>0)
         return(buf[0]); break;
      case 1: if(CopyBuffer(handle,1,shift,1,buf)>0)
         return(buf[0]); break;
      case 2: if(CopyBuffer(handle,2,shift,1,buf)>0)
         return(buf[0]); break;
      case 3: if(CopyBuffer(handle,3,shift,1,buf)>0)
         return(buf[0]); break;
      case 4: if(CopyBuffer(handle,4,shift,1,buf)>0)
         return(buf[0]); break;
      default: break;
     }
   return(EMPTY_VALUE);
  }
 

vermutlich ja

//+------------------------------------------------------------------+
//| NRTRvolatile|
//+------------------------------------------------------------------+
//iBufferNumber
//0
//1 
//2 - Signal nach oben
//3 - Signal nach unten
double indNRTRvolatile(string sSymbol=NULL,
                int tf=PERIOD_M5,
                int period=12,                  //dynamische Periode
                double K=1,                       //Skalierungsfaktor
                int iBufferNumber=0,
                int iShift=0)
{
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   double handle=iCustom(sSymbol,timeframe,"NRTRvolatile",period,K);
   
   if(handle<0)
     {
      Print("NRTRvolatile-Objekt nicht erstellt: Fehler ",GetLastError());
      return(-1);
     }
   else
      return(CopyBufferMQL4(handle,iBufferNumber,iShift));

}

 

Ist es möglich, NRTRvolatile so zu aktualisieren, dass ein Meldungsfenster erscheint, wenn ein Pfeil hinzugefügt wird?

 
gedd:

Ist es möglich, NRTRvolatile so zu erweitern, dass beim Hinzufügen eines Pfeils ein Meldungsfenster angezeigt wird?


Vielleicht in den Funktionen LongCondition und ShortCondition.

int SignalNRTR::LongCondition(void)
   {
   int idx   =StartIndex();
   if(UpSignal(idx))
   { 
   Alert"Text";   
   return 100;
   }
   else return 0;
   }

um so etwas wie Alert"Text" hinzuzufügen. Ich weiß nicht, ob das funktionieren wird. Das Problem ist, dass ich diesen Code nicht mehr auf meinem Computer habe. Alles, was ich letztes Jahr hatte, habe ich in der Vergangenheit weggelegt:) Also kann ich es nicht ausprobieren. Und ich habe immer noch Silvester in meinem Kopf :)

 

Im Indikator selbst, irgendwo hier

 // Trendwechsel 
  
      if(trend>0) Buff_Up[i]=value;
      if(trend<0) Buff_Dn[i]=value;

      if(trend_prev<0  &&  trend>0) 
      {
      Alert("Text");
      Sign_Up[i]=value;
      Buff_Up[i]=0.0;
      }
      if(trend_prev>0 && trend<0)
      {
      Alert("Text");
      Sign_Dn[i]=value;
      Buff_Dn[i]=0.0;
      }
 

The path to the includefiles should be corrected to

#include <Expert\\ExpertSignal.mqh>
 

 both variants are possible. Right variant

#include <Expert\ExpertSignal.mqh>

 you can see it in another modules in folder Include\Expert\Signal