Wie extrahiert man nur die vom Zickzack-Indikator extrahierten unteren Umkehrpunkte? - Seite 3

 
jackprobe:
Danke deVries. werde es versuchen ...


und wenn man etwas einfügt wie

dies innerhalb Ihres Codes ....

 
ubzen:

Hier ist, was ich herausgefunden habe. Ich habe deVries obige Ergebnisse nicht überprüft [ich habe dies getan, als er gepostet hat].


Hallo, ubzen, ich sehe gerade Ihren Code wie unten:

Ich weiß nicht, was diese beiden Codezeilen bedeuten: if(Bottoms[shift]>0.1) Bottoms[shift]=Bottoms[shift]; if(Toppers[shift]>0.1) Toppers[shift]=Toppers[shift];

Ich finde, dass sich fast nichts ändert, wenn ich die Codes dieser beiden Zeilen lösche, daher weiß ich nicht, warum Sie diese beiden Zeilen hinzufügen.

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Green
#property indicator_width1 1
#property indicator_color2 Yellow
#property indicator_width2 1

double Bottoms[];
double Toppers[];

int init()
{

   IndicatorBuffers(2);

   SetIndexStyle(0,DRAW_SECTION);
   SetIndexBuffer(0,Bottoms);
   SetIndexEmptyValue(0,0.0);

   SetIndexStyle(1,DRAW_SECTION);
   SetIndexBuffer(1,Toppers);
   SetIndexEmptyValue(1,0.0);

  IndicatorShortName("zz show top & bottom");
  return(0);
}

int deinit()
{
  return(0);
}

int start()
{
  int counted_bars=IndicatorCounted();
  int limit=0;
  limit = Bars-counted_bars;
  
  for(int shift=limit-1;shift>=0;shift--)
  {
    int ExtDepth=12; int ExtDeviation=5; int ExtBackstep=3;
    int ZigzagBuffer=0; int HighMapBuffer=1; int LowMapBuffer=2;
    
    Bottoms[shift]=iCustom(
        Symbol(),0,"ZigZag",
        ExtDepth, ExtDeviation, ExtBackstep,
        LowMapBuffer, shift
    );
    
    Toppers[shift]=iCustom(
        Symbol(),0,"ZigZag",
        ExtDepth, ExtDeviation, ExtBackstep,
        HighMapBuffer, shift
    );
    
    if(Bottoms[shift]>0.1) Bottoms[shift]=Bottoms[shift];
    if(Toppers[shift]>0.1) Toppers[shift]=Toppers[shift];
  }
  
  return(0);
}
 
vx0532:


Hallo, ubzen, ich sehe gerade Ihren Code wie unten:

Ich weiß nicht, was diese beiden Codezeilen bedeuten: if(Bottoms[shift]>0.1) Bottoms[shift]=Bottoms[shift]; if(Toppers[shift]>0.1) Toppers[shift]=Toppers[shift];

Ich finde, dass sich fast nichts ändert, wenn ich die Codes dieser beiden Zeilen lösche, daher weiß ich nicht, warum Sie diese beiden Zeilen hinzufügen.


Zickzack mit Linie bei Tiefstwerten und Linie bei Höchstwerten
 


Ich schreibe die folgenden Codes wie unten in EA

aber wenn ich es in den historischen Daten teste, zeigt "print" alle 0, warum?

for(int shift=99;shift>=0;shift--)
  {
    int ExtDepth=12; int ExtDeviation=5; int ExtBackstep=3;
    int ZigzagBuffer=0; int HighMapBuffer=1; int LowMapBuffer=2;
    
    Bottoms[shift]=iCustom(
        Symbol(),0,"ZigZag",
        ExtDepth, ExtDeviation, ExtBackstep,
        LowMapBuffer, shift
    );
    
    Toppers[shift]=iCustom(
        Symbol(),0,"ZigZag",
        ExtDepth, ExtDeviation, ExtBackstep,
        HighMapBuffer, shift
    );
    if(Bottoms[shift]>0.1) Bottoms[shift]=Bottoms[shift];
    if(Toppers[shift]>0.1) Toppers[shift]=Toppers[shift];
 }
 
 shift=0;
 while(shift<100)
 {
 Print("Bottoms,Toppers:",Bottoms[shift]," , ",Toppers[shift]);
 shift++;
 }
 

Lesen Sie mein Posting 1 Seite zurück

deVries 2013.10.19 12:13 #

https://www.mql5.com/en/forum/144092/page2#854926


//+------------------------------------------------------------------+
//|                                              ZigZag practise.mq4 |
//|                                Copyright © 2012, Tjipke de Vries |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2012, Tjipke de Vries"
#property link      ""

//---- input parameters  ZigZag
extern int ExtDepth=12;
extern int ExtDeviation=5;
 
deVries:

danke deVries, ich habe diese Angelegenheit nach Überprüfung Ihrer Post wissen.

Ich bin zu dem Schluss gekommen, dass wir Double Array und Variable verwenden können, um den Rückgabewert von iCustom() in den Codes von Indicator zu erhalten; aber wir können nur Variable verwenden, um den Rückgabewert von iCustom() in den Codes von EA zu erhalten.

Sie erklären, dass:"das sind die falschen Puffer und Sie müssen den Wert von i finden, bei welchem Balken der obere oder untere Rand sein wird "

Mein Verständnis ist, dass in EA, wenn wir Array x[i] verwenden, um iCustom() zu empfangen, die Zuweisung in Ordnung ist, aber der Takt der Zuweisung ist unsicher.

iCustom() gibt also nicht nur einfach einen Wert zurück, sondern auch andere Dinge, ja?

aber ich verstehe immer noch nicht die Bedeutung des Codes: " if(Bottoms[shift]>0.1) Bottoms[shift]=Bottoms[shift]; if(Toppers[shift]>0.1) Toppers[shift]=Toppers[shift];"

 
vx0532:

danke deVries, ich habe diese Angelegenheit nach Überprüfung Ihrer Post wissen.

Ich bin zu dem Schluss gekommen, dass wir Double Array und Variable verwenden können, um den Rückgabewert von iCustom() in den Codes von Indicator zu erhalten; aber wir können nur Variable verwenden, um den Rückgabewert von iCustom() in den Codes von EA zu erhalten.

Sie erklären, dass:"das sind die falschen Puffer und Sie müssen den Wert von i finden, bei welchem Balken der obere oder untere Rand sein wird "

Mein Verständnis ist, dass in EA, wenn wir Array x[i] verwenden, um iCustom() zu empfangen, die Zuweisung in Ordnung ist, aber der Takt der Zuweisung ist unsicher.

iCustom() gibt also nicht nur einfach einen Wert zurück, sondern auch andere Dinge, ja?

aber ich verstehe immer noch nicht die Bedeutung des Codes: " if(Bottoms[shift]>0.1) Bottoms[shift]=Bottoms[shift]; if(Toppers[shift]>0.1) Toppers[shift]=Toppers[shift];"


Sie haben immer noch Probleme, Daten vom ZigZag-Indikator zu erhalten

Warum wollen Sie, dass ich erkläre, was nicht in meinem Code steht?

warum recherchieren Sie nicht den Code von

//+------------------------------------------------------------------+
//|                                              ZigZag practise.mq4 |
//|                                Copyright © 2012, Tjipke de Vries |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2012, Tjipke de Vries"
#property link      ""

//---- input parameters  ZigZag
extern int ExtDepth=12;
extern int ExtDeviation=5;

den gesamten Code finden Sie eine Seite zurück.... https://www.mql5.com/en/forum/144092/page2#854926

Wenn Sie die Funktionsweise dieses Codes verstehen, dann wird einfach dieselbe Methode in EA's verwendet.

 
  1. deVries: den gesamten Code finden Sie eine Seite zurück....
    Sagen Sie nicht "eine Seite zurück", sondern posten Sie den Link zu dem genauen Beitrag. Es ist das #-Zeichen rechts von deinem Namen (Rechtsklick, Link kopieren) eine Seite zurück
  2. vx0532: aber ich verstehe immer noch nicht die Bedeutung des Codes: " if(Bottoms[shift]>0.1) Bottoms[shift]=Bottoms[shift]; if(Toppers[shift]>0.1) Toppers[shift]=Toppers[shift];"
    Was denken Sie, was "if(x> 0.1) x=x;" bedeutet? Nichts! Der korrigierte Code sagt später:
        if(ZigZag[shift]>0.1 && Low[shift]==ZigZag[shift]) Bottoms[shift]=ZigZag[shift];
        if(ZigZag[shift]>0.1 && High[shift]==ZigZag[shift]) Toppers[shift]=ZigZag[shift];
    
 
WHRoeder:
  1. deVries: den gesamten Code finden Sie eine Seite zurück....
    Sagen Sie nicht "eine Seite zurück", sondern posten Sie den Link zu dem genauen Beitrag. Es ist das #-Zeichen rechts von deinem Namen (Rechtsklick, Link kopieren) eine Seite zurück
  2. vx0532: aber ich verstehe immer noch nicht die Bedeutung des Codes: " if(Bottoms[shift]>0.1) Bottoms[shift]=Bottoms[shift]; if(Toppers[shift]>0.1) Toppers[shift]=Toppers[shift];"
    Was denken Sie, was "if(x> 0.1) x=x;" bedeutet? Nichts! Der korrigierte Code sagt später:

done https://www.mql5.com/en/forum/144092/page2#854926
 

Liebe Alle,

vielen Dank für diese wunderbare Diskussion über den ZigZag und die Codes. Ich möchte der Diskussion einen neuen Aspekt hinzufügen
Für mich wäre es von großem Wert, wenn ich die vom ZigZag
Indikator (mit einem bestimmten Satz von Parametern) berechneten Hoch-/Tiefwerte zusammen mit den Zeiten ihres Auftretens in eine Text- oder Csv-Datei extrahieren könnte,
etwa so:

- Tag, Zeit, Hoch-Wert, Hoch(Boolesch)
- Tag, Zeit, Niedrig-Wert, Niedrig(Boolesch)

Ich möchte diese Werte für eine weitere Analyse in MS Excel extrahieren, um die Wahrscheinlichkeiten des
Auftretens von Zeitperioden und Amplituden in einem Diagramm zu ermitteln. Am Ende sollen aus diesen Daten
Histogramme erstellt werden, die die "Signatur" des Wertes im Diagramm durch die Identifizierung von intrinsischen Zeiträumen und
und intrinsischen Swing-Amplituden anzeigen.

Vielleicht versuche ich hier, das Rad neu zu erfinden, und es gibt bereits einen Code, der genau das tut, was ich
möchte. Wenn nicht, würde es sich lohnen, einen solchen Code zu entwickeln. Ich führe diese Art von Analyse täglich manuell
mit Tonnen von Charts durch, und ich kann eindeutig feststellen, dass die Kenntnis der inneren Signatur eines Wertes
die Chance, eine Richtungsänderung vorherzusagen, erheblich verbessert. Meiner Meinung nach könnte dieser Prozess
leicht automatisiert werden ... aber ich bräuchte etwas Hilfe von Leuten mit Programmiererfahrung. Das
Ergebnis wäre entweder ein praktischer Indikator oder sogar ein automatischer MT4 EA (Expert Adviser)
, der an wichtigen Wendepunkten handelt.

Es wäre schön, hier jemanden zu finden, der an einer Zusammenarbeit interessiert ist. Aber auch ein paar Hinweise
, wie man die Daten aus dem ZigZag-Indikator extrahiert, wären hilfreich. Herzlichen Dank!

- spjuliman