DarthTrader
Developer
-
Benutzer seit
-
Letzter Besuch
Alle Inhalte von DarthTrader
-
EA Daily-Range
Nun ja, der Open-Kurs ist ja nur ein Worst-Case-Stopp, der wird im Normalfall gar nicht erreicht, da ich nach X-Bars-Under-Range raus gehe. Es ist nur wichtig, dass ein Stopp im Markt ist, wenn mal der EA oder mein PC abschmirt. Hab es jetzt so gelöst, dass ich berechne ob der Open oder Range +- 1% näher an der Eröffnung der Position dran ist, damit das Risiko etwas besser angepasst ist. So gehe ich max. 1% oder eben den Open des Tages als Risiko ein. Beide Wert werden kaum erreicht, da andere Stopps ziehen Ich muss aber ja auch beim FOREX-Markt die Umrechnung in die Account-Balance mit einkalkulieren. So einfach läuft es dann leider doch nicht :-) Super, dann teste ich ihn mal auf einem Realkonto mit FDAX und GOLD. Stimmt, aber vorerst reicht es auch so. Da ich immer von stetigen Gewinnen ausgehe, wirkt sich das von dir gesagte eher positiv aus ... :-) Was meinen die anderen zum Thema Money-Management? Danke schonmal DarthTrader
-
EA Daily-Range
So soll es sein. Ich habe ja auf jeden Fall einen StopLoss durch den Einstiegskurs. Klar, den gebe ich nichr direkt mit, dass sollte man vielleicht ändern ... sonst habe ich ja keine Absicherung im Markt ... Auf jeden Fall, aber man muss sich jedes mal erneut hineindenken ... Genau und es wird auch schon verwendet (siehe Code). Die Frage ist nur, ob noch Fehler im Code drin sind. Die Berechnung sollte an sich so funktionieren. Fixed Fractional mit X% vom AccountBalance(), so soll es erstmal laufen. Für andere Vorschläge bin ich gerne offen.
-
Backtest
Ich kannte es auch noch nicht. Ist die Vorgehensweise denn generell zu empfehlen, oder nur wenn die MQ sehr schlecht ist? Wenn ich 90% habe, sollte es doch egal sein, oder?
-
EA Daily-Range
Ich habe jetzt mal eine Lotsize-Berechnung eingebaut. Man, man, man, .... hat mich einige (gefühlte) Lebensjahre gekostet. Hier der Code: // ----- // Diese Funkion berechnet die Lotgröße nach dem Fixed Fractional Ansatz. // Hierbei werden auch der Wechselkurs und CrossCurrencies mit betrachtet. // Der StopLoss wird immer in Pips umgerechnet => immer kleinster veränderbarer Wert. // DAX => 40 Punkte = 40 / TickSize = 40 / 0.5 = 80 Pips // GOLD => 20 Punkte = 20 / TickSize = 20 / 0.01 = 2000 Pips // EURUSD => 0.0020 Punkte = 0.0020 / TickSize = 0.0020 / 0.0001 = 20 (normale) Pips // ----- double calculateLotSize (double risk, double stopLoss) { double lotSize = 0; double moneyToInvest = 0; double aktuellerPreis = 0; string baseCurrency = StringSubstr (Symbol(), 0, 3); string quoteCurrency = StringSubstr (Symbol(), 3, 3); string accountCurrency = AccountCurrency(); double accountBalance = AccountBalance(); double minLotSize = MarketInfo (Symbol(), MODE_MINLOT); double maxLotSize = MarketInfo (Symbol(), MODE_MAXLOT); double aktuellerSpread = MarketInfo (Symbol(), MODE_SPREAD); // Wert eines Pips in zweiter Währung (bei USD immer 10) oder // bei CFDs Wert der minimalsten BEwegung, DAX = 12.50 bei 0.5 Ticksize double tickValue = MarketInfo (Symbol(), MODE_TICKVALUE); // Kontraktgröße in erster Währung double contractSize = MarketInfo (Symbol(), MODE_LOTSIZE); // Letzte Nachkommastelle des Underlyings (0.01 oder 0.0001) double tickSize = MarketInfo (Symbol(), MODE_TICKSIZE); // Wert eines Pips in AccountCurrency, also EUR o. USD bei einem Lot double singlePipValue; // Zu riskierenden Betrag berechnen moneyToInvest = (accountBalance / 100) * risk; // ----- // Wenn USD die erste quotierte Währung ist (USDJPY, USDCAD, USDCHF, ...), // teilt man ein Pip durch den Ask-Kurs und multipliziert das Ergebnis mit der Lotgröße. // Beispiel: Wenn USDCHF bei 1,4323 steht, ist ein Pip (0,0001 / 1,4323) * $100.000 = $6,98 wert. // Wenn USD die zweite Währung ist (EURUSD,...) ist ein Pip immer $10 wert. // Beispiel: Wenn EURUSD bei 1,4523 steht, ist ein Pip (0,0001 / 1,4523) = 6,89 Eur = $10 (6,89 Eur * 1,4523) wert. // Analog, wenn EUR die erste Währung ist... // ----- // FOREX-Markt if (isFOREXSymbol(Symbol())) { Print ("Lot-Berechnung für FOREX-Markt ..."); if (quoteCurrency == accountCurrency) { singlePipValue = contractSize * tickSize; } else if (baseCurrency == accountCurrency) { singlePipValue = contractSize * tickSize / MarketInfo(Symbol(), MODE_ASK); } else if (baseCurrency != accountCurrency && quoteCurrency != accountCurrency) { singlePipValue = contractSize * tickSize * MarketInfo(baseCurrency + accountCurrency, MODE_ASK) / MarketInfo(Symbol(), MODE_ASK); } } // CFDs else if (isCFDSymbol(Symbol())) { Print ("Lot-Berechnung für CFD-Kontrakt ..."); // 12.5€ beim DAX, 1 * Wechselkurs von €/$ bei GOLD singlePipValue = tickValue; } // Größe der Lotsize für FOREX-Markt + CFD-Markt identisch, wenn ich immer Stop in Pips umrechne (/tickSize) lotSize = NormalizeDouble (moneyToInvest / ((stopLoss/tickSize) * singlePipValue), 2); // Ausgabe, um Werte zu übeprüfen Print ("Symbol=", Symbol(), " Kurs=", Ask, " Spread=", aktuellerSpread, " Kontraktgr.=", contractSize, " SinglePipValue=", singlePipValue, " ", AccountCurrency(), " Risiko=", risk, "% StopLoss=", stopLoss/tickSize, " Pips"); // Durch den Broker festgelegte Grenzen einhalten if (lotSize < minLotSize) { return (minLotSize); } else if (lotSize > maxLotSize) { return (maxLotSize); } else { return (lotSize); } } Ich habe teilweise bei anderen etwas abgeschaut, überwiegend selbst überlegt. Viele Tests zeigen eigentlich, dass es auch jedem Markt funktioniert. Meine Frage ist nun, seht Ihr das genau so? Wo sind noch Fehler oder Verbesserungen im Code? Danke schonmal DT
-
Account Kopierer
Ich habe noch nicht ganz begriffen, was es genau macht. Kopiert es nur alle Files von einem Konto zum anderen ...
-
Account Kopierer
Bin durch Zufall drauf gestossen. Ich weiß zwar noch nicht, ob das Tool einen sittlichen Mehrwert hat, wollte s Euch trotzdem aber nicht vorenthalten Account-Kopierer Beste Grüße DarthTrader
-
IG Login Time
Ich habe alle Passwörter mit einem Masterpasswort versehen. So sollte er jedes Formular beim Aufruf der entsprechenden Seite direkt füllen. Leider macht er das bei IG nicht und fragt auch nicht, ob ich es überhaupt speichern möchte. Muss ich nochmal in den Firefox-Einstellungen nachschauen.
-
IG Login Time
Schön, dass gefällt mir. Hatte immer schon ein gutes Gefühl bie IG. Wenn ich jetzt noch das Anmeldepasswort und den Benutzernamen im Firefox speichern könnte ....
-
AIS1 Advanced Indicator
Wildes Teil, .....
-
EA Daily-Range
Ersetze den Code #inlude einfach durch den oben geposteten. Hier issser nochmal. Es ist einfach lesbarer, wenn man den Header in eine extra Datei auslagert. // Includes, werden als Code eingebunden #include <stderror.mqh> #include <stdlib.mqh> // Imports, jedes Modul, verwendet eigen Kopie davon. // Neue Versionen können separat kompiliert werden. #import "stdlib.ex4" string ErrorDescription (int error_code); #import #import "ITradeBox.ex4" int tbSendOrder (string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment, int magic, datetime expiration, int max_retries=-1); int tbCloseOrder (int ticket, double lots, int slippage, int max_retries=-1); int tbModifyOrder (int ticket, double price, double stoploss, double takeprofit, datetime expiration); void tbSetInformationLevel (int val); double tbGetVersionNumber (); #import Viel Spaß beim Testen DT
-
EA Daily-Range
Zum Trailing: du musst ihn ja nit auskommentieren, setz einfach den Parameter auf 0, dann ist das testen leichter. Klar, dafür ist ja die Abfrage > 0 da .... Habe noch einen Bug mit der ATR behoben ... ab dem Wert 2 wurden nur BUY Aufträge verarbeitet. DT_EA_DailyRange.mq4
-
EA Daily-Range
Muss es bei OrderModify nicht immer heißen Bid-TrailingStop*ticksize ... wenn ich einen TrailingStop setzen will bzw. Ask+... ? Ich setze doch denn Stopp vom aktuellen Preis entfernt? Hier würde ich den return value von tbCloseOrder nutzen. (es kann sein das die TradeBox aufgibt, und die ORder nicht geschlossen wurde): Warum gibst Du nicht True/False zurück, wäre doch einfacher zu handhaben? Den Wert bekommst du eh von CloseOrder wieder? Ach ja, ATR ist eingebaut. Natürlich sind es weniger Trades, aber dadurch fallen einige auch raus. Hab noch keine wirkliche Meinung, ob es etwas bringt, da der Testzeitraum zu kurz ist. Der Code des DT_Includes ist nichts anderes als das hier: // Includes, werden als Code eingebunden #include <stderror.mqh> #include <stdlib.mqh> // Imports, jedes Modul, verwendet eigen Kopie davon. // Neue Versionen können separat kompiliert werden. #import "stdlib.ex4" string ErrorDescription (int error_code); #import #import "TradeBox.ex4" int TBSendOrder (string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment, int magic, datetime expiration, int max_retries=-1); int TBCloseOrder (int ticket, double lots, int slippage, int max_retries=-1); int TBModifyOrder (int ticket, double price, double stoploss, double takeprofit, datetime expiration); void TBSetInformationLevel (int val); double TBGetVersionNumber (); #import TrailingStop ist eingebaut, aber auskommentiert, m.M. nach bringt der wenig, da Gewinne immer abgeschnitten werden, was meint Ihr? DT_EA_DailyRange.mq4
-
EA Daily-Range
Hardwaretechnische Details sind dann natürlich auch noch zu überlegen. Würdest Du denn eine VR-Server empfehlen? Ich meine, auf der anderen Seite, handelst Du eigentlich EAs automatisiert oder macht das generell jemand hier im Forum?
-
EA Daily-Range
Danke für den Code, werde ihn später einbauen. Trailingstops machen, wenn überhaupt nur bei Forex Sinn, so zumindest meine aktuellen Tests. Aber generell funktioniert das System auf dem Forex-Markt noch gar nicht. Entweder man schränkt die Zeiten zur Berechnung der Daily-Range ein, oder das RM/MM ist für den Markt noch ausbaufähig. Für den DAX und ich meine bei GOLD siehen die Ergebnisse sehr gut aus. Allerdings kann ich ja immer nur max. 3 Monate zurück testen, das die Daten der Kontrakte ansonsten nicht verwendbar sind. Kann man irgendwo die alten Kontrakte ausgraben und testen oder sich einen Continuous-Kontrakt zusammenbasteln. Ok, weitere Tests bzgl. dem Forex-Markt folgen. Mich interessiert noch folgendes: Was müsste für einen produktiven Einsatz noch an dem EA gemacht werden ?
-
Hallo Allerseits - Kurami33 ist hier
Bastel doch hier mit, wenn Du möchtest: EA-Daily-Range Beste Grüße Darth
-
EA Daily-Range
Ok, werde es testen, das könnte der Fehler gewesen sein. Muss ich denn dann nicht wieder den Trailingstop * 2 angeben. Also wenn ich 10 Punkte haben will muss ich 20 beim Dax angeben, da hier die Ticksize 0.5 ist?
-
EA Daily-Range
Habe jetzt erstmal den Trailing-Stop rausgenommen und folgende Stopps eingebaut: LONG-EXITs: - Schnitt der LowerRange (nach Definition) - Schnitt der UpperRange (wenn Trade nicht in die gewünschte Richtung läuft) SHORT-EXITs analog. Beim FDAX für März habe ich einen PF von über 2, sieht also sehr gut aus. Auch andere Werte sehen ganz gut aus. Für den Forex Markt musste man evtl. noch die Tradingzeiten anpassen oder die Berechnungszeit für die Range. Habe da noch keine richtige Idee. Haupthandelszeit ist ja 8-18Uhr für EURUSD, wenn ich es richtig gelesen habe. Ansonsten kann man konfigurieren, ob man nur einen Trade pro Tag machen möchte oder Wiedereinstige erlaubt sind. Es gibt also genug zum Testen ... Feel Free ... DT_EA_DailyRange.mq4 Noch eine Info. Die Datei DT_Include.mqh beherbergt einfach nur die Standard-Includes zur TradeBox. Leider darf ich sie nicht hochladen. Das müsste noch angepasst werden.
-
EA Daily-Range
Ok, habe den Fehler nicht gefunden, aber mit der TradeBox geht es nun. Leider tritt der Fehler nun beim OrderModify auf .... 2009.03.04 21:56:53 2009.01.28 21:36 TradeBox Ger30Mr09,M15: OrderModify error 130 Werde weiter forschen .... .... klar, kein gültiger Stop, der war zu nah am Markt nehme ich, obwohl 10 Punkte beim Dax ... ... Hm Stoplevel gibt mir 100 aus, sind damit 100 Ticks gemeint = 50 Punkte oder wirklich 100 Punkte ... beides ist für nen Trailing Stop recht viel ....
-
MQL Library mit Standardfunktionen
Ok, zweimal nachdenken hätte also geholfen. Jetzt muss ich wieder etwas Posten, damit ich wieder downloaden darf ...
-
MQL Library mit Standardfunktionen
Hm ... ok, ich hatte anfangs nur die 1.03 Version runtergeladen, warum auch immer. Jetzt habe ich die neueste genommen von: Library mit Standardfunktionen TradeBox.mq4 31st January 2009 - 11:09 PM Download Hier ist aber nur die 1.04 drinnen. Sehe ich die 1.06 nicht? Sorry für das Missverständnis...
-
MQL Library mit Standardfunktionen
Durch einen OrderClose-Fehler bin ich gerade einen Weg am implementieren, der auch dabei in einer Schleife solange versucht, die Order zu schließen, bis es gelingt. Denn das ist ja beinahe noch wichtige als das Öffnen. So etwas könnte man doch auch in die TradeBaox aufnehmen
-
EA Daily-Range
Ich sehe des öfteren im Log die Fehlermeldung: 2009.03.04 19:47:06 2009.01.22 16:20 DT_EA_DailyRange EuBundMr09,M15: unknown ticket 3 for OrderClose function Was kann das sein. In der Ergbnissliste wird die Order trotzdem geschlossen, im Chart habe ich allerdings keine ClosedOrder dazu, zumindest nur manchmal. Liegt es daran, dass ich den OrderTotals Zähler immer um eins erniedrige, wenn ne Order geschlossen wurde? Da in dem OrderTotal -Array nach Schließung einer Order, diese um einen Platz nach vorner rücken?
-
Hier bin ich...
Auch von mir ein willkommen an Bord. Vielleicht schaffen wir es ja doch einen Community EA zu erstellen, bei dem viele mitarbeiten ... Beste Grüße Darth
-
EA Daily-Range
Danke. Wenn man in eine Sprache reinkommen will, ist dies für mich sehr wichtig. PF = ProfitFactor := Win / Loss, Alleine ist er natürlich nicht so aussagekräftig, aber hieran sehe ich schon mal, ob ich Gewinne oder verliere. Ein PF über 2 ist schon sehr gut, pber 1.5 kann man damit arbeiten. Gibt es eigentlich Indis oder EAs, die mir weitere Statistiken bzgl. meines Systems anzeigen, bspw. Sharpe-Ratio oder den Fröhlich-Faktor, ... ? Tippfehler akzeptiert ... wird heute Abend geändert ...
-
EA Daily-Range
Ok, Version 1.2 ist aktuell. Verwende nun die TradeBox (sehr schöne Funktionen) Korrektur, möchte sie verwenden, aber wegen init() Funktion und Inputs noch nicht möglich. Siehe anderen Thread ... Aber die korrekte Serverzeit mit Hour() geht nun ... endlich ... Weiterhin ist der OrderTotal() Bug behoben. Man sieht deutlich, das der EA nun wie bei TS funktioniert, die Orders sind im großen und ganzen identisch, nur die Ausführung manchmal ne andere. Ein PF von 1.5 ist schon Ok für den Anfang. Jetzt ist Optimierung angesagt. Welche Ausstieg würdet Ihr empfehlen? Können auch Forex-Märkte gehandelt werden, mit anderen TRadezeiten und dann vielleicht auch Rangezeiten? Input ist gerne gesehen.... Nochmal herzlichen Dank an Mythos, ohne ihn wäre der EA noch nicht fertig, da die Programmierung in MT doch etwas gewöhnungsbedürftig ist. DT_EA_DailyRange.mq4