DIE IDEENBÖRSE - Seite 9

 
FION:
Experten können gleichzeitig arbeiten - jeder mit seinem eigenen Assistenten, und die Erkennung der Marktbedingungen und das Zurücksetzen sollte in jedem Experten sein. Wenn diese Bedingung nicht erfüllt ist, wenn sich die Marktsituation ändert, sind Verluste unvermeidlich, weil die Ziele und Stops in einem Flat und einem Trend unterschiedlich sein sollten. Außerdem sollten wir Zwischenzustände in Betracht ziehen - die niedrige Wohnung oder den "Ausrutscher" mit geringer Aktivität. Grundsätzlich sollte die Gruppe der profitablen Expert Advisors die besten Ergebnisse aufweisen, da die Positionen der verlustbringenden Expert Advisors gesperrt werden.

Fast jeder hat seine eigene Erkenntnis. Aber viele EAs haben keine Fehlerkorrektur. Ich jedenfalls nicht. Ich versuche nur, sie zu vermeiden. Wenn wir etwas Standardmäßiges machen, sollten wir das berücksichtigen. Ich würde ein Symbol() zu Magier hinzufügen, obwohl es vielleicht unnötig ist. Theoretisch kann eine Bestellung mit einem Ticket nicht wiederholt werden, obwohl das möglich ist.
 

Ja, natürlich. Das ist genau das, was ich im Code gemacht habe. In den externen Parametern stellen wir auch Magic _n ein, und jede Version mit einem eigenen Magier arbeitet nach einem eigenen Algorithmus.

 

Zur Trenderkennung. Der ProtoType-IV Expert Advisor liefert ein Beispiel für einen Multiwährungs-Expert Advisor, der einen Trend anhand von vier letzten Extrema identifiziert. Ich habe es gewissenhaft durchforstet und dieses Stückchen Code "halbherzig" zugewiesen, und nun kann es in jeden Expert Advisor eingefügt werden. Falls erforderlich. Wenn Sie sie in externen Parametern einstellen

extern int     PeriodWPR=8;
extern double  CriteriaWPR=25;
extern int     ATRPeriod=40;// период ATR для индикатора 
extern double  kATR=0.5;
//-------------------------------------
int  LastUpArray[13,7];
int  PreLastUpArray[13,7];
int  LastDownArray[13,7];
int  PreLastDownArray[13,7];

Hier ist der "Qualifier" selbst:

/-------------------------------------------------------------------+
//| определение тренда по четырем последним экстремумам              |
//+------------------------------------------------------------------+
int TrendByWPR()
  {
//----
   int res=0;
   int curPos,LastUpPos,PreLastUpPos,LastDownPos,PreLastDownPos,LastPeak,newPos;
   bool FindUp=true,FindDown=true,SearchCompleted=false;
   double CurWPR=iWPR(NULL,0,PeriodWPR,0);
//----
   //=======  определим - где мы находимся в данный момент
   if (CurWPR<=CriteriaWPR-100)
      {
      FindDown=false;
      LastPeak=0;
      }   
   if (CurWPR>=-CriteriaWPR)
      {
      FindUp=false;
      LastPeak=0;
      }   
   // ================   начианем поиск пичков-донышков
   while(!SearchCompleted && curPos<Bars)
      {
      if (iWPR(NULL,0,PeriodWPR,curPos)>=-CriteriaWPR && LastPeak<0)
         {
         FindUp=false;
         LastPeak=curPos;
         curPos++;
         continue;
         }
         
      if (iWPR(NULL,0,PeriodWPR,curPos)<=CriteriaWPR-100 && LastPeak<0)
         {
         FindDown=false;
         LastPeak=curPos;
         curPos++;
         continue;
         }
         
      if (iWPR(NULL,0,PeriodWPR,curPos)>=-CriteriaWPR && FindUp)
         {//искали верхушку и нашли
         newPos=curPos; 
         while(iWPR(NULL,0,PeriodWPR,curPos)>CriteriaWPR-100 && curPos<Bars)
            {// теперь нужно найти донышко, чтобы между ними найти точный пичок
            curPos++;
            }
         if (LastUpPos==0) 
            {
            LastUpPos=Highest(NULL,0,MODE_HIGH,curPos-LastPeak,LastPeak);   
            LastPeak=LastUpPos;
            }
         else 
            {
            PreLastUpPos=Highest(NULL,0,MODE_HIGH,curPos-LastPeak,LastPeak);
            LastPeak=PreLastUpPos;
            }
         curPos=newPos;
         FindUp=false;
         FindDown=true;
         curPos++;
         continue;
         }//==============
 
      if (iWPR(NULL,0,PeriodWPR,curPos)<=CriteriaWPR-100 && FindDown)
         {
         newPos=curPos; 
         while(iWPR(NULL,0,PeriodWPR,curPos)<-CriteriaWPR && curPos<Bars)
            {
            curPos++;
            }
         if (LastDownPos==0) 
            {
            LastDownPos=Lowest(NULL,0,MODE_LOW,curPos-LastPeak,LastPeak);
            LastPeak=LastDownPos;
            }   
         else 
            {
            PreLastDownPos=Lowest(NULL,0,MODE_LOW,curPos-LastPeak,LastPeak);
            LastPeak=PreLastDownPos;
            }
         curPos=newPos;
         FindDown=false;
         FindUp=true;
         curPos++;
         continue;
         }
      if (PreLastDownPos!=0 && PreLastUpPos!=0) SearchCompleted=true;
      curPos++;
      }
  /* if (Symbol()==StringSymbol && Period()==PeiodMinute)
      {
      Comment("LastUpPos=",LastUpPos,"  PreLastUpPos",PreLastUpPos,"  
 LastDownPos=",LastDownPos,"  PreLastDownPos=",PreLastDownPos,
" Время ",TimeToStr(CurTime()));
      SetUpArrows(LastUpPos,PreLastUpPos,LastDownPos,PreLastDownPos);*/
   LastUpArray[NULL,0] =LastUpPos;   
   PreLastUpArray[NULL,0]=PreLastUpPos;   
   LastDownArray[NULL,0]=LastDownPos;   
   PreLastDownArray[NULL,0]=PreLastDownPos;   
  if (High[LastUpPos]-High[PreLastUpPos]>=kATR*iATR(NULL,0,ATRPeriod,LastUpPos)
&&Low[LastDownPos]>Low[PreLastDownPos]) res=1;     
  if (Low[PreLastDownPos]-Low[LastDownPos]>=kATR*iATR(NULL,0,ATRPeriod,LastDownPos)
&&High[PreLastUpPos]>High[LastUpPos]) res=-1;    
   
   return(res);
  }

Der Graph in der Ecke zeigt die Funktion=0,,oder =1,,oder=-1

 
Ich denke, es ist bequemer, den Trend mit Hilfe der linearen Regression zu definieren, das Skript der linearen Regression aus MT-4 Standard-Set ist sehr gut, ich würde gerne einen Indikator auf der Grundlage machen, vielleicht weiß jemand, wo man den Quellcode zu bekommen?Ich benötige einen Kanal mit einer festgelegten Länge von 1 bis N Balken mit Neuberechnung, wenn ein neuer Balken erscheint, und die Möglichkeit, seine Breite in Pips und seine Steigung in Pips zur Länge auszugeben.Und der gleiche Kanal der Standardabweichung mit einer gegebenen Abweichung wäre schön zu machen. Wir könnten von vorne anfangen zu graben, aber wenn jemand eine Quelle von MT hat, wäre es viel einfacher.
 

Ich habe allerdings nicht nur den Code für die Trenderkennung veröffentlicht. Eine andere Idee kam auf... (ich werde sie später erklären)

Vielleicht hilft dieser Indikator für den Anfang:

Im Diagramm iPeriod=20, MASoot=20

Ich bin nicht in seine Arbeit eingestiegen. Aber im visuellen Modus ist es einfach zu sehen, wie es funktioniert...

Dateien:
 
Danke Leonid, aber es funktioniert nicht richtig für Umkehrungen, ich habe es vor langer Zeit versucht. Hier ist ein guter Indikator, aber es funktioniert durch How-low, die Idee ist die gleiche, aber basierend auf linearer Regression.
Dateien:
 
FION:
Meiner Meinung nach ist es bequemer, den Trend mit Hilfe der linearen Regression zu definieren, das Skript der linearen Regression aus dem MT-4-Standard-Set ist sehr gut, ich würde gerne einen Indikator darauf basierend machen, vielleicht weiß jemand, wo man den Quellcode bekommt? Alle bekannten Implementierungen funktionieren nicht gut mit der Preisentwicklung. Ich benötige einen Kanal mit einer festgelegten Länge von 1 bis N Balken mit Neuberechnung, wenn ein neuer Balken erscheint, und die Möglichkeit, seine Breite in Pips und seine Steigung in Pips zur Länge auszugeben. Es wäre schön, denselben Kanal der Standardabweichung mit der angegebenen Abweichung zu haben. Wir können bei Null anfangen, aber wenn jemand eine Quelle von MT hat, wäre es viel einfacher.


Ich habe es schon einmal irgendwo gepostet. Ich kann die neue Version veröffentlichen. Ein Fehler wurde behoben.

Und hier ist der Indikator.

Die Anzahl der Balken wird auf dem Bildschirm angezeigt. 3 Sigmas werden angezeigt. Liegt der Preis innerhalb eines SCO, wird keine Neuberechnung vorgenommen, da alles innerhalb der zulässigen Grenzen liegt. Wenn der Preis diesen Wert durchbricht, wird er neu berechnet.

Dateien:
 

Vinin , Ihr Kanal ist sehr anständig und stellt sich richtig ein. Ich danke Ihnen. Ich werde eine Idee über den Filter für die Wohnung teilen. Wir alle erinnern uns an Rev. Reshetov und seine Perceptrons. Im Prinzip ist ein Perceptron ein linearer Filter. Ich möchte versuchen, das Fllet mit einem Perceptron herauszufiltern. Ich möchte Breite und Steigung von 2 linearen Regressionskanälen mit unterschiedlicher Länge, Bolinger-Breite und Preisänderungsrate eingeben. Ich überlege, was ich als Optimierungskriterium verwenden soll. Vielleicht ein Rebound von den Bollinger Boundaries nach innen - mit dem Ziel von 75% der Breite.

 
FION:

Vinin , Ihr Kanal ist sehr anständig und stellt sich richtig ein. Danke, ich werde eine Idee über den Filter für die Wohnung teilen. Wir alle erinnern uns an Rev. Reshetov und seine Perceptrons. Im Prinzip ist ein Perceptron ein linearer Filter. Ich möchte versuchen, das Fliegen mit Hilfe eines Perzeptrons herauszufiltern. Ich möchte Breite und Steigung von 2 linearen Regressionskanälen unterschiedlicher Länge, Bolinger-Breite und Preisänderungsgeschwindigkeit eingeben. Ich überlege, was ich als Optimierungskriterium verwenden soll. Vielleicht ein Rebound von den Bollinger Boundaries nach innen - mit dem Ziel von 75% der Breite.


Reshetovs Perzeptron ist nicht ausreichend. Wir sollten eine Kohonenschicht von mindestens 4-5 Nicht-Roynes bilden. Dabei gibt es nur ein Problem: Alle Werte müssen die gleiche Reihenfolge haben.
 
Ich möchte ein neues Thema erstellen: Neuronale Analyse von Candlesticks. Ich werde alle meine Arbeiten veröffentlichen, ich schaffe das nicht allein. Ich werde es ganz allein schaffen.