Strukturregeln. Lernen, wie man Programme strukturiert, Erforschung von Möglichkeiten, Fehlern, Lösungen usw. - Seite 14

 
C-4:
In diesem Fall müssen wir die Historie der Signale speichern, was sehr teuer ist. Betrachten wir noch einmal die Kreuzung von 2 Durchschnittswerten. Nehmen wir an, wir haben den EA neu gestartet. Es gibt kein neues Crossover für den Einstieg, und der EA muss irgendwie seine Handelshistorie wiederherstellen und verstehen, dass es ein Crossover gab und dass er jetzt im Buy-Status sein sollte und dass dieses Signal verarbeitet wurde und wir keine neue Position eröffnen sollten, aber wir müssen die alte Position finden, aber es wird nicht einfach sein, sie zu finden, weil die aktuelle Position nicht notwendigerweise zu nur einem EA gehört ... Alles in allem ist es ein Alptraum. Das ist der dornige Weg, den hrenfx vorschlägt: einen History-Tester in jeden Roboter zu schreiben, der historische Signale sammelt, berechnet, ob sie funktionieren oder nicht, und dann die Volumina der Strategien speichert, usw. Infolgedessen steigt die Komplexität der Entwicklung um eine Größenordnung, während es immer noch keine zuverlässige Lösung gibt.

Die Signalhistorie ist ein Indikator. Indikatoren sind dazu da, um Berechnungen durchzuführen, Signale zu generieren und sie in den Expert Advisor hochzuladen.

Und sagen Sie nicht, dass die Indikatoren neu gezeichnet werden, schreiben Sie Indikatoren, die nicht neu gezeichnet werden, und Sie werden zufrieden sein.


Niemand kann uns in die Irre führen, es ist uns scheißegal, wohin wir gehen :)

 
C-4:

Warum ist das nicht wichtig? Jede Strategie kennt auf ihrer logischen Ebene immer ihren aktuellen Zustand!

Hier liegt das Grundproblem. Ich kenne mich damit aus, ich habe hier alle Ecken und Kanten durchforstet, und es ist falsch.

Die Strategie braucht ihre Geschichte nicht zu kennen. Die Strategie sollte vorwärts und nicht rückwärts gerichtet sein. Was geschehen ist, liegt bereits in der Vergangenheit, und es gibt kein Zurück mehr.

Nehmen wir eine einfache Crossover-Strategie: Sie hat nur zwei Zustände, sie ist entweder ein Kauf oder ein Verkauf. Ohne sich seine Position zu merken, wird er jedes Mal eine Long-Position eröffnen, wenn er sieht, dass der schnelle Durchschnitt über dem langsamen liegt. Was soll der Synchronisator also tun? Sie sagen ihm: "Nein, Sie haben bereits eine Long-Position, ich werde Ihnen keine weitere geben".

:)

Ich habe bereits geschrieben, dass Sie ein nicht existierendes Problem lösen, das nur mit dem "Ordnungsdenken" real erscheint. Mit dem Netzdenken gibt es das nicht.

Ich spreche nicht von Ihrer oder meiner Denkweise, sondern von der Denkweise des Programms (Strategie).

In einem auftragsbasierten System produziert die Strategie diskrete Kauf-/Verkaufs-/Schluss-Signale, in einem netzbasierten System gibt die Strategie eine Zahl (doppelt) aus - die empfohlene Marktposition.

Anhand des Beispiels von zwei Waggons soll gezeigt werden, wie ein Rollover-Netting-TC sein Produkt erzeugt, z. B. beim Handel mit einem konstanten Lot (Pseudocode):

 Pos = Sign(MA(ShortPeriod) - MA(LongPeriod));

Das war's.

Die Strategie hält +1 am Ausgang, solange der kurze Swing höher ist als der lange, und -1, wenn er niedriger ist.

Die Entscheidungen darüber, welche Orders zu platzieren/zu schließen sind, um diese Positionen zu den entsprechenden Zeitpunkten zu halten, werden vom Markttreiber getroffen. Die Strategie braucht sich damit nicht zu befassen, ihre Rolle ist eher aristokratisch und sie kümmert sich nicht um den ganzen merkantilen Kram. Der Treiber nimmt die empfohlene Position des Symbols, subtrahiert die tatsächliche Position davon und zeigt die Differenz an. Wenn die Differenz gleich Null ist, tut er nichts.

Meine Lösung ist universell, die Strategie entscheidet selbst, wie viele Aufträge und in welche Richtung sie offen halten kann.

Muss sich die Strategie überhaupt um Aufträge kümmern? Über diese Fragen entscheidet der Markttreiber.


Wenn Sie eine Kaufposition und zwei Verkaufspositionen wünschen, ist das kein Problem.

Ist es möglich, hier zu lachen? Genau das ist das Problem - man nennt es "Sperre".

Ich lasse alle potenziellen Sperren aufheben, BEVOR die Gesamtposition mehrerer Eingabestrategien an den Markttreiber übermittelt wird:

  Pos=0;
  for (i=0; i<StrategyCount; i++)  Pos+= Strategy[i].GetPos();
  MarketDriver.Synhronize(Pos, Err);

Die Basisklasse verfügt über alle Informationen, die sie benötigt, um Entscheidungen zu treffen. Auf der Terminalebene gibt es keine Nettoposition, während die Strategie selbst im komfortablen Multipositionsmodus arbeitet.

Der von meiner vorgeschlagenen Vorlage erstellte Expert Advisor wird automatisch die Eigenschaften eines Multi-Experten haben. Ich werde nichts hinzufügen oder ändern müssen. Positionen verschiedener EAs auf ein Symbol werden nicht in ein Netting kollabieren, es ist genauso einfach, ein Grid oder ein Locker in diesem Muster zu programmieren wie in jeder anderen Strategie. Mit anderen Worten, die vollständige Vereinheitlichung der Programmimplementierung ist erreicht, unabhängig von der Logik des Expert Advisors!

Äh... Meine Lösung ist sogar noch vielseitiger, wenn man bedenkt, dass die Schlösser darin gar nicht vorkommen. Schlossliebhaber gehen nicht mit mir, ich gehe mit ihnen.
 
MetaDriver:

...

Die Strategie hält beim Ausstieg +1, solange der Short über dem Long liegt, und -1, wenn er darunter liegt.

Der Markttreiber entscheidet, welche Orders zu platzieren/zu schließen sind, um diese Positionen zum richtigen Zeitpunkt aufrechtzuerhalten. Die Strategie braucht sich damit nicht zu befassen, ihre Rolle ist eher aristokratisch, sie kümmert sich nicht um dieses ganze merkantile Getue.

Muss sich die Strategie überhaupt um irgendwelche Aufträge kümmern? Der Markttreiber entscheidet diese kleinen Details für mich.

...

Das ist natürlich alles schön und gut, aber was ist mit Strategien, deren aktuelle "Empfehlung" von einer zuvor eröffneten Position abhängt? Angenommen, eine Strategie betreibt aktives Pyramidisieren und hat eine solche Bedingung (Pseudocode):

if(LastPosition.NetProfit > 400 && LastPosition.PositionType == Long)
{
   double volume = LastPosition.Volume + 1;
   BuyAtMarket(volume, "Entry long by strengthening");
}

Ein weiteres Beispiel dafür, wie das Empfehlungssystem eine solche einfache Bedingung behandeln würde (Pseudocode):

if(LastPosition.NetProfit < -400)
{
    CloseAtMarket(LastPosition, "Exit position by stop-loss");
    if(LastPosition.PositionType == Long)
       ShortAtMarket(volume, "Entry long by revers")
    else
       BuyAtMarket(volume, "Entry short by revers")
}
In Wirklichkeit kann es eine Vielzahl solcher Bedingungen geben.
 
MetaDriver:
Das ist die grundlegende Unschärfe. Ich kenne mich damit sehr gut aus, ich habe hier jeden Winkel durchforstet. Und es ist falsch.

Eine Strategie braucht ihre Geschichte nicht zu kennen. Die Strategie sollte vorwärts und nicht rückwärts gerichtet sein. Was geschehen ist, ist bereits in der Vergangenheit geschehen, und es gibt kein Zurück mehr.

Warum schreist du so :) das hat er nicht gesagt.


Jede Strategie kennt auf der Ebene ihrer Logik immer ihren aktuellen Zustand!

Es geht um den aktuellen Zustand, nicht um die Geschichte.
 
C-4:

Das ist natürlich alles schön und gut, aber was ist mit Strategien, deren aktuelle "Empfehlung" von einer zuvor eröffneten Position abhängt? Angenommen, die Strategie ist aktiv pyramidal und hat diese Bedingung (Pseudocode):

Diese Strategien müssen auf jeden Fall geheilt werden, und zwar auf der Ebene der Handelsphilosophie, d.h. dieses spezielle Loch im Kopf sollte geheilt werden: "Die aktuelle Empfehlung hängt von einer zuvor eröffneten Position ab".

Die aktuell empfohlene Position sollte niemals von zuvor auf dem Markt durchgeführten Aktionen abhängen.

 
sergeev:

Warum schreist du so :) das hat er nicht gesagt.

es heißt aktueller Stand, nicht Geschichte.

Ich kommuniziere nicht mit dem, was er gesagt hat, sondern mit dem, was er gemeint hat. Er bezog sich auf den früheren aktuellen Zustand.

:)

 

:)

In der Tat gibt es für mein Schema keine prinzipiellen Hindernisse, Strategien zu entwickeln, die vergangene Geschäfte berücksichtigen.

Etwas akademischer ausgedrückt: Ein System ohne Speicher kann leicht ein System mit Speicher simulieren. Dazu wird der Speicher einfach aus dem System ausgelagert - er wird zu einem weiteren Eingangsindikator. Das reicht völlig aus. Die Strategie selbst bleibt ein "System ohne Speicher" und das ist gut und richtig.

 
MetaDriver:

Die aktuell empfohlene Position sollte niemals von früheren Aktionen auf dem Markt abhängen.

Was ist mit Robotern, die "ihre eigenen Empfehlungen abgeben" und deren Signale aus einem Satz bestehen? Der Roboter sah eine große Aufwärtskerze - ein Kaufsignal. Der nächste Balken ist ein normaler Balken und es gibt kein Signal. Wenn der Roboter sich nicht an seinen Status erinnert, ist seine Empfehlung für diesen Balken bereits null, während der Roboter, der sich an ihn erinnert, nicht null ist, sondern eine Long-Position hat. Aber das sind zwei identische Roboter.

MetaDriver:

Ich kommuniziere nicht mit dem, was er gesagt hat, sondern mit dem, was er gemeint hat: Er bezog sich auf den früheren aktuellen Zustand.

Ah, das habe ich also wirklich gemeint! Ich werde es wissen:)
 
C-4: ... Das ist natürlich alles schön und gut, aber was ist mit Strategien, deren aktuelle "Empfehlung" von einer zuvor eröffneten Position abhängt? Angenommen, eine Strategie ist aktives Pyramidisieren ...

Der Punkt ist, dass der Top-Starter höchstwahrscheinlich eher eine Preisprognose als eine Strategie hat.

MetaDriver: ... Die Aufgabe einer Strategie ist es , vorherzusagen , ob und mit welcher Wahrscheinlichkeit der Markt zum nächsten Zeitpunkt steigen oder fallen wird. Davon hängt die empfohlene Marktposition ab. Was in der Vergangenheit da war, ob es offene Positionen (in beide Richtungen) gibt oder nicht - das spielt absolut keine Rolle. ...
Und was Sie(C-4) meinen, ist die Arbeit des Geldverwaltungsmoduls, das sowohl Prognosewerte als auch frühere Handelsergebnisse als Input(eine Art Funktion) verwendet. Wenn es kein MM gibt, verwandelt der endgültige Handelsalgorithmus eine virtuelle Prädikatorposition (die sich nicht um vergangene Handelsergebnisse kümmert) in eine reale Position, bei der die künftige Marktrichtung das Vorzeichen der empfohlenen Position ist und die Zuversicht/Wahrscheinlichkeit proportional zum Volumen der gleichen Position ist.

Das MM-Modul ist eine Schicht zwischen Forecaster und Driver, und die Ergebnisse können alles sein, von der Kapitalisierung und dem Risikolimit (relativer Drawdown in X ... Stunden/Trades/Pips-Bewegung) bis zur radikalen Umkehrung der vom Forecaster empfohlenen Position.

 
C-4:

Was ist mit Robotern, die "ihre eigenen Empfehlungen abgeben" und deren Signale aus einem Satz bestehen? Der Roboter sah eine große Aufwärtskerze - ein Kaufsignal. Der nächste Balken ist ein normaler Balken und es gibt kein Signal. Wenn der Roboter sich nicht an seinen Status erinnert, ist seine Empfehlung für diesen Balken bereits null, während der Roboter, der sich an ihn erinnert, nicht null ist, sondern eine Long-Position hat. Und das sind zwei identische Roboter.

Diese Roboter sollten auf jeden Fall behandelt werden. Die Behandlung kann sehr einfach sein. Alles, was Sie brauchen, ist Motivation. Das ist die Hauptsache.

Und um motiviert zu sein, müssen sie die enorme Überlegenheit des Netzdenkens gegenüber dem Ordnungsdenken erkennen und zu schätzen wissen. Solange sie krank sind, lasse ich sie nicht in die Nähe der gesunden Bevölkerung - lass sie in Quarantäne sitzen...

:)

Ah, das habe ich also wirklich gemeint! Gut zu wissen:)
Warum nicht? Muss ich mich entschuldigen? Oder habe ich richtig geraten? ;-))