Alle Inhalte von Mythos
-
Feedback zur Forenstruktur
stören ist relativ;) Ich als Entwickler würd mich freuen wenn der MT Teil nicht nur ein Forum mit vielen Unterkategorien wär, sondern gleich auf der Startseite unterteilt. "Trading Desk", "Börse + Co" etc sind gleich schön aufgefächert, Bei MT (inwischen sind es eh schon 2, nimmer nur einer) wirkts so ein bissl wie die Tür ins Hinterzimmer. In der Bar reden wir übers traden, und im Extrastüberl dürfen die Freaks ein bissl übers coden diskutieren Hat jetzt nix direkt mit Struktur zu tun, aber: Das ganze "ungelesene Beiträge" Thema wiedermal: Das gelesene teils wieder ungelesen werden haben wir ja schon abgehackt, das Problem ist nur: Wenn man sich einloggt und es 200 neue Posts zu 20 Themen gibt, man aber nur die Zeit hat 10 davon zu lesen, sind beim nächsten Login trotzdem alle als gelesen markiert, man muss sich also selber aus den "Posts der letzten 24h" etc wieder zusammensuchen was man nit kennt. (liegt vermutlich wieder tief in der Software, da die ungelesenen vermutlich per "welcher Post liegt nach dem letzten logout von dem Typ" bestimmt werden (was natürlich gravierend Speicher einspart!). Die Frage ist, ob man hier die gesamte Software durchbohrt, oder vielleicht einfac nur das "neue Beiträge" wegtut. Ich glaub es tut keinem wirklich weh wenn er stattdessen halt "Posts der letzten 24 STunden" schnell zur Hand kriegt, und da die eh nach Zeit sortiert sind, halt selber schaut was neu ist. Dadurch wär das Problem aus der Welt ;) so, das wärs an Anmerkungen von mir.
-
Was gibt es hinter dem Tellerrand?
Wäre das wirklich der "Best Case"? Ich meine für uns ziemlich sicher, aber dieses Geradeziehen wär dann ja nur eine Festigung des Systems. man flickt einfach solange, bis die Karre wieder beschleunigen kann, und bei der nächsten Bremsung zerlegts es halt dann endgültig in alle Einzelteile. Ich glaub ein wichtiges Kriterium für ein "gutes" System ist ein vorhandenes, globales Gesellschaftsbewusstsein bzw. Moral. ok, klingt vielleicht falsch, was ich meine: Damit die Gesellschaft mit dem System chancen hat, muss es der Gesellschaft auch ein bissl um die Gesellschaft gehen. Wenn es jedem immer nur um sich und seine maximalen Profite geht, dann wird die Gesellschaft m.M. auf lange Sicht auseinanderbrechen und irgendwann kollabieren. Früher wurden uns solche Gesellschaftlichen Werte von "höherer" Hand gepredigt (Kirche etc.), da hat der einzelne zwar auf seinen Profit geachtet, aber auch immer auch nach links und rechts geschaut und (sicher oft gezwungernermaßen) auch mal den Armen geholfen. (Weil sonst kommt er ja in die Hölle ;) Aber jetzt sagt uns keiner mehr, das wir auch auf die Gesellschaft achten sollten, und nit nur den Gewinn maximieren... ich hab das Gefühl die Gesellschaft muss es ordentlich auf die Schnauze donnern, damit wir merken das es so doch nit geht, und die alten Werte (die derzeit als so unprofitabel und rückständig betrachtet werden) doch gelegentlich einen Sinn hatten. mM wär die Krise groß genug gewesen... es hätten nur die Politiker nit intervenieren dürfen ;) Ich bin voll deiner Meinung, es muss mM einen Totalcrash geben, damit sich wirklich was ändern kann. Denn egal welche Regulierungen etc. jetzt dazukommen werden, das Grundsystem bleibt das Gleiche, und so Regulierungen sind in 10 Jahren schnell wieder "veraltet und hinderlich". Hätte die Politik nicht so stark eingegriffen und wären ein paar Banken (also auch europäische Großbanken) zusammengebrochen, hätten wir mM einen schönen run-on-the-bank gehabt und in der Folge den Zusammenbruch vom Bankensystem. Globalisierung wär Geschichte, wir "kaufen" wieder beim Bauern in der Nähe, die Leute flüchten aus den Großstädten weil es keine Infrastruktur und Supermärkte mehr gibt etc. Wir wären wieder im Mittelalter, aber der Lerneffekt wär sicher größer ;)
-
Was gibt es hinter dem Tellerrand?
Geb ich dir Recht ich glaub auch, das jedes System gut und schlecht ist, je nachdem "wer" es verwendet, und wir Menschen beweisen regelmäßig, das wir auf die Dauer fast alles zu einem schlechten System machen Vielleicht gibt es aber eine Möglichkeit/System, wo man nicht von vornherein in die Krise gedrängt wird. Das derzeitige System wurde ja (brutal gesagt) von gierigen Menschen entwickelt und zielt darauf ab, das wenige profitieren. (Nein, nicht Verschwörungstheoretisch oder so, aber das Zinssystem wurde von den Banken "entwickelt", damit sie mehr Gewinne machen (bzw. überhaupt gewinne machen), nicht damit es den MEnschen besser geht ;) Ich hab ehrlich gesagt keine Ahnung, aber möglicherweise gibt es eine Möglichkeit, die zwar immer noch missbraucht werden kann, aber wo die allgemeine Grundrichtung besser ist. Das dürfte schwierig werden ;) Obwohl gewisse andere Kulturen ja zeigen, das der Mensch nicht unbedingt von Natur aus ein gieriger Einzelkämpfer sein muss. Vielleicht vertragen wir Menschen einfach keine "Zivilisation". Möglicherweise ist die beste "Systemalternative" eigentlich kein System, sondern der Rückzug aus der "Zivilisation" ;) Ich befürchte auch, das es keine Optimallösung gibt, aber es muss doch was besseres geben ;)
-
Was gibt es hinter dem Tellerrand?
Mal wieder eine (vielleicht etwas zu theoretische/philosophische) Frage von mir, als naiver Außenstehender (Vorweg: ich hab wenig Detailwissen über die Interna des Finanzsystems und verwend deswegen vielleicht manche Begriffe falsch, oder vermute Halb/Unwahrheiten, also einfach korrigieren ;) Unser derzeitiges Finanzsystem ist ja auf Zinsen aufgebaut oder? Und zu einem sehr großen Teil auch noch auf Krediten. Zinsen implizieren jetzt aber exponentielles Wachstum, wodurch alles, was über Kredit finanziert ist einen konstanten Wachstumsdruck aufweist. Die aktuelle wirtschaftliche Lage bestärkt mich in der Theorie, das dieses System auf lange Sicht immer wieder in eine Krise führen muss, da es nicht unbeschränkt exponentiell wachsen kann. Durch das starke Wachstum fällt diese Krise natürlich dementsprechend aus. Die Frage ist: gibt es Alternativen? Ich meine jetzt nicht zusätzliche Regulierungen, bessere Aufsichten etc. sondern komplett andere Systeme. Muss es in einem funktionierenden "Finanz"system immer "Zinsen" geben? Hat sich dazu schon mal jemand Gedanken gemacht?
-
Backtest
Im visuellen Modus, kannst du mit dem Regler die Geschwindigkeit einstellen, leider ist die Regelung scheinbar exponentiell und in höheren TimeFrames wirkt es sicher ein bissl in die Richtung "langsam oder Vollgas" aus. Mit Chart öffnen hab ich einfach nur einen normalen Chart im Metatrader gemeint.
-
Backtest
Öffne im MetaTrader mal den Chart von EURUSD im 30M TimeFrame und lass dir die Gesamte Zeitspanne über die du testen willst anzeigen. Der Strategietester verwendet AFAIK nur die bereits heruntergeladenen/gespeicherten Daten, hast du dir also bisher nur Daten ab dem 1.9.2008 angesehen (und der MT damit nur diese Daten geladen), dann kann der Strategietester auch nicht mehr verwenden. Scrollst du im normalen Chart aber entsprechend in die Vergangenheit (aM einfachsten mit der Home/Pos1 Taste), so lädt MT automatisch alle Daten nach die verfügbar sind. (siehst du auch schön unten rechts, wie der Download nach oben geht)
-
MQL Library mit Standardfunktionen
Ich kenn das Problem ;) Ich glaub es würde auch keinen Error produzieren, wenn man nur NormalizeDouble verwendet, da MT nur abfragt ob der Kurs den Digits entspricht. Aber da es immer so eine Frage ist wie mit halben Ticks von Serverseite her umgegangen wird, hab ich mir gedacht: "Wenn mans selber macht, weiß man was passiert" ;) Btw: Find ich klasse, das es noch jemand gibt der den Code kritisch beäugt! Big Thx!
-
MQL Library mit Standardfunktionen
Du meinst NormalizeDouble? EDIT: ok, hab grad dein Edit gelesen ;) Ganz einfach: Bsp FDAX / Ger30. Ticksize 0.5, Digits: 2. Mach ich also einen reinen NormalizeDouble, wird ein Kurs von 3500,2345 zwar auf eine "Systemfähige Zahl" angepasst, aber keine "handelbare". Ich wollte aber von Anfang an nur Preise in ganzen Ticks in den Markt schicken. Edit2: Weiterer Grund: ich will selber entscheiden ob ich auf- oder abrunde ;) Inzwischen hab ich aber auch noch ein NormalizeDouble auf den fertigen Wert eingebaut, damit sicher keine Probleme mit der Gleitkommadarstellung von MT passieren (was ja leider nicht selten ist).
-
Backtest
Was ich gemeint hab ist das optimieren der Parameterwerte für einen EA. Du kannst im Strategietester, beim Input der Parameter für jeden Parameter: links die Box anhacken, dann die Spalten "Anfangswert","Schritt","Stop" ausfüllen. Bedeutung: der Parameter wir bei der Optimierung je mit allen Werten von "Anfangswert" bis "stop" getestet wobei die Schrittweite "Schritt" beträgt. Anfangswert = 1, Schritt = 2, Stop = 7 bedeutet die Werte 1,3,5 und 7 werden getestet. Wird das für mehrere Parameter gmacht, so werden alle Möglichen Kombinationen dieser Parameterwerte getestet. (können sehr viele werden) Nun einfach im Strategietester die Box "Optimierung" anhacken und auf "Anfangswert" klicken. Dann rechnet er alle durch und gibt in "Optimierungsergebnisse" eine Liste mit den Ergebnissen aus, also für jede Kombination zB den Profit, den Profitfaktor, DrawDown etc. in der letzten Spalte stehen dann die PArameter die für die jeweilige Zeile verwendet wurden. Das Thema Overfitting und die ganzen Backtest- bzw. Optimierungsfallen würden glaub ich einen eigenen Thread füllen. Derweil nur soviel: Es ist definitiv Vorsicht geboten ;) Techniken wie Cross-Validation /Out-of-Sample tests, Clustering können hier sehr viele Fehler ausgrenzen, und nicht zu vergessen die logische Kontrolle ;) Sorry wenn alles windisch klingt, aber bin heute schon zu lang zu aktiv ;)
-
Backtest
Whipsaw hat im Wesentlichen eh schon alles gesagt ;) Im Strategytester einfach alles einstellen (auch Startkapital etc.) Bei der Modellierung am besten immer "jeden Tick" verwenden. Nach dem Durchlauf hast du eine Graphische Darstellung der Equity, die gesamte "TradingHistory" des Tests und einen "detailierten" Report über die wichtigsten Kennzahlen. Am besten einfach selber ein bissl spielen, wenn Fragen auftauchen einfach Fragen ;) Willst du eigentlich nur mit einer speziellen Parameterkonfiguration testen oder den EA "optimieren"?
-
Woher nimmt der Staat eigentlich das Geld?
Nur damit ich das richtig verstehe: Das heißt der Staat holt sich Geld vom Kapitalmarkt, um Geld in den Kapitalmarkt zu pumpen damit er wieder in Gang kommt? Soweit ich das verstanden habe war/ist ein Grund für die Krise, das sich niemand mehr etwas leiht... Also leihen wir es dem Staat, damits der Staat dann denen gibt, denen wirs nicht geben wollen? keine weiteren Fragen! Schon klar, man borgt es lieber dem Staat weil der nicht so schnell pleite geht wie Island ;) aber trotzdem... Im Endeffekt ist es nur ein schönes Geld-im-Kreis-verschieben und jeder der weiterschiebt verdient ein bissl was an Zinsen... und der Steuerzahl darfs dann blechen... Wunderbar! In Summe bedeutet das ja eigentlich dann, das plötzlich jeder Staatsbürger (indirekt über die Steuern etc) stark am Kapitalmarkt investiert ist oder? War doch das Credo der letzten Jahre "Ihr Onkel hat Aktien, schlafen Sie noch?" ;) So haben sie sich das vermutlich nit vorgestellt *G* Und ja, auch die Alpenrep. hat ein Konjunkturpaket... soweit ichs halt gehört hab ;) Is wie Weihnachten, jeder hat ein Packet, und keiner freut sich wirklich drüber
-
Woher nimmt der Staat eigentlich das Geld?
Ich hätte da mal eine Frage: Man hört jetzt von so riesen Rettungspaketen, und das die Staaten mehr Schulden machen etc. Aber woher haben/nehmen die Staaten eigentlich das Geld für diese Rettungspakete? Von den Banken? (Also leiht man sich Geld von den Banken um den Banken Geld zu geben? ) Von anderen Staaten? (Die ja eigentlich auch alle in der Krise sind? ) Oder ist es nur am Papier ein: "Wir haben ein Budgetdefizit von xx Milliarden mehr weil wir so und soviel an die Banken überwiesen haben" aber wirklich Schulden tut man es niemandem? Bzw. Werden dann halt einfach sonst keine Rechnungen gezahlt und man hat dadurch Schulden bei den anderen Staaten und kann somit nur Rettungspakete in maximal der Summe der Staatseinnahmen geben? Kennt sich da vielleicht jemand aus?
-
Einstieg zu MT4 Programmierung
Hier hängt es davon ab, welchen Standard-Indikator man verwendet. iMA (also ein Moving Average) kann zB folgende Mode-Werte haben: MODE_SMA - Simple moving average, MODE_EMA - Exponential moving average, MODE_SMMA - Smoothed moving average, MODE_LWMA - Linear weighted moving average Welche Mode-Werte verwendet werden sieht man jeweils in der entsprechenden Hilfe. MfG
-
"Tom-Next Codingconvention"
Stimmt, das sollte auch in die "Empfehlungsliste" ;)
-
"Tom-Next Codingconvention"
i bin für beides. Dann weiß man sofort wenn man ein file herunterläd bzw. nur online den Dateinamen sieht. Eine allgemeine Kurzbeschreibung im Header find ich super! stimmt sorry, hab beim tippen nit mitgedacht ;)
-
"Tom-Next Codingconvention"
Da ich absolut keine Ahnung habe, wo der Thread am besten hingehört, start ich ihn einfach mal im Allgemein. Ich start einfach mit einer Diskussionsgrundlage: Dateinamen (wie von FinGeR vorgeschlagen): Der erste Buchstabe identifiziert den Typ: Indikatoren ... "iMeinIndikator.mql4" Experts ... "eMeinEA.mql4" Script ... "sMeinScript.mql4" Includedatei ... "hMeineInclude.mql4" Library ... "lMeine Lib.mql4" (das ist ein kleines L) Zum Code selber: " /* */ " Kommentare werden nur zum debuggen verwendet und bleiben nicht dauerhaft im Code. Vor jeder Funktion gibt es einen Kommentarblock, der kurz die Aufgabe der FUnktion beschreibt, und Information über die Parameter und den Rückgabewert enthält. Kommentare und Variablennamen werden grundsätzlich in englisch/deutsch geschrieben (an sich wird immer englisch verwendet, ich finde aber, das man in einer deutschen Community auch ruhig sich auf deutsch einigen sollte) Alle Funktionen aus einer library beginnen mit einem eindeutigen Identifier der Library (wie zB "tb" für TradeBox) Zu den Variablen/Funktionsnamen im speziellen: durch #define definierte Konstante in Großbuchstaben mit Underlines globale Variablen durchgehend klein, mit underlines und einem Underline am Schluss lokale Variablen durchgehend klein mit underlines ohne abschließendem underline Funktionsnamen mit kleinem Anfangsbuchstaben und rest Kapitälchen Parameter beginnen mit großem Anfangsbuchstaben und Kapitälchen (oder underlines?) Zum allgemeinen Stil: Variablen werden direkt bei der Deklaration initialisiert, auch wenn es eine Dummy-initialisierung ist. es sollten sprechende Variablennamen verwendet werden (int i,j,k; ist nicht sprechend ;) Es ist auf korrekte Einrückung zu achten (if und zugehörige else immer auf der gleichen Einrückungsstufe, innerhalb von Blöcken wird eingerückt etc.) zwischen Funktionen zur leichteren Lesbarkeit "//------" Das ist soweit eigentlich ein Auszug aus der Codingconvention für C++ wie ich es gelernt hab auf der Uni ;) Bis jetzt hab ich damit recht gute Erfahrungen gemacht. Aber ist wie gesagt nur eine Diskussiongrundlage. Ich denke diese Codingconvention sollte auch keine Liste von Ver- und Geboten sein, sondern nur eine Liste von Empfehlungen wodurch gemeinsamer Code bzw. hier veröffentlichter Code für die anderen schneller lesbar wird. So Sachen wie "Funktionen dürfen nicht mehr als 75 Zeilen haben" etc. würd ich sagen lassen wir weg ;) kleines Beispiel: #import "lTradeBox.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); #import #define MAGIC_NUMBER 1 #define ALLOWED_SLIPAGE 3 extern int ParameterEins = 0; extern string NameOfSymbol = "EURUSD"; double global_stop_=0; //---------------------------------------------------------------------------- // berechnet den neuen Stop und macht Requotes // @param foo: beschränkt die Anzahl der Requotes // @param bar: der neue Stop // @return: Wert des neuen Stops double newStop(int foo, double bar) { int lokale_variable=0; double temp_stop=1.0; if(bar < 0) { Print("RTFM"); return(0); } else { temp_stop= bar; } for(lokale_variable= 0; lokale_variable < foo; lokale_variable++) { RefreshQuotes(); temp_stop= MathMin(temp_stop,Bid); } return(temp_stop); } //---------------------------------------------------------------------------- int start() { global_stop_= newStop(1,global_stop_); tbSendOrder(Symbol(),OP_SELLSTOP,1,Bid,ALLOWED_SLIPAGE,global_stop_,0,"Demo Order",MAGIC_NUMBER,0,-1); return(0); }
-
MQL Library mit Standardfunktionen
Version 1.03 ist online. Ich hab die Preisnormalisierung geändert sodass jetzt nicht mehr MathMod verwendet wird. Zusätzlich gibt es jetzt ein "INformation Level" in der TradeBox, damit kann man von außen steuern, wieviel Output man haben will, von 0 (also auch keine alerts) bis hin zu zusätzlichem Debugoutput. Bei TBOrderSend kann man nun auch die Anzahl der Wiederholungen einstellen. (-1 für maximal) Weitere Details im ChangeLog Wenn jemand die Zeit und Lust hat das ganze zu testen oder durchzuschauen freu ich mich natürlich.
-
Einstieg zu MT4 Programmierung
Dafür! Man könnte auch gleich eine kleine Codingconvetion für die Variablen/Funktions/Konstantennamen etc einführen... sowas macht den Code wesentlich lesbarer.
-
Einstieg zu MT4 Programmierung
Gute Idee, sollt ich auch anfangen ;) sicher? die ganzen PERIOD_... sind IMO vordefinierte Konstanten (so wie PRICE_CLOSE, MODE_SPREAD etc...) (die wichtigsten vordefinierten Konstanten (ich glaub sogar alle) findet man auch wieder in der Hilfe unter "Standard constants"). Sprich wenn man PERIOD_M1 schreibt, steht effektiv für den Compiler eine 1 an der Stelle.
-
Einstieg zu MT4 Programmierung
Die gesamte Liste, mit Beschreibung findest du in der MT-Hilfe (Im MetaEditor unten in der "Symbolleiste" auf den Reiter Hilfe, und dort "Technical Indicators" Dieses SyntaxHighlighting hat mit dem programmieren selber nichts zu tun, es ist nur als Hilfe für den Programmierer gedacht um beim coden/lesen eine bessere Struktur im Code zu haben und sich leichter zurechtzufinden (Kommentare sind "blasser", Datentypen, Build-in Functions, Konstante hab je eigene Farben...)
-
Einstieg zu MT4 Programmierung
kleine Ergänzung (Mythos will auch groß mitreden ): wie man hier auch schön sieht, muss der Wert, der einer Variable zugewiesen wird, keine beim programmieren reingeschriebene Zahl sein (wie beim initialisieren int pommes=1;), sondern kann auch der Rückgabewert eine Funktion sein, das passiert sogar meistens: a= b+c; selbst hier wird der Variablen a, der Wert zugewiesen, den die "Plusfunktion" zurückliefert. In MQL geht das leider nicht, aber zB in C++ könnte man selber Operatoren wie "+" definieren, dann würde "a + b" plötzlich bedeuten was man will aber das ist eine andere Geschichte ;)
-
Einstieg zu MT4 Programmierung
Vorsicht: nicht alles was von {} umgeben ist, ist eine Funktion ;). Im Allgemeinen definieren { } nur einen gemeinsamen Codeblock. Bsp if: Normalerweise bezieht sich if nur auf die nächste "Zeile"/Anweisung/Block, umschließt man die Anweisungen nach dem if mit { ... }, so gilt dieser gesamte Codeblock als "eine" Codezeile bzw. eben Codeblock. Wann immer also eigentlich etwas nur für eine Zeile gilt, kann man diesen Geltungsbereich durch {...} auf den gesamten, von den Klammern eingeschlossenen, Codeteil ausweiten. hmm ich hoff mein gequassel hat jetzt niemanden mehr verwirrt als vorher ;) Was ich eigentlich gemeint hab: Gratuliere, beide Fehler gefunden
-
Interview mit Patrick Hahn, X-Trade Brokers
Wennst noch Programmierer brauchst meld dich. Vor allem wegen dem was Krümel schon gemeint hat: Wenn dann ein Kunde mit einem wirklich guten System kommt, verwendest es gleich selber mit ;) bzw. baust dir dann aus den verschiedenen, teils sicher guten Ideen der Kunden ein gutes Gesamtsystem. (Obwohl nur andere EAs schreiben bei den Preisen eh schon genug bringt, aber man muss das Geld ja irgendwo anlegen ;) Was mich nur immer so schockiert bzw. traurig stimmt ist: Es gibt viele Trader, die gute Ideen haben die sie mal automatisieren wollen, aber einfach nicht die Zeit/Fähigkeiten haben um das selber zu machen. Die fallen dann schnell auf solche Angebote rein, weil seriöse Dienstleistungen in dem Bereich findet man glaub ich selten bis gar nicht...
-
Nützliche Tipps rund um die Boardsoftware
Jup, jetzt find ich auch den Eintrag im UCP, danke!
-
Nützliche Tipps rund um die Boardsoftware
Ähm, wenn ich auf den Link klicke kommt was mach ich falsch?