75.000 Optionen - 4 GB RAM und 4 GB Festplatten-Cache nicht genug??? - Seite 5

 
Wir haben keine Visualisierung, wir haben noch keine gebraucht.
Wir werden das aber wahrscheinlich in der nächsten Version nachholen.

Ich werde Ihnen zeigen, was ich kann.
Es ist nicht möglich, den Expert Advisor zu 100% zu übertragen,
Ich werde eine Annäherung machen, es geht nicht um den Expert Advisor, nicht wahr?
Es geht um die Fähigkeiten des Optimierers, nicht wahr?
 
Mak:
Wir haben keine Visualisierung, wir haben noch keine gebraucht.
Wir werden das aber wahrscheinlich in der nächsten Version nachholen.

Ich werde Ihnen zeigen, was ich kann.
Es ist nicht möglich, den Expert Advisor zu 100% zu übertragen,
Ich werde eine Annäherung machen, es geht nicht um den Expert Advisor, nicht wahr?
Es geht um die Fähigkeiten des Optimierers, nicht wahr?
Ganz und gar nicht. Der ganze Komplex der Kartierung und der Benutzerfreundlichkeit ist das Wesentliche daran, was einen großen Aufwand an Ressourcen mit sich bringt.

Es ist eine Sache, die Programmierer dazu zu bringen, ihren gesamten Code umzupflügen, um die Kommunikation mit einem externen Optimierer einzubetten, und dann den Optimierer laufen zu lassen, der dort etwas berechnet. Und das alles zu einem hohen Preis. Und es ist eine andere Sache, das Kontrollkästchen "Genetische Optimierung" eines beliebigen Experten zu aktivieren, einen normalen Bereich (nicht zig Milliarden) auszuwählen, die Ergebnisse zu erhalten und sofort die Ergebnisse durchzusehen, während der Optimierer arbeitet, ohne zusätzliche Programme. Und es ist kostenlos.

Wir machen unsere Systeme konsequent so einfach, bequem und ganzheitlich wie möglich. Jemand behauptet, "mein Testgerät ist 10-100 mal schneller", beweist dies aber nicht. Jemand spricht von fiktiven Aufgaben mit "einem Pferd in einem sphärischen Vakuum". Wir entwickeln funktionierende Systeme, die bei Hunderttausenden von Händlern, die den MetaTrader nutzen, hervorragend funktionieren. Und wir sind allen Mitbewerbern weit voraus, auch wegen unserer Ideologie des Systembaus.

ps: Übrigens, warum ist das Verteilungspaket Ihres genetischen Optimierers größer als das von MetaTrader? Ist es nicht wirtschaftlich, ihn zu schreiben?
 
Nun, hier ist ein Durchlauf.

Ich habe keine Währungen in Omega, lief ich auf, was in der Verteilung
- IBM (D1) für 31 Jahre (> 11 Tausend Bars).

1000 Durchläufe dauerten ~10 min auf Athlon XP 1500+

Ich habe die Parameterbereiche erweitert, weil die Volatilität bei Aktien höher ist

TakeProfit = (10, 10000, 1)
TralingStop = (10, 10000, 1)
Lots = (1, 1000, 1) - meine Anzahl von Aktien ist
MACDOpenLevel = (1, 100, 1)
MACDCloseLevel = (1, 100, 1)
MATrendPeriod = (2, 100, 1)

Der gesamte Parameterraum beträgt ~ 10^14 Zustände.

Nachfolgend finden Sie den Code in EasyLanguage und ScreenShot.
Außerdem sind der Signalcode und die Berichte von Omega als Zip-Datei beigefügt.

(Code einfügen hat nicht funktioniert)
========================================================================
Inputs: Gen(1);
Vars: TakeProfit(50),
TralingStop(30),
Lots(0.1),
MACDOpenLevel(3),
MACDCloseLevel(2),
MATrendPeriod(26);

Vars: R(0),K(0);
If CurrentBar = 1 Then Begin
R = TS.GO.Start("MACD");
If Gen = 1 Then Begin
R = TS.GO.Mode(0);
R = TS.GO.Popul(100);
R = TS.GO.Var("Gen");
R = TS.GO.Var("Trades");

R = TS.GO.Method(1);
R = TS.GO.Criterion("NetProfit",1);
R = TS.GO.Criterion("MaxDD",1);
R = TS.GO.Criterion("PF",1);

K = TS.GO.Chrom("Stops");
R = TS.GO.Gen("TakeProfit", K, 10, 10000, 1);
R = TS.GO.Gen("TralingStop", K, 10, 10000, 1);

K = TS.GO.Chrom("Lots");
R = TS.GO.Gen("Lots", K, 1, 1000, 1);

K = TS.GO.Chrom("MACD");
R = TS.GO.Gen("MACDOpenLevel", K, 1, 100, 1);
R = TS.GO.Gen("MACDCloseLevel", K, 1, 100, 1);
R = TS.GO.Gen("MATrendPeriod", K, 2, 100, 1);
End;

R = TS.GO.Next(Gen);
R = TS.GO.Set("Gen",Gen);
R = TS.GO.ShowViewer;

TakeProfit = TS.GO.Get("TakeProfit", 0);
TralingStop = TS.GO.Get("TralingStop", 0);
Lots = TS.GO. Get("Lots", 0);
MACDOpenLevel = TS.GO.Get("MACDOpenLevel",0);
MACDCloseLevel = TS.GO.Get("MACDCloseLevel",0);
MATrendPeriod = TS.GO.Get("MATrendPeriod",0);
End;

Vars: MacdCurrent(0), MacdPrevious(0), SignalCurrent(0),
SignalPrevious(0), MaCurrent(0), MaPrevious(0);

MacdCurrent = MACD(Close,12,26);
MacdPrevious = MACD(Close,12,26)[1];
SignalCurrent = XAverage(MacdCurrent,9);
SignalPrevious = XAverage(MacdCurrent,9)[1];
MaCurrent = XAverage(Close,MATrendPeriod);
MaPrevious = XAverage(Close,MATrendPeriod)[1];

Vars: StopLoss(0);
If MarketPosition = 0 Then Begin
If MacdCurrent < 0
and MacdCurrent > SignalCurrent
and MacdPrevious < SignalPrevious
and AbsValue(MacdCurrent) > (MACDOpenLevel Point)
and MaCurrent > MaPrevious
Then Begin
Buy Lots shares this bar on close;
end;

If MacdCurrent > 0
and MacdCurrent < SignalCurrent
and MacdPrevious > SignalPrevious
and AbsValue(MacdCurrent) > (MACDOopenLevel Point)
und MaCurrent < MaPrevious
Then Begin
Sell Lots shares this bar on close;
end;
end;

If MarketPosition > 0 Then Begin
If MacdCurrent > 0
and MacdCurrent < SignalCurrent
and MacdPrevious > SignalPrevious
and AbsValue(MacdCurrent) > (MACDCloseLevel Point)
Then Begin
ExitLong ("CloseLong") this bar on close;
end;

If StopLoss = 0 Then StopLoss = EntryPrice - TralingStop Points;
StopLoss = MaxList(StopLoss,High - TralingStop Points);

ExitLong ("TakeLong") Next Bar at EntryPrice + TakeProfit Points Limit;
ExitLong ("StopLong") Next Bar at StopLoss Stop;
end;

If MarketPosition < 0 Then Begin
If MacdCurrent < 0
and MacdCurrent > SignalCurrent
and MacdPrevious < SignalPrevious
and AbsValue(MacdCurrent) > (MACDCloseLevel Point)
Then Begin
ExitShort ("CloseShort") this bar on close;
end;

If StopLoss = 0 Then StopLoss = EntryPrice + TralingStop Points;
StopLoss = MinList(StopLoss,Low + TralingStop Points);

ExitLong ("TakeShort") Next Bar at EntryPrice - TakeProfit Points Limit;
ExitLong ("StopShort") Next Bar at StopLoss Stop;
end;


IF LastBarOnChart Then Begin
R = TS.GO.Set("Trades",TotalTrades);
R = TS.GO.Set("NetProfit",NetProfit);
R = TS.GO.Set("MaxDD",MaxIDDrawDown);
R = TS.GO.Set("PF",GrossProfit/(0.001-GrossLoss));
R = TS.GO.Fitness(0);
End;
========================================================================


Dateien:
macd_test.zip  32 kb
 
Renat:
Mak:
Wir haben keine Visualisierung, wir haben noch keine gebraucht.
Wir werden das aber wahrscheinlich in der nächsten Version nachholen.

Ich werde Ihnen zeigen, was ich kann.
Es ist nicht möglich, den Expert Advisor zu 100% zu übertragen,
Ich werde etwas annähern, es geht nicht um den Expert Advisor, es geht um die Fähigkeiten des Optimierers?
Es geht um die Fähigkeiten des Optimierers, nicht wahr?
Auf keinen Fall. Der springende Punkt ist der gesamte Komplex der Abbildung und der Nutzbarkeit, der einen großen Aufwand an Ressourcen mit sich bringt.

Es ist eine Sache, die Programmierer dazu zu bringen, ihren gesamten Code zu überarbeiten, um die Kommunikation mit einem externen Optimierer zu integrieren, und dann den Optimierer laufen zu lassen, der dort etwas berechnet. Und das alles zu einem hohen Preis. Und es ist eine andere Sache, das Kontrollkästchen "Genetische Optimierung" eines beliebigen Experten zu aktivieren, einen normalen Bereich (nicht zig Milliarden) auszuwählen, die Ergebnisse zu erhalten und sofort die Ergebnisse durchzusehen, während der Optimierer arbeitet, ohne zusätzliche Programme. Und es ist kostenlos.

Wir machen unsere Systeme konsequent so einfach, bequem und ganzheitlich wie möglich. Jemand behauptet, "mein Testgerät ist 10-100 mal schneller", beweist dies aber nicht. Jemand spricht von fiktiven Aufgaben mit "einem Pferd in einem sphärischen Vakuum". Wir entwickeln funktionierende Systeme, die bei Hunderttausenden von Händlern, die den MetaTrader nutzen, hervorragend funktionieren. Und wir sind allen Mitbewerbern weit voraus, auch wegen unserer Ideologie des Systembaus.

ps: Übrigens, warum ist das Verteilungspaket Ihres genetischen Optimierers größer als das von MetaTrader? Ist es nicht wirtschaftlich, es zu schreiben?

Renat, du selbst hast mich VERPFLICHTET, dir das zu zeigen.
Ich habe Sie wiederholt gefragt, was DIES ist ....
Wenn Sie einen früheren Beitrag geschrieben hätten, als ich Sie danach gefragt habe,
wäre das Gespräch anders verlaufen, und ich hätte diesen MACD nicht für Omega umschreiben müssen.
Ich musste andere Dinge zurückstellen, um zu beweisen, dass ich kein Kamel bin.

Unterm Strich.
Sie sagen, was für eine gute Sache Sie getan haben, und das auch noch kostenlos ...
Habe ich mich mit Ihnen darüber gestritten (ich habe mich mit Ihnen über gar nichts gestritten)?

Ich habe nur darauf hingewiesen, dass Ihr Optimierer zu viel Speicher verbraucht.
Ich glaube, das ist eine Altlast aus einer alten Version Ihres Optimierers, als Sie noch kein CS hatten.
Dies ist leicht zu beheben und wird Ihren Optimierer noch besser machen.

Wohlgemerkt, keine Kritik von meiner Seite.
Ich wollte Ihnen nur helfen.
 
Etwas ganz anderes ist es, wenn man seinen Standpunkt ausführlich verteidigt. Warum gibt es eigentlich nur 1.000 Überschreitungen auf einer so großen Fläche? Das ist eine sehr grobe Art, die Sache zu betrachten. Ich habe diesen EA in MT4 über 1,5 B Werte laufen lassen und er hat innerhalb von 4 Minuten 4400 Netto-Rebounds auf 18000 Bars der EURUSD H1-Historie erzielt.

Diese Aufgabe ist natürlich das Reich des kugelförmigen Pferdes in einem Vakuum, und wir in MT4 versuchen in der Tat fälschlicherweise, aufgrund des riesigen Bereichs möglicher Werte (das Erbe der Brute-Force-Angriffsmechanismen) eine bestimmte Menge an Speicher zu reservieren. Dieser Punkt wird korrigiert werden.

Vielen Dank für Ihre Hartnäckigkeit - Sie haben uns gezwungen, tiefer in den Tester einzudringen.
 
Renat писал (а):

.... Aber warum gibt es nur 1000 Rebounds in einem so großen Raum? Das ist sehr plump. Ich habe diesen Expert Advisor in MT4 über einen Bereich von 1,5 Milliarden Werten laufen lassen und erhielt 4400 Netto-Überschreitungen in 4 Minuten auf 18000 Bars der EURUSD H1-Historie. ....
Die Suchgeschwindigkeit in der Genetik ist unabhängig von der Größe des Parameterraums.
Sie hängt von der Qualität der Zielfunktion (Fitness) ab.

Außerdem verwenden wir den ursprünglichen Algorithmus, der um eine Größenordnung schneller ist als andere uns bekannte Algorithmen.
1000 Durchläufe sind ein bisschen viel, ich verwende normalerweise 100-200 Durchläufe (für eine beliebige Anzahl von Parametern), um eine Lösung zu bewerten.
 
Renat писал (а):
Ja, in der Tat verbraucht dieser EA im Test zu viel Speicher und geht unter. Wir werden uns das ansehen.
Vielen Dank für den zur Verfügung gestellten Code.


Renat, noch keine Neuigkeiten?
 

sane, es gibt Neuigkeiten. Sie haben ein Speicherleck gefunden. Der Compiler hat den Zeilenfreigabebefehl nicht an der richtigen Stelle eingefügt.

 
stringo писал (а):

sane, es gibt Neuigkeiten. Sie haben ein Speicherleck gefunden. Der Compiler hat den Zeilenfreigabebefehl nicht an der richtigen Stelle eingefügt.


Ok, wir warten auf das neue Gebäude.
 
sane:
stringo:

sane, es gibt Neuigkeiten. Sie haben ein Speicherleck gefunden. Der Compiler hat den Zeilenfreigabebefehl nicht an der richtigen Stelle eingefügt.


OK, ich warte auf die neue Version.

Ich habe Ihr Beispiel mit dem neuen Build von 198 EA ausgeführt:







Kein übermäßiger Speicherverbrauch mehr, mit aktivierter genetischer Optimierung gab es 1088 Suchen von 21600 und die Berechnung dauerte 8 Minuten und 31 Sekunden.

Zum Expert Advisor selbst - er sollte wegen gravierender Fehler auf keinen Fall verwendet werden:
  • Falsche Stopp-Levels und alle Protokolle sind mit Meldungen darüber übersät
  • für die Funktion SetOrder können Sie von Ihrem Broker ein strenges Verbot des Handels mit Expert Advisors erhalten

    Diese Funktion versucht fünfmal, zu veralteten Preisen zu handeln. Der Autor des Expert Advisors versteht nicht, was er tut (er versucht, RefreshRates zu verwenden, gibt aber trotzdem einen veralteten Preis an). Und es gibt überhaupt keine sinnvolle Fehlerbehandlung.