Wer will eine Strategie? Lose und kostenlos) - Seite 19

 
orlekino >> :

Ich habe es nach meinem Geschmack und in meiner Farbe umgeschrieben; es sieht so ähnlich aus wie EoM, aber die Spitzen sind unverständlich.

//  Ease of Movement

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Red
extern int PeriodMA = 13;
extern int VolDivisor = 10000;
double EoMBuffer[];
double TempBuffer[];

int init()
{
   IndicatorBuffers(2);
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0, EoMBuffer);
   SetIndexBuffer(1, TempBuffer);
   IndicatorShortName("EoM("+ PeriodMA+")");
   SetIndexLabel(0,"EoM("+ PeriodMA+")");
   SetIndexDrawBegin(0, PeriodMA);

   return(0); 
}

int start()
{
   int counted_bars=IndicatorCounted();
   if( counted_bars>0)
      counted_bars--;
   int limit=Bars- counted_bars;
  
   for(int i=0; i< limit-1; i++)
      TempBuffer[ i]= VolDivisor * (High[ i] - Low[ i]) * ((High[ i] + Low[ i]) / 2.0 - (High[ i + 1] - Low[ i + 1]) / 2.0) / MathMax(Volume[ i], 1);

   for( i=0; i< limit; i++)
      EoMBuffer[ i]=iMAOnArray( TempBuffer,Bars, PeriodMA,0,MODE_SMA, i);

   return(0);
}
 
zelda >> :

Interessant, aber nach Arms' ursprünglicher Idee sollte der Indikator relativ zu 0 laufen und Signale geben, wenn Nulllinie und SMA überschritten werden (die auf den Indikator angewandt und nicht sofort geglättet werden).

Ist es möglich, eine solche Variante zu erstellen? Ich selbst weiß (noch) nicht genug über MQlng, so dass in meinem Code der letzte Tick des Indikators als unendlich steigend gezeichnet wird (wie man das beheben kann, weiß ich nicht), aber im allgemeinen Kontext passt es mir.

 
FOREXMASTER >> :

kein schlechter Anfang, aber in diesem Programm würde ich gerne sehen:

1. Die Wahl der generierten Strategien, weil die Maschine selbst kann nicht wählen Sie die am besten geeignete Strategie für jeden, und ich habe gesehen, viel besser Strategen als das Programm am Ende der speichern

Ich habe eine etwas andere Idee, nämlich die Einrichtung einer Datenbank für Strategien. D.h. der Benutzer kann 1 Strategie pro Instrument und Zeitrahmen erstellen und der Computer wählt diese aus. Darüber hinaus lädt er auch 20 Strategien aus dem Repository herunter. Anschließend werden 20 Tests mit allen heruntergeladenen Strategien durchgeführt und eine Liste mit deren Merkmalen erstellt. Die Strategie mit dem schlechtesten Ergebnis wird aufgefordert, aus dem Repository gelöscht zu werden, und stattdessen wird die soeben erstellte Strategie hinzugefügt.


So bleibt dem Benutzer eine Liste mit 21 Strategien, von denen 20 bereits getestet wurden, aus der er alle auswählen kann, die ihm gefallen, und die Quellcodes der EAs in MQL4 erstellen kann.


Auf diese Weise wird ein Kompromiss erzielt:


1. Ein Computer wählt eine Strategie aus den generierten Strategien aus, und zwar nicht zufällig, sondern unter Berücksichtigung bestimmter Merkmale.

2. Der Benutzer wählt die Strategie aus der Liste aus, d.h. er hat das Recht, eine Wahl zu treffen, auch eine unangemessene, subjektive und fehlerhafte. Es liegt im Ermessen des Nutzers, ob er eine gerade vom Prüfer gezogene Bilanz oder eine bewährte Strategie verwenden möchte.


Das Wichtigste ist jedoch, dass auf diese Weise das Repository ständig gefiltert wird und nur die Strategien gespeichert werden, die die besten Ergebnisse liefern. Und zufällige Anpassungen werden durch die natürliche Auslese aus dem System herausgespült. Das heißt, es besteht fast keine Notwendigkeit für Vorwärtstests, da wir einfach die Liste durchsehen und die Strategie auswählen können, die die meiste Zeit im Repository überdauert hat.


Außerdem werden die Ergebnisse auf diese Weise durch verteiltes Rechnen erzielt. Mit anderen Worten: Jeder Computer verbringt nur etwa 1/21 seiner Zeit mit der Entwicklung von Strategien und einen wesentlich geringeren Teil der Zeit mit dem Testen der Strategien.


Leider gibt es auf meiner bisherigen Website keine Möglichkeit, ein Repository einzurichten, da Ucoz CMS es nicht erlaubt, Datenbanken zu verwalten und PHP-Skripte auszuführen. Daher müssen wir ein separates Hosting für die Stock Strategy Builder-Website wählen, auf deren Grundlage das Repository betrieben wird.


Ich habe bereits einen großen Teil des Repositorys und eine neue Version des Programms erstellt. Es gibt einige Details, insbesondere in Bezug auf die Qualität der Kurse, auf deren Grundlage die Strategien erstellt und getestet werden. Sobald ich all diese Details ausgearbeitet habe, werde ich die Version veröffentlichen, die das Repository unterstützt.

 
Reshetov писал(а) >>

Ich habe eine etwas andere Idee, nämlich die Einrichtung eines Strategie-Repositorys. ...

... Auf diese Weise würde das Repository ständig gefiltert werden und nur die Strategien enthalten, die die besten Ergebnisse liefern. Und zufällige Passungen werden durch natürliche Auslese herausgespült. Es besteht also praktisch keine Notwendigkeit für Vorwärtsprüfungen ...

... Ich musste mir ein separates Hosting für die Stock Strategy Builder-Site zulegen, auf deren Grundlage das Repository funktionieren wird.

... Ich habe bereits einen großen Teil des Repositorys und der neuen Version der Software erstellt. Es sind noch einige Details zu klären, insbesondere was die Qualität der Kurse betrifft, auf deren Grundlage die Strategien entwickelt und getestet werden sollen. Sobald ich diese Details ausgearbeitet habe, werde ich die Version mit Repository-Unterstützung veröffentlichen.

Großartige Idee! Viel Erfolg bei der Umsetzung!

Aber ich verstehe nicht, warum die Vorwärtsprüfung nicht erforderlich sein soll.

 
voltair >> :

Großartige Idee! Viel Erfolg bei der Umsetzung!

Ich bin nur etwas verwirrt, warum die Vorwärtsprüfungen nicht erforderlich sind.

Denn nur bewährte Strategien werden im Repository verbleiben, der Rest wird nach und nach entfernt.


Es ist klar, dass, wenn wir eine Strategie heruntergeladen haben, die zum Beispiel ein halbes Jahr lang existierte, und die laut den Tests Gewinn zeigt, dann wird sie vertrauenswürdiger sein, als die gerade generierte.


Natürlich kann man selbst zusätzliche Tests durchführen, nur für den Fall der Fälle.

 
Reshetov писал(а) >>

... Wenn Sie eine Strategie aus dem Repository heruntergeladen haben, die zum Beispiel schon ein halbes Jahr dort liegt und auch heute noch in Tests einen Gewinn zeigt, dann ist sie vertrauenswürdiger als eine neu generierte Strategie.

Ich verstehe - Strategien liegen nicht einfach da, sie werden ständig getestet und bleiben nur dann im Repository, wenn sie rentabel sind.

Aber es kann sein, dass "heute" (auf dem aktuellen Markt) "diese" Strategie im Minus ist und morgen alles mit einem bedeutenden Gewinn zurückgewinnen wird.

In welchem Marktsegment sollen die Strategien getestet werden?

 
voltair >> :

Ich weiß, dass die Strategien dort nicht einfach nur gespeichert werden, sondern dass sie ständig getestet werden und nur dann im Repository verbleiben, wenn sie rentabel sind.

Es kommt jedoch vor, dass "heute" (auf dem aktuellen Markt) "diese" Strategie im Minus ist, und morgen wird sie alles mit einem erheblichen Gewinn zurückgewinnen.

In welchem Marktsegment soll die Strategie getestet werden?

Aus diesem Grund gehe ich davon aus, dass der Geschichtsabschnitt mindestens 8000 Takte umfassen sollte. D.h. das Programm sollte Kurse mit weniger als 8000 Takten ablehnen. Außerdem sollten veraltete Anführungszeichen zurückgewiesen werden, z. B. wenn die hst-Datei am letzten Tag nicht aktualisiert worden ist.


Daher müssen die historischen Daten ausreichend lang, langfristig und so aktuell wie möglich sein. Daher handelt es sich zu diesem Zeitpunkt nicht mehr um eine "Ein-Tages-Strategie", da das Endergebnis die Gesamtsumme für den gesamten Zeitraum und nicht die einzelnen Stücke sein wird.

 
Reshetov писал(а) >>

...Ich nehme an, dass der Geschichtsabschnitt mindestens 8000 Takte umfassen sollte. ...

Für große Zeiträume ist dies wahrscheinlich in Ordnung. Aber wahrscheinlich ist es nicht genug für Minute oder M5. Allerdings stellt sich die Frage, für welchen Zeitraum die Strategien aufbewahrt werden sollen. Gibt es bewährte Methoden (oder Erfahrungen), um die Anzahl der zu testenden Balken auszuwählen? Ich suche normalerweise nicht nach weniger als 20000 Barren. Aber vielleicht ist es ja falsch...

 
voltair >> :

Für große Zeiträume ist das wahrscheinlich in Ordnung. Aber wahrscheinlich nicht genug für Minuten oder M5. Aber meine Frage ist, für welchen Zeitraum werden die Strategien aufbewahrt? Gibt es bewährte Methoden (oder Erfahrungen), um die Anzahl der zu testenden Balken auszuwählen? Ich suche normalerweise nicht nach weniger als 20000 Barren. Aber vielleicht ist das falsch.

Bisher habe ich mich für die goldene Mitte entschieden, d. h. für mindestens 8000 Balken in historischen Daten. Mehr ist möglich, weniger ist es nicht.

 

Wenn wir zulassen, dass Strategien aufgrund negativer Testergebnisse aus dem Repository entfernt werden, ist das nicht ganz korrekt. Es kann nämlich vorkommen, dass jemand fehlerhafte und undichte Kurse hochlädt und nach der Durchführung von Tests alle profitablen Strategien löscht.


Es ist besser, jeder Strategie eine Bewertung zu geben, z.B. -100 bis +100. Bei der erstmaligen Einstellung einer Strategie in das Repository wird sie mit Null bewertet.


Alle Strategien werden nach der Bewertung in absteigender Reihenfolge sortiert, d.h. vom Maximum zum Minimum. Die Software lädt die 20 besten Strategien mit der höchsten Bewertung und führt Tests mit ihnen durch. Wenn das Ergebnis des Tests positiv ist und die Bewertung der Strategie unter 100 liegt, wird sie um 1 erhöht. Wenn das Ergebnis negativ ist, wird sie um 1 verringert. Wenn die Bewertung unter -100 liegt, wird die Strategie aus dem Repository entfernt.


1. Ältere Strategien, die sich im Laufe der Zeit bewährt haben, werden am besten bewertet und erscheinen daher weiter oben in den TOP-20.

2. Einen Tag alte Strategien werden in den Bewertungen allmählich nach unten gehen und bei Erreichen der -100 Stufe werden sie gelöscht.

3. Wenn das Programm mit gebrochenen Anführungszeichen arbeitet, kann es die Bewertung nur um 1 ändern, d.h. es wird die Ergebnisse des Repository-Rankings nicht global beeinflussen, sondern nur leicht anpassen.