DIE IDEENBÖRSE - Seite 35

 
OnGoing:
Was auch immer es ist, es gibt nicht genügend Abschlüsse, um irgendwelche Schlussfolgerungen zu ziehen.
Sie können die Anzahl der Trades um ein Vielfaches erhöhen - die Equity-Treppe wird immer häufiger, aber die FS wird abnehmen.
 
alex12:
Sie können die Trades viele Male erhöhen - die Equity-Treppe wird klein und häufig sein, aber der FS wird abnehmen.
Sei es auch so, das Ergebnis wird trotzdem zuverlässiger sein.
 

Ich bin gestern zufällig auf ein interessantes Ergebnis gestoßen.

Es geht darum, schnell festzustellen, wie sich eine Währung im Verhältnis zu einer anderen verhält.

Wir laden diesen Expert Advisor herunter, er befindet sich auch in der Codebase dieses Forums: ReverseSystemBEST

Es testet ein Instrument anhand historischer Daten aus einer Datei - wir testen USD/Franken ab dem Jahr 2000 und am Ende des

desTests öffnen Sie das Diagramm und sehen Sie das folgende Bild:

Außerdem speichern wir sie als Vorlage. Öffnen Sie den täglichen Eurobucks-Chart und öffnen Sie die gespeicherte Vorlage

Auf dieser Karte. Klicken Sie dann 2 Mal mit der Maus auf die Symbole und wählen Sie mit der rechten Taste "Alle Symbole löschen".

Als Ergebnis sehen Sie ein Bild wie unten.

Das heißt, Sie können sehen, dass der Dollar/Franken und die Euro-Bucks absolut spiegelbildliche Währungsinstrumente sind.





 
alex12:

Ich bin gestern zufällig auf ein interessantes Ergebnis gestoßen.

Es geht darum, schnell festzustellen, wie sich eine Währung im Verhältnis zu einer anderen verhält.

Wir laden diesen Expert Advisor herunter, er befindet sich auch in der Codebase dieses Forums: ReverseSystemBEST

Es testet ein Instrument anhand historischer Daten aus einer Datei - wir testen USD/Franken ab dem Jahr 2000 und am Ende des

desTests öffnen Sie die Tabelle und sehen Sie das folgende Bild:

Außerdem speichern wir sie als Vorlage. Öffnen Sie den täglichen Eurobucks-Chart und öffnen Sie die gespeicherte Vorlage

Auf dieser Karte. Klicken Sie dann 2 Mal mit der Maus auf die Symbole und wählen Sie mit der rechten Taste "Alle Symbole löschen".

Als Ergebnis sehen Sie ein Bild wie unten.

Das heißt, Sie können sehen, dass der Dollar/Franken und die Euro-Bucks absolut spiegelbildliche Währungsinstrumente sind.






Oh, wie viele wunderbare Entdeckungen für uns ......
 
Es geht darum, einen Indikator zu erstellen.

Ursprünglich hatte ich diese Idee mit Ticks, aber es stellte sich heraus, dass es im Tester
keine Tick-Historie gibt, also habe ich sie auf Balken übertragen.
Die Idee ist eine Kombination von Balken. Die Einstellungen können sein:

Up - Buy:

Bullish = 0, Value
Bears = 0, Value
Colour
Line Thickness

Down - Sell:

Bears = 0, Value
Bulls = 0, Value
Colour
Line Thickness

Zum Beispiel ein Balken 1 up und 2 down, 1 up und 3 down, dann 1/4, 1/5, !/6, 1/7 usw. für Sell.
Für Bai - 1 Takt abwärts und 2 Takte aufwärts, 1 abwärts und 3 aufwärts, dann 1/4, 1/5, usw.

Nehmen wir zum Beispiel eine Kombination aus 3 Balken nach oben und 7 Balken nach unten (kurz: 3/7) für den Verkauf. Wir nehmen den Wert
des höchsten Preises des 3. Balkens und des niedrigsten Preises des 7. Balkens = berechnen den Durchschnittspreis und zeichnen eine Linie
auf den Durchschnittspreis dieser Kombination von Balken. Ich möchte auch, dass diese Kombination mit einem Kreis
unter Verwendung des gleichen Indikators umrissen wird.
Als nächstes können Sie einen EA mit diesem Indikator schreiben und das Ergebnis überprüfen.

Wenn jemand einen Indikator und/oder einen Ratgeber schreibt, kann er ihn gerne hier veröffentlichen.

--------------------------------------------------------------------------------------------------------------+

Übrigens - es geht auch mit Punkten - einfach direkt online handeln.
Nicht nach Zeit, wie beim WOC EA, sondern genau nach Kombinationen von Punkten und es wird sich herausstellen
, dass der Expert Advisor nicht nach der Geschichte, sondern nach der aktuellen Situation handelt. Aber es ist so,
ist wahrscheinlich zu oberflächlich und unplausibel - obwohl ich mir selbst nicht sicher bin
.
 

leonid553:

Es gibt einen Hüllkurven-Indikator, und die klassischen Taktiken, mit ihm zu arbeiten, sind bekannt. Aber aufgrund seiner Struktur ist er zu "empfindlich", oder mit einer großen Periode - er verzögert viele Signale. Wenn wir diesen Indikator jedoch glätten, wird sich die Situation sofort ändern! Wir wählen die Abweichung der Grenzen so, dass die Grenzen nur die Spitzen der Kerzen abdecken und wir durch diese Kreuzungen streng dem Trend folgend einsteigen. - ihn (den Trend) programmatisch durch den Neigungswinkel (z. B.) dieser Grenzen festlegen.

Eine Version funktioniert beim Kauf. Die andere Version funktioniert für sell. Gleichzeitig verpassen wir überraschenderweise Verlustgeschäfte bei Trendumkehrungen! - Keine Ironie! Und außerdem während einer Wohnung - keine Deals! (denn der Trend wird durch den Neigungswinkel bestimmt!)

Hier ist ein geglätteter Indikator-Chart - Einstiegspunkte sind mit Pfeilen gekennzeichnet.

Ein weiterer Trick. Sie können es als Filter oder als separate Version verwenden. Stochastisch. Es sollte nicht nach den klassischen Regeln verwendet werden, sondern ein wenig unkonventionell! Nehmen Sie einen langen Zeitraum und steigen Sie nicht von außen nach innen in überkaufte/überverkaufte Zonen ein, sondern umgekehrt! - Ich habe die Einträge mit Pfeilen im Stochastikfenster dargestellt.

Ich habe bereits primitive Expert Advisors mit den beiden beschriebenen Methoden erstellt. Die Ergebnisse sind bisher zufriedenstellend...

Auf Wunsch des Moderators Granit77 wurde der ursprüngliche Beitrag gelöscht und die Diskussion über Expert Advisor auf gefilterter Stochastik hierher verschoben https://www.mql5.com/ru/forum/112887/page15#518639

 
alex12:
Es geht darum, einen Indikator zu erstellen.

Diese Idee wurde ursprünglich von mir mit Zecken erfunden, aber es hat sich herausgestellt, dass es im Tester keine Zeckenhistorie gibt
Also habe ich es auf Barren umgestellt.
Die Essenz ist eine Kombination von Balken, die wie folgt eingestellt werden können:

Hoch - Kaufen:

Bullish = 0, Wert.
Bären = 0, Bedeutung
Farbe
Strichdicke

Nach unten - Verkaufen:

Bären = 0, Wert
Bullish = 0, Wert
Farbe
Strichdicke

Z.B. 1 Bar aufwärts und 2 Bars abwärts, 1 Bar aufwärts und 3 Bars abwärts, dann 1/4, 1/5, !/6, 1/7 usw. für Sell.
Für Bai - 1 Takt abwärts und 2 Takte aufwärts, 1 abwärts und 3 aufwärts, dann 1/4, 1/5, usw.

Nehmen wir zum Beispiel eine Kombination aus 3 Balken nach oben und 7 Balken nach unten (kurz: 3/7) für den Verkauf. Wir nehmen den Wert
der höchste Preis des 3. Balkens und der niedrigste Preis des 7. Balkens = Berechnung des Durchschnittspreises und Ziehen einer Linie
Ich möchte auch, dass diese Kombination von Balken als Kreis gezeichnet wird
unter Verwendung desselben Indikators.
Dann können Sie einen EA mit diesem Indikator schreiben und das Ergebnis überprüfen.

Wenn jemand einen Indikator und/oder einen Ratgeber schreibt, kann er ihn gerne hier veröffentlichen.

--------------------------------------------------------------------------------------------------------------+

Übrigens: Es geht auch mit Punkten - nur der Online-Handel ist nötig.
Nicht nach Zeit, wie im WOC-Advisor, sondern genau nach Kombinationen von Punkten.
dass der Expert Advisor nicht auf Basis der Historie handelt, sondern auf Basis der aktuellen Situation. Aber es ist so,
obwohl ich es nicht genau weiß.
Ich selbst weiß es allerdings nicht genau.

Ich habe einen benutzerdefinierten Indikator wie oben beschrieben erstellt. Ziemlich interessant - weil = genau ( identifiziert eindeutig gegebene Fraktalmuster ).


Hier ist der Code selbst:

//+------------------------------------------------------------------+
//|                             Copyright © 2010, Trishkin Artyom A. |
//|                                           support@goldsuccess.ru |
//|                                           Skype: Artmedia70      |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2010, Trishkin Artyom A."
#property link      "support@goldsuccess.ru"

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Gold
#property indicator_color2 LightBlue
//---- input parameters
extern int        BarsBefore=2;        // Баров до...
extern int        BarsAfter=2;         // Баров после
extern int        Width=2;             // Размер значка
extern int        BarsToProcess=100;   // Количество баров для поиска
//---- buffers
double FractUpBuffer1[];
double FractDnBuffer2[];
string sy, Prefix, NameIND;
int    tf;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
   SetIndexStyle(0,DRAW_ARROW,EMPTY,0);
   SetIndexBuffer(0,FractUpBuffer1);
   SetIndexArrow(0,119);
   SetIndexLabel(0,"Fractal Up");
   SetIndexEmptyValue(0,0.0);
   
   SetIndexStyle(1,DRAW_ARROW,EMPTY,0);
   SetIndexBuffer(1,FractDnBuffer2);
   SetIndexArrow(1,119);
   SetIndexLabel(1,"Fractal Dn");
   SetIndexEmptyValue(1,0.0);
//----
   NameIND="Pattern_v1_01";
   IndicatorShortName(NameIND+"_"+GetNameTF(Period()));
   Prefix=NameIND+"_"+GetNameTF(Period());    // Префикс для имён объектов
   sy=Symbol();
   tf=Period();
   return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
{
// -------- Блок удаления всех объектов, построенных на графике --------
   string Name_Del[1]; 
   int Quant_Del=0;                    
   int Quant_Objects=ObjectsTotal();   
   int LenPref=StringLen(Prefix);
   ArrayResize(Name_Del,Quant_Objects);
   for(int k=0; k<Quant_Objects; k++) {
      string Obj_Name=ObjectName(k);   
      string Head=StringSubstr(Obj_Name,0,LenPref);
      if (Head==Prefix) {                              
         Quant_Del+=1;        
         Name_Del[Quant_Del-1]=Obj_Name;
         }
     }
   for(int i=0; i<Quant_Del; i++)    
      ObjectDelete(Name_Del[i]); 
// ----- Конец блока удаления всех объектов, построенных на графике -----
   return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start() {
   int   counted_bars=IndicatorCounted();
   int   i, k, j, limit;
//----
   if(counted_bars>0)      counted_bars--;
   limit=Bars-counted_bars;
   if(limit>BarsToProcess) limit=BarsToProcess;
   
//   if (limit>0) 
      FindUpFractals(BarsBefore, BarsAfter);
      FindDnFractals(BarsBefore, BarsAfter);
   
//----
   return(0);
}
//==============================================================================
// --------------------------------- Функции ----------------------------------+
//==============================================================================
int FindDnFractals(int nl, int nr) {
   int      i, k, nb;
   double   fractal;
   datetime tm;
   string   nm;
   bool     fl, fr;
   int delta=SetDistance(Period());
   for (i=BarsToProcess; i>0; i--) {
      fl=false;
      FractDnBuffer2[i]=0;
      if (Open[i]<Close[i]) {                   
         for (k=1; k<=nl; k++) {
            if (Open[i+k]>Close[i+k]) fl=true;
            else { fl=false; break; }
            }
         if (!fl || Open[i+nl+1]>Close[i+nl+1]) continue;
         fr=false;
         for (k=0; k<nr; k++) {
            if (Open[i-k]<Close[i-k]) fr=true;
            else { fr=false; break; }
            }
         if (!fr || Open[i-nr]<Close[i-nr] || iBarShift(sy,tf,Time[i-nr])==0) continue;
         if (Low[i]<Low[i+1]) { fractal=Low[i]; nb=i; tm=Time[i];}
         else { fractal=Low[i+1]; nb=i+1; tm=Time[i+1]; }
         FractDnBuffer2[nb]=fractal;
         nm=Prefix+"_Down_Fractal_"+nl+"/"+nr+"_"+TimeToStr(tm);
         fractal=MathMin(Low[i], Low[i+1]);
         SetArrow(218, LightBlue, nm, tm, fractal-delta*Point, Width);
         WindowRedraw();
         }
      }
   return(0);
}   
//+----------------------------------------------------------------------------+
int FindUpFractals(int nl, int nr) {
   int      i, k, nb;
   double   fractal;
   datetime tm;
   string   nm;
   bool     fl, fr;
   int delta=SetDistance(Period());
   for (i=BarsToProcess; i>0; i--) {
      fl=false;
      FractUpBuffer1[i]=0;
      if (Open[i]>Close[i]) {                   
         for (k=1; k<=nl; k++) {
            if (Open[i+k]<Close[i+k]) fl=true;
            else { fl=false; break; }
            }
         if (!fl || Open[i+nl+1]<Close[i+nl+1]) continue;
         fr=false;
         for (k=0; k<nr; k++) {
            if (Open[i-k]>Close[i-k]) fr=true;
            else { fr=false; break; }
            }
         if (!fr || Open[i-nr]>Close[i-nr] || iBarShift(sy,tf,Time[i-nr])==0) continue;
         if (High[i]>High[i+1]) { fractal=High[i]; nb=i; tm=Time[i];}
         else { fractal=High[i+1]; nb=i+1; tm=Time[i+1]; }
         FractUpBuffer1[nb]=fractal;
         nm=Prefix+"_Up_Fractal_"+nl+"/"+nr+"_"+TimeToStr(tm);
         fractal=MathMax(High[i], High[i+1]);
         SetArrow(217, PaleGoldenrod, nm, tm, fractal+4*delta*Point, Width);
         WindowRedraw();
         }
      }
   return(0);
}   
//+----------------------------------------------------------------------------+
string GetNameTF(int TimeFrame=0) {
   switch (TimeFrame) {
      case PERIOD_M1:  return("M1");
      case PERIOD_M5:  return("M5");
      case PERIOD_M15: return("M15");
      case PERIOD_M30: return("M30");
      case PERIOD_H1:  return("H1");
      case PERIOD_H4:  return("H4");
      case PERIOD_D1:  return("Daily");
      case PERIOD_W1:  return("Weekly");
      case PERIOD_MN1: return("Monthly");
      default:         return("UnknownPeriod");
      }
}
//+----------------------------------------------------------------------------+
int SetDistance(int TimeFrame) {
   switch (TimeFrame) {
      case PERIOD_M1:  return(1);
      case PERIOD_M5:  return(1);
      case PERIOD_M15: return(2);
      case PERIOD_M30: return(3);
      case PERIOD_H1:  return(4);
      case PERIOD_H4:  return(4);
      case PERIOD_D1:  return(4);
      case PERIOD_W1:  return(4);
      case PERIOD_MN1: return(4);
      default:         return(0);
      }
}
//+----------------------------------------------------------------------------+
void SetArrow(int cd, color cl, string nm, datetime t1=0, double p1=0, int sz=0) {
   if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_ARROW, 0, 0, 0);
   ObjectSet(nm, OBJPROP_TIME1    , t1);
   ObjectSet(nm, OBJPROP_PRICE1   , p1);
   ObjectSet(nm, OBJPROP_ARROWCODE, cd);
   ObjectSet(nm, OBJPROP_COLOR    , cl);
   ObjectSet(nm, OBJPROP_WIDTH    , sz);
}
//+----------------------------------------------------------------------------+
Dateien:
 
alex12:

Hier ist ein speziell angefertigter Truthahn wie oben beschrieben. Ziemlich interessant - weil = genau (erkennt Fraktalmuster richtig).


Hier ist der Code selbst:

Vielen Dank für den Code. Aus irgendeinem Grund wird es nur auf dem Stundensatz angezeigt, nicht auf den anderen Hälften.
 

То есть видно что доллар/франк и евробакс – абсолютно зеркальные валютные инструменты.

Vielleicht sollten wir mit dem Wort "absolut" etwas vorsichtiger sein.

Fürdie im Tank Kommentar zum Bild: Die Mittelwertbildung wurde für X= 10, 20, 100 und 250 Candlesticks vorgenommen. Der Zeitrahmen auf der linken Seite ist M30, auf der rechten Seite - D1. Alles, was gegen Null geht, bedeutet, dass in den letzten X Kerzen [im Durchschnitt] keine Spiegelung stattgefunden hat.

In der Tat bewegen sich die Instrumente ähnlich, manchmal sogar in dieselbe Richtung, was durch periodische Korrelationen bestätigt wird. Aber er ist nicht einmal kointegriert, was durch den nicht-stationären EURCHF-Chart bewiesen wird (obwohl ich das nicht eindeutig bestätigen kann - ich habe es nicht getestet, ich denke, es ist sinnlos).

 
alex12:

Hier ist ein speziell angefertigter Truthahn wie oben beschrieben. Ziemlich interessant - weil = genau (erkennt Fraktalmuster richtig).

Hier ist der Code selbst:


Ich danke Ihnen! Interessante Idee!

Sie wird auf allen TFs angezeigt. Aber etwas stimmt nicht mit dem gelben Fraktal. Sie wird auf allen TFs in unterschiedlichen Abständen gezeichnet und ist nicht mit der blauen Farbe identisch.

Bitte prüfen Sie es!

SetArrow(217, PaleGoldenrod, nm, tm, fractal+4*delta*Point, Width);//?????