Alle Inhalte von Mythos
-
EA Daily-Range
SVN ist natürlich klasse, da du hier Versionen reinstellst, wärs trotzdem schön einen Header anzulegen, in dem du die Versionsnummer einträgst, dann ist es auch leichter abzugleichen ob alle über den gleichen reden ;) Es ist schwer eine vollständige Liste aufzuzählen. Errorhandling beim senden von Orders etc macht auf alle Fälle Sinn. Wenn du willst kannst du da die Funktionen von der TradeBox verwenden (hier im Downloadbereich), dort wird die Preis"normalisierung" und das Errorhandling bereits intern erledigt, was den Code ein bissl übersichtlicher macht. Ich werd das ganze auch mal testen (leider nur auf EURUSD), mal sehen wo die derzeitigen Fehler liegen. Noch ein allgemeiner Hinweis zum schließen von Orders: Wenn du in einer Schleife alle Orders aus der History durchgehst und teilweise welche schließt, musst du sehr aufpassen mit dem index. Wenn du die Order i schließt, rücken dadurch alle anderen auf, und das was vorher i+1 war, ist jetzt i. Gehst du also einfach weiter, überspringst du dabei manche order.
-
EA Daily-Range
ticksize: minimale Kursbewegung: beim FDAX 0.5, beim EURUSD 0.0001 Pointsize: kommastellen in denen der kurs läuft, hat nix direkt mit dem kurs zu tun und ist mitunter auch sehr unintuitiv (wenn man Handel mit dem FDAX gewohnt ist, und dann 2000 für einen 20 punkte SL eintragen muss ....) Naja, Random erzeugen wär nit so top, du musst die Order ja auch wieder erkennen. Mach dir einfach eine Konstante #define MAGIC_NUMBER 12345 Die gibst bei der OrderSend dazu, und mit OrderMagicNumber() kannst sie wieder abrufen. Damit kannst du dann mehrere EAs am gleichen Symbol im gleichen Account laufen lassen, ohne das sie sich beeinflussen (solang du in jedem EA eine andere Zahl bei der Konstanten nimmst ;)
-
EA Daily-Range
Als erstes: Find ich super das du den EA reinstellst! Das hilft sicher auch den anderen MT-Neulingen! Inwiefern andere Rangewerte ausgespuckt? Du führst das ganze bei jedem Tick aus, wenn du jetzt also einen Bar hast, bei dem gerade ein neues lokales Low entsteht, wird ab dem Moment, wo der kurs unter das aktuelle Low fällt, bei jedem Tick deine UpperRange ausgespuckt, und hier natürlich immer eine andere, weil ja das aktuelle Low nach unten wandert (und damit dazwischen auch anders ist, als am Ende von dem Bar (was dann im Chart angezeigt wird). Warum nur eine Order ausgeführt wird: Das eröffnen von mehr als einer pro Tag verhindert "schonGetradet", aber woher weiß die Variable wann ein neuer Tag startet und sie wieder false sein sollte? ;) Bei der Margin Berechnung blick ich noch nit ganz durch ;) Zahlst du beim FDAX immer nur 1000 Euro Margin pro Lot? Wär mir neu... Zum System: Soweit ich mich erinnere war der Ausstieg bei Open bzw. anderem Ende der Range, je nachdem was näher ist oder? Und wurde nicht "nur ein Trade in eine Richtung pro Tag"? Also wenn er zuerst nach oben läuft, umdreht ins SL und dann nach unten abmarschiert, kriegt er eine zweite Chance? I mein man kann natürlich das System auch einfach modifizieren, je nachdem was erfolgreicher ist ;) Ansonsten nur noch ein paar Anmerkungen: Noch zum Indi: du löscht beim deinit alle Objekte, obwohl du gar keine erzeugst ;) Also auch Trendlinien oder was auch immer der User selber einzeichnet. Zum EA: - Bid und Ask müssen nit Normalisiert werden, die sind direkt vom Server und damit auf "Kursniveau" ;) - Aufgrund deiner Defaults bei den Parametern: Du kannst auch intern die Ticksize des Symbols abfragen und damit die Entfernungen vom User in Ticks angeben lassen, ist meist intuitiver als in Points. - Ich würd empfehlen, dass du eine Magicnumber verwendest, um die Trades vom EA zu kennzeichnen. Derzeit würdest du am Abend alle offenen Orders in dem Account in dem Symbol closen, auch wenn sie händisch oder von einem anderen EA geöffnet wurden.
-
Funktionen aus Indikatoren aufrufen
MT Docu: iCustom damit kannst du auf alle Werte deines Indikators zugreifen, sprich der EA "öffnet" den Indi für sich und holt sich die Werte die er braucht.
-
Zugriff auf höhere Zeitebene (Intrady -> Daily)
Damit ist hast du immer den Open, High und Low vom Vortag in den Variablen, falls du das willst ist das korrekt ja ;) Du musst da eigentlich gar nicht auf Day() != lastDay überprüfen, denn iOpen(NULL,PERIOD_D1,1) liefert dir immer den Open vom letzen vollständigen Bar im Tageschart, also immer das Open des Vortages, egal wann du das am Tag aufrufst und ob du es öfter machst. Es ist in gewisser Weise gleich. Mit Open[x] kommst du genauso zurück, nur gibt es kein Open[x] of data2 etc. Hier musst du die Funktionen verwenden (iOpen etc) Im Prinzip, so wie es schon erwähnt wurde. Aber ich glaub du willst zB in einem 15Minuten Chart den EA laufen haben und herausfinden ob im Tageschart ein neuer Bar erzeugt wurde oder? Ich würds mit iTime(...,PERIOD_D1,0) machen: static datetime last_time=0; bool new_bar= false; if(last_time != iTime(NULL,PERIOD_D1,0)) { new_bar= true; last_time= iTime(NULL,PERIOD_D1,0); } else new_bar= false; Mit Bars greifst du ja nur auf die Anzahl Bars des aktuellen Charts zu, hilft dir also nix wennst was über einen anderen Timeframe wissen willst. HTH Ich hoff das beantwortet deine Fragen
-
Rent a Coder
Erstmal sorry für schlechte lesbarkeit, aber mein schädel brummt und ich hab heut schon zuviel code gesehen ;) Ich stimm mit DarthTrader überein, wir haben hier derzeit ein wunderbares "Klima", das man selten findet, und das obwohl es eine doch anschauliche Communitygröße hat. Und genau darum geht es für mich. In einem Board wo das Klima passt, wo Trader "höflich" Anfragen stellen, Probleme posten und man sich gemeinsam Gedanken macht (jeder halt wie er zeit hat), arbeitet man gerne mit und trägt seinen Teil bei. Als Coder kommt man vielleicht auf Ideen, oder hat Einblick in Tradingstrategien und Systeme die einen selber einmal nützlich sein könnten, als Trader hat man "schnellen" und qualitativen Support und Unterstützung bei Implementierungsfragen. Zu whipsaws "Ängsten": Sollte das Thema "zuspammen mit Anfragen" wirklich aktuell werden, hilft mMn sehr leicht eine Rechteregelung (die es mögliherweise schon gibt) wo man PMs nur von "trusted users" erhalten kann etc. Gegen Spam im Forum müsst ihr von der Moderatoren und Adminseite dagegenhalten, was derzeit offensichtlich wunderbar funktioniert. Bleibt das Klima so bestehen sodass sich die "Coder" untereinander ein bissl kennen und hier ein gegenseitiger Respekt herrscht und kein "Das is so falsch, du bist so blöd" daherkommt, hab ich keinerlei Bedenken das Coder abwandern oder sich nicht "outen". Schließlich freut man sich eher gleichgesinnte zu treffen mit denen man über Probleme diskutieren kann, und sicher auch über die Anerkennung und den Dank der Community wenn man mithilft. Zur Frage Bezahlung und Ausbeutung. Solche Dienste grundsätzlich "gratis" anzubieten ist natürlich immer ein gewisses Risiko. Vor allem wenn es total öffentlich passiert. Deswegen denke ich auch an solche "privat-threads" wo alle bereits beteiligten User ihr ok geben müssen wenn ein neuer dazukommt (damit sichert sich auch der Coder gegen Klau seiner "geheimen" Tools durch andere Coder). In solchen privat-threads fällt es einzelnen Tradern sowie Codern sicher leichter mehr Zeit und Arbeit zu investieren bzw. Systemideen preiszugeben, da geschriebener Code und dargelegte Strategien nur von den beteiligten gelesen werden können. Eine Absicherung für Trader gegen "Ideenklau-Coder" sollte dann über das Rechtesystem (Coder wird nur jemand der offensichtlich weiß was er tut UND bereits aktiv in der Community wissen geshared hat) und vielleicht eine Art Bewertungssystem (Oder nicht so heftig: hat man als Coder ein Projekt zur Zufriedenheit des Traders abgeschlossen, bittet man ihn einfach einen positiven Kommentar auf der persönlichen Seite zu hinterlassen, sowas sagt viel aus und ist vielleicht besser gegen missbrauch geschützt). Ich denke aber, das es eher wenige solche geheimen "Großprojekte" geben wird, sondern mehr kleine "öffentliche" Diskussionen zu den alltäglichen kleinen Problemen geben wird.
-
Rent a Coder
Hi, eine gute Thematik. Ehrlich gesagt bin ich persönlich kein Freund von "Systemprogrammieren nach Auftrag". Also wenn jemand mit einer Idee kommt und sagt "Programmier mir das für xx Euro". Ist meine persönliche Einstellung und AFAIK nicht weit verbreitet, aber ich bevorzuge hier eindeutig den offenen Austausch. Vor allem im Bereich Systemimplementierung. Hier gibt es keine klare Vorgabe, die man implementiert und fertig ist die Geschichte (zumindest für mich meist nicht). Sondern das ist ein "lebender" Prozess. Man implementiert mal die erste Idee, erkennt beim umsetzen schon gewisse Probleme (nicht alles, was man sich als trader vorstellt ist umsetzbar, bzw. in der umsetzung sinnvoll), durch die ersten Tests etc. entstehen dann viele Anpassungen, und Änderungen die alle miteingebaut werden sollten. Vor allem ist hier viel Kommunikation zwischen Programmierer und "Ideenlieferer" notwendig, wodurch zwischen den beiden eine gewisse "Grundharmonie" herrschen muss. Von dem her wäre ich für meinen Teil eher für einen Forenbereich, indem Systemideen und implementierungen diskutiert werden, sofern die Leute sie öffentlich preisgeben wollen. Vielleicht wäre es möglich den Spieß umzudrehen. Also nicht die Möglichkeit Coder zu "buchen" sondern Trader schreiben eine Overview zu der Idee, auf diese Overviews haben nur die Coder zugang. Und dann gibt es einen Diskussionsthread, wo der Trader die beteiligten Coder und andere Trader "freischalten" kann. Liefert also jemand eine Idee, und ich (bzw. ein Coder) kann mir vorstellen mit dem Trader zu arbeiten, hab gerade Zeit und die Idee vom System klingt machbar, dann meld ich mich bei ihm, und wenn er sich auch vorstellen kann mit mir zu arbeiten, schaltet er mich für den Diskussionsthread frei (Bei dieser Kontaktaufnahme bzw. in der Ideen beschreibung kann auch Thema Copyright,Bezahlung etc geregelt werden). Im Thread werden dann die Details diskutiert, Code hochgeladen etc., falls mehrere Coder an einem Projekt arbeiten kann man über Implementierungsdetails diskutieren etc. (so in der Art wies bei der MT Anomalia war) Die Thematik "Bezahlung" würde ich hier jedem Trader und Coder selbst überlassen. Schließlich bringen bei sowas beide Wissen ein.
-
Interessante Thematik - Berechnung der Profits im Bereich FX
Verwende doch einfach MarketInfo(Symbol(),MODE_TICKVALUE): "Tick value in the deposit currency" und MarketInfo(Symbol(),MODE_TICKSIZE) Zu den Lots: 1 Lot im EURUSD ist 100000, 1 Tick = 0.0001 ist 10 USD Wert. Die Tickvalue ist in dem Fall 10 USD. Die Pointvalue ist damit tickvalue/ticksize. Zur Lotsberechnung: Lots= Risiko/((Akt.Kurs - Stoppkurs)*(tickvalue/ticksize)) (Sofern ich mich nicht verdacht hab, was bei solchen Dingen häufig passiert....)
-
Ordnerverwaltung im MetaTrader
Soweit ich weiß, ist es genau so. Genau, es bleibt einem wenig anderes übrig. Sinnvolle Namensgebung, und notfalls eine Auslagerung der Dateien (also immer nur die im Ordner haben, an denen man gerade arbeitet, die anderen in einer externen Ordnerstruktur ablegen)
-
EURO-RACER
Das kommt mir extrem bekannt vor. Möglicherweise von der ATC 08, kannst aber nit garantieren. Ich hab mal ein simples RSI - Scalping System gesehen, das auf EURGBP genau in der Zeit arbeitet, und eben in der Demo und Backtest wunderbar arbeitet. Mal sehen vielleicht find ichs nochmal ;)
-
EURO-RACER
Real oder Demo? Das Problem bei den Uhrzeiten, ist ja oft, das man in real oft mit erhöhter Slipage rechnen muss aufgrund der niedrigeren Liquidität. Diese produziert aber höhere Vola wodurch solche "Scalper" schnell Gewinne machen, wenn es keine Slipage gäbe. Deswegen bin ich bei solchen "Nur overnight trading" eher skeptisch.
-
MQL Library mit Standardfunktionen
Wiedermal ein kleines Update auf 1.06 Dazugekommen sind ein paar logfunktionen, die die wichtigsten Infos über _geschlossene_ Orders in eine csv-logdatei schreiben. und die schon lange geplante Funktion zur Ausgabe des aktuellen Tages(als String), derweil in Englisch. freu mich wie immer über kommentare, Bugmeldungen, Wünsche etc.
-
EA und Indikator
Meines Wissens und Erfahrung nach beeinflussen sich Indikatoren und EAs überhaupt nicht. (wär auch sehr seltsam) Will man von einem EA aus auf einen Indikator zugreifen, muss man das im Source machen. Und dann ist es egal ob ein Indi am Chart ist oder nicht, der EA "öffnet" seinen eigenen Indikator und liest die Werte aus.
-
SL von man. Order automatisch nachziehen
Es sind ja schon ein paar Dinge angesprochen worden. Eine Frage: Welchen Zweck hat "Seconds()==01" bei dir? Wenn eine Order manuell ohne Stoploss gesetzt wird, wird der SL nicht nachgezogen ok, aber warum das "Seconds() == 01" ? Willst du nur jede Minute einen Alert rausschicken? Wenn der Anwender jetzt im Livetrading sitzt, und sich entschließt keinen StopLoss zu setzen und es kommt jede Minute ein Alert, schaltet er den EA nach 2 Minuten ab ;) Und: if(Bars>1) CheckForT2EURUSD(); CheckForT2GBPUSD(); CheckForT2USDJPY(); CheckForT2EURJPY(); CheckForT2USDCHF(); @jörg und die anderen MT4-Rookies: Welcher klassische Programmierfehler dürfte hier passiert sein? ;) Weils nicht im Übungsthread ist, gleich die Auflösung: Das if bezieht sich nur auf CheckForT2EURUSD(); , die anderen werden auch bei Bars Wobei ich zugegebenermaßen die Abfrage hier für sinnlos halte, Bars
-
EA Backtesting vs Live-Trading
Dein CalculateOpenOrders hat die Aufgabe zu überprüfen ob offene Orders da sind oder? Wenn es das nicht tut, solltest du nicht hergehen und versuchen die Module zu ändern, sondern das CalculateOpenOrders zu debuggen sodass es tut was es soll ;) zum zeitgleich: Egal wie schnell der EA abgearbeitet wird, es werden immer die Zeilen hintereinander ausgeführt, bei dir werden also keine Module "zeitgleich" bearbeitet, sondern hintereinander. auch wenn es im laufenden Betrieb zeitgleich wirken wird.
-
EA Backtesting vs Live-Trading
Inwiefern zeitgleich? parallel durch zwei EAs? das kannst schwer verhindern. Aber im EA hast du ja ein fixes hintereinander aufgrund des Programmablaufs. zb: start() bool order_sent = false; //blabla //Modul 1 if(!order_sent && andere Bedingungen) { if(OrderSend(.....)) order_sent= true; } //Modul 2 if(!order_sent && andere Bedingungen) { if(OrderSend(.....)) order_sent= true; } Damit garantierst du, das pro Durchlauf des Programms nur eine Order gesendet wird, beim nächsten Durchlauf gibt dir ja dann dein CalculateOpenOrders eine offene Order zurück (außer sie wurde gleich geschlossen) und du machst keine neue mehr. Löst das dein Problem?
-
EA Backtesting vs Live-Trading
Wenn ich das richtig verstanden habe, vielleicht hilft ein "flag" also einfach eine bool Variable "order_sent" oder so, die am beginn von start auf false gesetzt wird und nach einer erfolgreichen OrderSend auf true. und deine Module bekommen ein zusätzliches && !order_sent. Dann wird maximal eine Order pro Runde gesendet.
-
EA Backtesting vs Live-Trading
Welches Symbol war grau? Das mit dem "alten" Namen? Das wäre nicht verwunderlich , wenn du die mq4 umbenennst. Das Terminal braucht teilweise ein bisschen bis es checkt das neue EAs da sind, am besten den MT neustarten.
-
Ein Pokerspieler stürzt ab
Da geb ich dir Recht, solche Artikel sind meist ein "Der war gut, jetzt is ers nimmer. warum wissen wir nit oder wollen wir nit sagen"... Wenn man sich in dem Bereich ein bissl auskennt sind die immer sehr frustrierend. Liegt vermutlich daran, das sie für die breite Masse geschrieben sind, die meist nit mehr davon versteht als "Das sind Leute die mit Geld arbeiten".
-
Ein Pokerspieler stürzt ab
Naja schon oder? Es ist im Markt nichts passiert, was nicht von Anfang an als mögliches Risiko vorhanden war. Klar, es war unwahrscheinlich, aber nicht unmöglich. Wenn man es jetzt schafft, so zu traden, das so ein Ergeinis 1 Milliarde minus im Konto verursacht, heißt das für mich nix anderes, als das man sein RM völlig falsch angesetzt hat. Aber sowas passiert nunmal, wenn man in der einen Marktsituation groß und berühmt wird, und davon ausgeht das es so immer weiter gehen wird. Das Prinzip des hedgen ist so wie ich das mitbekomme ja nur mehr ein Modewort womit alle werben, was aber nur die wenigsten wirklich anwenden (können). Das er trotz Milliardenverlust noch als guter Trader bezeichnet wird ist natürlich nicht sein Fehler... Das find ich ja irgendwie noch ärger. Solche einstellungen ala "Er ist ein voll guter Trader, weil er hat davor soooo viel gewonnen, jetzt war halt der Markt gerade böse, da kann er nix dafür"... Hallo! Ein Trader ist dann ein guter, wenn er mit allen Situationen im Markt klar kommt, und nit nur Gewinne macht wenn der Markt zu seiner Strategie passt! Jeder kann schnell fahren wenn die Straße gerade ist....
-
EA Backtesting vs Live-Trading
Ich vermute, das am Beginn des Bars (wo der Close noch sehr tief möglicherweise unter dem open), ma auch kleiner als ma2 ist, jedoch am Ende des Bars eben nach oben läuft und damit die Bedingung am Ende des Bars nicht mehr erfüllt ist thx @Krümel fürs testen!
-
EA Backtesting vs Live-Trading
Ich kanns auch nur immer wieder betonen: Debugoutput ;) Wenn es sein muss, vor und nach (also in) jeder if-Abfrage, davor alle Bedingungen (gleichzeitig) ausgeben, in der if- einfach nur ein "drin ". und dann im Backtest, den visuellen Modus laufen lassen, bis zu der Stelle wo die Fehle-trades passieren, stoppen und den Output überprüfen, der ist eh schön mit TimeStamp wodurch man genau nachvollziehen kann, wann welcher output passiert ist. Ist zwar zugegebenermaßen aufwändig, aber dafür hat man dann volle Gewißheit was der EA tut und was nicht.
-
Wann habt Ihr das letzte Mal etwas Gutes getan?
Eine Betrachtungsweise inkludiert doch in gewisser Weise ein Wertesystem oder? Wenn man innerhalb eines Finanzsystems denkt, bzw. Finanzen also Grundlage für Freiraum ansieht, muss man im Prinzip nach finanziellem Freiraum streben oder? Aber was passiert, wenn man Freiraum und Wohlstand unabhängig von Finanzen betrachtet?
-
Wann habt Ihr das letzte Mal etwas Gutes getan?
Respekt, aber wenn du das jemandem sagst, der das kapitalistische System als Böse ansieht und damit natürlich auch traden, wird er es eher als teufelswerk betrachten als als gute Tat ;)
-
Wann habt Ihr das letzte Mal etwas Gutes getan?
Ich sehe ihr versteht mich ;) Ich glaube es gibt kein globales "Gut". Es gibt nur gut in einem bestehenden Wertesystem. Gut und Böse sind eigentlich fiktive, vom Menschen im erfundene Begriffe. Zum unterlassen: Wenn ich jetzt jeden Tag in der früh meine Katze (nein ich hab keine, ist nur ein fiktives Beispiel) aus Morgen-frust ärgere,trete whatever und das an einem Tag aufgrund einer "guten" Laune nicht tu ist das eigentlich schon eine gute Tat oder? Oder wenn ich nicht mit dem Auto sondern dem Rad zu Arbeit fahre... ist eine gute Tat für die Umwelt, wenn ich aber total verschwitzt (weil ich ja immer mit dem Auto fahre) den ganzen Tag im Büro sitze, ist wiederum keine gute Tat für meine Kollegen...