Jungs, dass das Backtesten mindestens im MT4 für die Katz ist, das weiss doch nun inzwischen jeder. Da kommen keine in der Realität existierenden Ergebnisse raus, nicht mal mit Sicherheit trendgebende.
Ich programmiere nun seit mehr als 13 Jahren für Kunden der unterschiedlichsten Ansprüche, jedem rate ich ab, sich nach Backtestdaten zu orientieren, mindestens sollte ein Demo-Forward-Konto laufen, besser mit kleinen Lotgrößen aber auf einem Real-Konto unter permanenter Beobachtung. 2007 dachte ich auch, oh Backtest, das ist ja ne geile Sache, da kann man ja die Variablen hin- und herschieben bis ein positives Ergebnis kommt, aber da viele Aspekte des realen Tradens dort nicht berücksichtigt werden (können), habe ich den Strategietester nur noch zum Testen der geschriebenen Programme benutzt, um den korrekten Ablauf zu kontrollieren. Das wird auch nicht viel besser, wenn man lückenlose Tickdaten benutzt. traderdoc |
Ja, Traderdoc, das ist mir klar. Ich wollte nur nochmals versuchen, weil MA-EA ein gutes Ergebnis mit seinem Programm hatte und ich das kaum glauben konnte. Sein EA ist letzte Woche einige Stunden auf einem Demo-Account von JFD gelaufen und hat wie erwartet nur Verluste gebracht. Nicht mal mit dem Optimieren der Parameter (hier ja nur SL und TP) kann im Backtest ein Gewinn realisiert werden. Aber selbst dann wären gefundene Parameter in der Praxis kaum erfolgreich.
Wenn eine solche Strategie Gewinne bringen würde, wären du und ich und jeder, der ein bisschen programmieren kann, schon längst Multimillionäre. Aber eigentlich bin ich blöd, den Code von MA-EA zum Laufen zu bringen. Er guckt sich ja nicht einmal die Verbesserungsvorschläge an. Oder er kapierts nicht, obwohl ich das sehr einfach geschrieben habe. Die Doku liest er eh nicht, oder versteht sie nicht. Ja, und damit bleib ich nun wirklich still zu diesem Thema. Keine Lust mehr. |
Liste der Anhänge anzeigen (Anzahl: 1)
Ich hab mir die Vorschläge angeguckt. Sonst würde das Teil wahrscheinlich nicht so gut laufen. :rolleyes:
Was für Einstellungen hattest Du denn im Backtest? Er läuft bei mir im ActivTrades-Demo von 7 bis 16:26. Auf allen WP, die üblicherweise einen Spread bis ungefähr 15 haben. Werd demnächst wahrscheinlich WPs mit Spreads bis ungefähr 20 testen. Um 17:27 werden alle Orders dicht gemacht, egal ob Long oder Short, egal ob mit Gewinn oder nicht. Das Gerät muss ständig Long und Short im selben WP gleichzeitig sein. Wird die Order einer Richtung geschlossen (meistens weil sie den eingestellten Gewinn erreicht hat) wird in die selbe Richtung gleich die nächste Order geöffnet (so soll es jedenfalls sein :rolleyes:. Klappt aber nicht durchgehend und ich hab keine Ahnung, warum. ). Lots der jeweiligen Richtung werden mit dem einstellbaren Wert addiert, wenn er eine Gewinn-Order schließt. Auch wenn das ganze Prinzip wohl nicht so überzeugend klingt, wär ich dankbar, wenn Ihr den Code mal durchschauen und sagen könntet, ob er gut und richtig ist. Vor allem weiß ich nicht, ob das bei OrderSend mit dem Prüfen klappt, ob der EA schon Orders offen hat. Noch nicht getestet: Code:
/*============================================================================================================= |
Liste der Anhänge anzeigen (Anzahl: 1)
Moin.
Funktioniert das so mit Order prüfen und öffnen? Oder müssen OrderSelect und Order Infos holen extra { } haben? :confused: Code:
if(Hour()>=Open_From_Hour&&Minute()>=Open_From_Min&&Hour()<=Open_Till_Hour&&Minute()<=Open_Till_Min){ |
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo.
Im Anhang eine Version, die die wichtigsten Sachen printen soll. In den letzten 2 Tagen hat der EA nur Verluste gemacht. Ich glaube, ich weiß warum und hätte mir das eigentlich auch vorher denken können. :rolleyes:Weil mit immer mehr Lots auch immer mehr Spread-Kosten entstehen. Nach kurzer Zeit reichen auch mehrere Gewinn-Orders nicht mehr, um die wieder zu bekommen. Pro 0.01 Lot entstehen bis zu 15 Pips Spread. Ab ca. 0.04 Lot bekommt man natürlich mit 40 Pips Gewinn den Spread nicht mehr rein. :( Also muss man sozusagen Spread mal Lots rechnen, um raus zu finden, wie viel Gewinn das Ding pro Order mindestens machen muss. Dazu sollen natürlich noch ein paar Pips Gewinn auf dem Konto bleiben. Meine Frage lautet jetzt eigentlich nur: An welcher Stelle macht man diese Berechnung? In den globalen Variablen wird festgelegt, mit wie viel Gewinn er die jeweilige Order dicht machen soll. Code:
extern string esDOPtAB1="Distance to"; Code:
double CLbuy_D = NormalizeDouble( Bid - Dist *_Point,_Digits); Code:
if( ( CLbuy_D > OrderOpenPrice() ) ... Close Buy Code:
... |
Liste der Anhänge anzeigen (Anzahl: 1)
So müsste es ja eigentlich funktionieren...
Code:
// Close-Buy-Distance anpassen Code:
// Close-Sel-Distance anpassen |
Hast noch nicht bemerkt, dass du mit 0.04 Lots auch mehr Gewinn machst als mit 0.01 Lots. Es liegt nicht an deiner Vermutung. Deine Strategie funktioniert nicht.
Wenn du jetzt einfach versuchst, deine Verluste, ob durch Spreads oder verlorene Trades verursacht, mit dem nächsten Trade auszugleichen, nennt sich das Martingale Strategie. Die kann durchaus eine Weile funktionieren, endet aber immer mit dem Totalverlust. Mit so einfachen Strategien kannst du lange rumprobieren. Ich geb dir einen Tip: Du musst verschiedene Indikatoren auswerten und so mehr Gewinn- als Verlusttrades erreichen. Ich habe erst Erfolg gehabt, als ich verschiedene Indikatoren zudem in verschiedenen Zeiteinheiten ausgewertet habe. z.B. einen Trendindikator in 1H oder 1W und TRSI oder MACD oder sowas in kleinerer Zeiteinheit, und dann nur in der Richtung des Trends Trades eröffnen. Für sehr kurzfristige Trades, die du ja haben willst, mussst zudem nicht nur den absoluten Wert deines Indikators berücksichtigen. Wichtig ist, ob er steigt oder fällt. Aber sowas zu programmieren liegt wohl weit ausserhalb deiner Fähigkeiten. |
Liste der Anhänge anzeigen (Anzahl: 1)
Hab schon etliche EAs mit etlichen Indikatoren versucht. CCI, Stochastic, WPR, RVI, RSI, Ichimoku, Moving Averages... :D
Hab eben die Print-Version versucht. Als er keine neue Orders geöffnet hat, obwohl er eigentlich müsste, kam im Journal überhaupt nix! Kein einziger neuer Eintrag! Als ob er überhaupt nicht arbeiten würde. :confused: Also muss das Problem beim MT4 oder bei ActivTrades liegen... Abgesehn davon ergibt die neue Dist immer 0! Entweder funktioniert das nicht so, wie ichs mir vorgestellt habe, oder irgendwo ist nen Rechenfehler drin. :confused: Aber wie ich irgendwo schon mal sagte, bin ich Alles Andere als nen Mathe-Ass... Unter Experten steht aber auch nicht, ob und was er rechnet. Dann scheint er noch ununterbrochen alle Orders zu zählen, ausser wenn er doch mal Welche öffnet oder schließt. Code:
// Close-Buy-Distance anpassen Code:
// Close-Sel-Distance anpassen |
Nochmals: überleg dir gut, was du wann machen musst und fange Fehler ab.
z.B. was soll if(IsTradeContextBusy()) Sleep(Sl_MS); nach SendOrder? wenn du das schon abfragst, gehört das vor SendOrder und zwar so: while (IsTradeContextBusy()) Sleep(Sl_MS); Und dann wertest du immer noch nicht aus, ob SendOrder korrekt abgelaufen ist. Sogar der Compiler meldet dir, dass du das auswerten sollst. Warum wohl? Aber genau habe ich deinen Code nicht analysiert. Das tu ich mir nun wirklich nicht nochmals an. |
Der @MA-EA ist leider sehr beratungsresistent.
traderdoc |
Alle Zeitangaben in WEZ +2. Es ist jetzt 14:43 Uhr. |
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum