Algorithmische ''Zentrifuge'' - Seite 13

 
Aleksei Stepanenko:

OK, ...

- vielleicht etwas anderes...

Wir müssen die GA nutzen, um auf irgendeine Weise IT (ideale Punkte) zu finden. Ich denke darüber nach.
 
Igor Makanu:

Ideale Einstiegspunkte in die Geschichte - ZigZag, Sie haben abgelehnt

Ich möchte ZigZag nicht verwenden, weil es die Idee entweiht. Wenn ZZ ein perfekter Indikator für perfekte Punkte ist, dann ist er der IDEALSTE Indikator von allen, weil er die perfekten Punkte genauer trifft als andere. Es stellt sich heraus - ZigZag sollte in jedem Trade Signal Build in JEDER Strategie enthalten sein. Und das ist Unsinn.

Ich bin der Meinung, dass die Bereiche des Handels in der Historie nach den Kriterien Zeit/Gewinn/Risiko und Verwendung von GA bestimmt werden sollten.

 
Реter Konow:

Ich möchte ZigZag nicht verwenden, weil es die Idee entweiht. Wenn ZZ ein perfekter Indikator für perfekte Punkte ist, dann ist er der IDEALSTE Indikator von allen, weil er die perfekten Punkte genauer trifft als jeder andere. Es stellt sich heraus - ZigZag sollte in jedem Trade Signal Build in JEDER Strategie enthalten sein. Und das ist Unsinn.

Ich bin der Meinung, dass die Bereiche des Handels in der Vergangenheit nach den Kriterien Zeit/Gewinn/Risiko und Verwendung von GA bestimmt werden sollten.

Ich habe nichts gegen

Ich wüsste nicht, was es zu diskutieren gäbe, ich bin jetzt weg.

 
Реter Konow:
Wir müssen die GA irgendwie in die Suche nach IT (idealen Punkten) einbeziehen. Ich denke darüber nach.

Ich verstehe das nicht. Perfekte Punkte sind in der Geschichte bereits bekannt. Sie sind Extrema, und man kann sie mit den Augen sehen. Es sind keine komplexen Algorithmen erforderlich, um Extrema zu finden. Es müssen lediglich die Bedingungen für ihre Identifizierung festgelegt werden (z. B. Überschreitung einer bestimmten Anzahl von Punkten zwischen zwei gegenüberliegenden, benachbarten Extrema). Dann können wir ein Array dieser Extrema (Preis, Datum) erstellen und den Wert eines beliebigen Indikators am Punkt jedes Extremums (oder an dessen Annäherung) unter Verwendung derselben Historie überprüfen. Oder?

Hier ist ein "Make-it-or-break-it"-Code für die Suche und Speicherung von Extrema der Geschichte (ohne Leistungsgarantie):

input double Distance=100;

//каждый элемент массива будет содержать три поля: дата, цена и положение экстремума (верх, низ) 
struct sextr{datetime time; double price; int position;} Extremes[];

void OnStart()
   {
   int Total=iBars(Symbol(),0);
   for(int i=Total-1; i>=0; i--)
      {
      WriteExtremum(Extremes,Distance,Symbol(),0,i);
      }
   }   

//здесь записываем экстремумы в массив
void WriteExtremum(sextr &eExtremes[], double eDistance, string eSymbol, int eTimeFrame, int eShift)
   {
   int eFinish=ArraySize(eExtremes)-1;
   double eHigh=iHigh(eSymbol,eTimeFrame,eShift);
   double eLow=iLow(eSymbol,eTimeFrame,eShift);
   datetime eTime=iTime(eSymbol,eTimeFrame,eShift);
   //если массив пустой
   if(eFinish<0)
      {
      ArrayResize(eExtremes,++eFinish+1);
      eExtremes[eFinish].time=eTime;
      //пока мы не знаем какой из экстремумов будет в первом элементе, поэтому берём цену по середине
      //можно сделать более грамотнее, но лень. Поэтому первый экстремум у нас будет бракованный 
      //и мы его потом затрём 
      eExtremes[eFinish].price=(eHigh+eLow)/2;
      eExtremes[eFinish].position=0;
      }
   //если в массиве есть элементы
   else
      {
      //текущий элемент - максимум
      if(eExtremes[eFinish].position==1)
         {
         //произошло обновление текущего экстремума
         if(eHigh-eExtremes[eFinish].price>0)
            {
            eExtremes[eFinish].time=eTime;
            eExtremes[eFinish].price=eHigh;
            }         
         //произошло превышение расстояния между противоположными экстремумами
         if(eExtremes[eFinish].price-eLow>eDistance)
            {
            ArrayResize(eExtremes,++eFinish+1);
            eExtremes[eFinish].time=eTime;
            eExtremes[eFinish].price=eLow;
            eExtremes[eFinish].position=-1;
            }
         }
      //текущий элемент - минимум
      if(eExtremes[eFinish].position==-1)
         {
         //произошло обновление текущего экстремума
         if(eExtremes[eFinish].price-eLow>0)
            {
            eExtremes[eFinish].time=eTime;
            eExtremes[eFinish].price=eLow;
            }         
         //произошло превышение расстояния между противоположными экстремумами
         if(eHigh-eExtremes[eFinish].price>eDistance)
            {
            ArrayResize(eExtremes,++eFinish+1);
            eExtremes[eFinish].time=eTime;
            eExtremes[eFinish].price=eHigh;
            eExtremes[eFinish].position=1;
            }
         }
      //эта ситуация, когда первый элемент не закрылся, и не понятно максимум это будет или минимум
      //если произошло превышение в любую сторону, тогда затираем значения первого элемента
      if(extremes[eFinish].position==0)
         {
         //произошло превышение расстояния между противоположными экстремумами
         if(eHigh-eExtremes[eFinish].price>eDistance)
            {
            eExtremes[eFinish].time=eTime;
            eExtremes[eFinish].price=eHigh;
            eExtremes[eFinish].position=1;
            }            
         if(eExtremes[eFinish].price-eLow>eDistance)
            {
            eExtremes[eFinish].time=eTime;
            eExtremes[eFinish].price=eLow;
            eExtremes[eFinish].position=-1;
            }
         }
      }   
   }

Darüber hinaus sollte dieser Code Studs erfassen und verarbeiten, d. h. wenn eine Kerze gleichzeitig das Maximum und das Minimum überlappt, sowie die Mindestzeit zwischen den Extremen.

Nun, da das Array mit den Extrema gefüllt ist, wissen Sie, wo und wann Sie Ihre Indikatoren betrachten müssen. Aber die Zweifel an ihrer Nützlichkeit bleiben:)

 
Реter Konow:

Ich möchte ZigZag nicht verwenden, weil es die Idee entweiht. Wenn ZZ ein perfekter Punktindikator ist, dann ist er der IDEALSTE Indikator von allen, denn er trifft die perfekten Punkte genauer als jeder andere. Es stellt sich heraus, dass ZigZag in jedem Trade Signal Build in JEDER Strategie enthalten sein sollte. Und das ist Unsinn.

Ich bin der Meinung, dass die Bereiche des Handels in der Historie nach den Kriterien Zeit/Gewinn/Risiko und Verwendung von GA bestimmt werden sollten.

Sie verstehen das BIT des Zick-Zack-Indikators nicht...

Der ZZ-Indikator ist zwar ein IDEALer Indikator, aber nur als Einstellung für andere Indikatoren...

 
Serqey Nikitin:

Sie verstehen den Sinn des Zick-Zack-Indikators nicht...

Der ZZ-Indikator ist in der Tat ein IDEALer Indikator, aber nur als Setup für andere Indikatoren...

Das Problem mit ZZ ist, dass es das Zeit/Gewinn/Risiko-Verhältnis von Geschäften nicht berücksichtigt.
ZZ-Einstiegspunkte führen zu unverhältnismäßig hohen Umsätzen. Sie berücksichtigen nicht den Trend/die Schwankung. Die Korridore werden zusammen mit den Gipfeln im Inneren der Abschnitte des Gewerbes angeordnet.
ZZ ist für alle Dynamiken geeignet, und es erscheint unsinnig, andere Indikatoren zu verwenden. Zumindest ist sie nicht intelligent.

Wir brauchen einen anderen Ansatz. Nicht nur ideale Einstiegs- und Ausstiegspunkte, sondern auch die Einhaltung der internen Proportionen der Geschäfte - die Dauer der Position, ihr Gewinn und ihr Risiko.

Unter Risiko verstehe ich in diesem Zusammenhang nicht das Verhältnis von Lot, Stop und Deposit, sondern die Stabilität der Preisänderung einer offenen Position. Je weniger stabil der Wechsel (Hammering) ist, desto größer ist das Risiko von Gewinneinbußen.

Die idealen Einstiegs- und Ausstiegspunkte sollten daher nicht nach dem Prinzip "je höher der Gewinn, desto besser" gesucht werden, sondern nach dem Prinzip "das ideale Geschäft ist das Geschäft mit dem besten Verhältnis von Zeit, Gewinn und Risiko".

Dies ist meine Meinung.
 
Aleksei Stepanenko:

Ich verstehe das nicht. Die idealen Punkte sind bereits aus der Geschichte bekannt. Sie sind Extrema und können mit den Augen gesehen werden. Es sind keine komplexen Algorithmen erforderlich, um Extrema zu finden. Es müssen lediglich die Bedingungen für ihre Identifizierung festgelegt werden (z. B. Überschreitung einer bestimmten Anzahl von Punkten zwischen zwei gegenüberliegenden, benachbarten Extrema). Dann können wir ein Array dieser Extrema (Preis, Datum) erstellen und den Wert eines beliebigen Indikators am Punkt jedes Extremums (oder an dessen Annäherung) unter Verwendung desselben Verlaufs überprüfen. Oder?

Hier ist ein Beispiel für einen Code zum Suchen und Speichern von Verlaufsextremen (keine Garantie für die Leistung):

Außerdem sollte dieser Code Spikes erfassen und verarbeiten - wenn eine Kerze gleichzeitig das Maximum und das Minimum erreicht, sowie die Mindestzeit zwischen den Extremen.

Nun, da das Array mit den Extrema ausgefüllt ist, wissen Sie, wo und wann Sie Ihre Indikatoren betrachten müssen. Aber es bleiben Zweifel an ihrer Nützlichkeit:)

Vielen Dank für den Code. Ich bin mir allerdings nicht sicher, wie einfach es ist, IT zu finden.
 

Peter, können Sie ein Beispiel für ein paar handgezeichnete Trades auf einem Chart zeichnen? Ein- und Ausreise. Nehmen Sie vorzugsweise ein Stück des Diagramms mit einer Vielzahl von Kursbewegungen. Und erklären Sie an diesen Stellen, warum. Wie ist das Zeit/Gewinn/Risiko-Verhältnis von Geschäften?

Denn ich verstehe Ihre Vorstellung von einem idealen Punkt nicht ganz.

 
Aleksei Stepanenko:

Peter, können Sie ein Beispiel für ein paar handgezeichnete Trades auf einem Chart zeichnen? Ein- und Ausreise. Nehmen Sie vorzugsweise ein Stück des Charts mit einer Vielzahl von Kursbewegungen. Und erklären Sie an diesen Stellen, warum. Wie ist das Zeit/Gewinn/Risiko-Verhältnis von Geschäften?

Denn ich verstehe Ihre Vorstellung von einem idealen Punkt nicht ganz.

Ja, das werde ich später tun. Ich habe es selbst noch nicht ganz herausgefunden. Ich könnte meinen Standpunkt ändern. Wenn überhaupt, dann tut es mir leid. ))
 

Kein Problem.

Die Tatsache, dass du es auf Zig-Zag abwälzt, macht Sinn. Zig-Zag weiß nichts über den Trend. Er tickt einfach wie ein Uhrwerk, sowohl im Trend als auch in der Ebene. Seine Wellen(knie) sind keine Trendwellen. Trendwellen werden nach der folgenden Regel gebildet: Ein Trend gilt als fortlaufend, wenn er neue Höchststände erobert. Das bedeutet, dass die nächste Trendwelle immer über die vorhergehende hinausgeht, und wenn dies nicht der Fall ist, dann handelt es sich nicht um eine Welle.