Alle Inhalte von Mythos
-
Kursdaten beim Meta-Trader 4
ich hab mal ein Skript von MetaQuotes für mich umgeschrieben. Find das Original grad leider nit und auch nit die Zeit es detailiert zu erklären (aber mit ein bissl MQL Kenntnissen müsste es selbsterklärend sein): MakeHistory.mq4
-
Problem beim Auslesen eines Custom Indicators
eiei, das is/war aber ein fieser Fehler... Der Wert den du rauskriegst ist der EMPTY_VALUE, warum du in rauskriegst: du greifst immer auf den wert des aktuellen Bars zu (ob das sinnvoll ist, ist eine andere Frage), schau dir mal im Indikator an, was passiert wenn du den Wert für den aktuellen Bar (also shift = 0) berechnest. Fällt dir was auf? ;) (wenn du mit "b4" "before" meinst dann ist shift-1 die falsche Richtung, der vorige Bar ist shift+1 ;) Aufruf vom Indi etc. "passt". Ich würd überlegen ob shift 0 wirklich Sinn macht, der Wert ändert sich ja noch. Und dein Debugoutput "...zum Preis von " ist hoffentlich nur so geschrieben, weil der Wert den der Indi ausgibt ist ja nur auf dem Preislevel damit der Punkt direkt über/unter den Bar gezeichnet wird oder?
-
Update von Windows 7 Home Premium auf Windows 7 Ultimate
Neuinstallation hat einwandfrei funktioniert, jetzt heißts halt wieder Programme installieren... mal sehen ob ich einen Unterschied zwischen Home Premium und Ultimate merk ;)
-
Update von Windows 7 Home Premium auf Windows 7 Ultimate
folgendes Problem: Ich hab auf meinem neuen Notebook Windows 7 Home Premium installiert. Über die Uni krieg (hab ich bereits gekriegt) ich günstig ein Windows 7 Ultimate Upgrade. Wenn ich jetzt aber die aktuelle Version auf Ultimate hochstufen will sagt er im Setup "wenn du von Windows 7 auf Windows 7 Version updaten willst, verwende das Anytime Upgrade". Beim Anytime Upgrade kann man entweder einen Key online kaufen (in Ö geht nicht mal das) oder einen Key eingeben. Aber das ist offensichtlich nicht der ProductKey von meiner Windows 7 Ultimate CD :( Hatte das Problem schonmal wer? Neuinstallation wär der nächste Versuch (bei Windows ja nix ungewöhnliches) aber i wollt mir eigentlich das Neuinstallieren aller Programme ersparen
-
Erste Gehversuche in MQL
Für solche Fälle gibt es bei den Indis die Funktion SetIndexEmptyValue(..) bzw. als default für diesen Wert die EMPTY_VALUE (MetaEditor Hilfe weiß mehr: Empty values werden nicht gezeichnet ;), die hilft dir da sicher weiter.
-
Problem beim Auslesen eines Custom Indicators
Hallo Heinz, Zuerstmal Hilfe zuer Selbsthilfe ;) : Wenn du den Indikator auf einen Chart ziehst und dann ins Datenfenster schaust (Strg + D) siehst du welche "Linien" der Indikator zeichnet (vor allem wieviele und welche Werte sie wann haben). Diese Werte kannst du (wie du es schon richtig versucht hast) per iCustom(...) auslesen wobei der vorletzte Parameter angibt welche Linie dich interessiert (durchnummeriert, startend bei 0) und der letzte Parameter gibt an von welchem Bar (als Offset vom aktuellen, also aktueller Bar = 0 etc) du den Wert willst. In deinem Fall ist die "Linie" vom Indikator keine wirkliche Linie (sondern nur die paar Punkte) aber dich interessiert hier ja auch nicht welchen Wert der Punkt hat, sondern ob es einen Punkt gibt (Wert != 0) oder eben keinen (Wert = 0). Hilft dir das weiter?
-
Erste Gehversuche in MQL
ja, sie erhalten als Zahl den aktuellen Offset des Balken. Wenn also jetzt beim vorletzen Balken (also 1 Balken zurück) ein Hammer entdeckt wird, dann erhält der das Objekt "Hammer 1". Jetzt geht der aktuelle Balken (Offset 0) zu Ende und sobald der nächste Balken startet (und der Balken wo "Hammer 1" steht jetzt Offset 2 hat) bemerkst du zB das der Balken der gerade fertig wurde (also Offset 1) jetzt die Kriterien für einen Hammer erfüllt, dann willst du für diesen Balken ein Objekt mit dem Namen "Hammer 1" erzeugen. Das gibts aber schon und du wirst einen Fehler bekommen. Sprich wenn der Indi lang läuft, und "Hammer 1" und "Hammer 0" erzeugt sind, werden keine neuen Hammer mehr "erkannt" weils die Objekte ja schon gibt und somit nicht nochmal gezeichnet werden können. Was noch dazukommt: beim Balken der sich im entstehen befindet, musst du, falls du den betrachtest, auch eine Möglichkeit einbauen das Objekt wieder zu löschen wenn die Kriterien für einen Hammer nicht mehr erfüllt sind. Und um den Indikator von einem EA aus zu verwenden, bringen dir Objekte nit wirklich was. Da macht es mehr Sinn den Indikator eine Linie zeichnen zu lassen, die 1 ist wenn eine Hammer erkannt wurde und 0 sonst. Nur als kleiner Tipp falls du den Hammer später automatisiert weiterverarbeiten willst.
-
Erste Gehversuche in MQL
nimm einfach statt der Bezeichnung "Hammer" den String den du verwendest wenn du das Objekt erzeugst ;) wegen iterieren: heißt nix anderes wie "alle Objekte durchgehen". ObjectsTotal() gibt dir die Anzahl aller Objekte und du könntest alle durchgehen (über alle iterieren) und löschen welche du willst. Aber da du ja genau weißt welche du erzeugst, machts mehr Sinn diese direkt zu löschen. Noch was zu deiner Objekterzeugung: Überleg dir mal kurz was in folgendem Fall passiert: Du ziehst den Indi auf den Chart, der aktuelle Balken ist ein Hammer, Objekt wird erzeugt etc. Es kommt ein neuer Balken dazu der auch ein Hammer ist. Welches Objekt wird jetzt erzeugt (wie heißts)? Gibts dieses Objekt in dem Moment schon? Führt das zu einem Problem? HTH
-
Erste Gehversuche in MQL
liegt daran das du nas Symbol "Hammer" löscht, aber Symbole "Hammer1"... malst. (im deinit fehlt beim Symbolnamen das i dazu) bzgl direkt auf die Balken. Du malst es derzeit aug High + 10*Point, das is recht eng. versuch hier mal andere werte bzw. verschieb das Symbol händisch dorthin wo es soll und sieh dir dann an welche Parameter es hat. HTH
-
{abgetrennt} MQL Einsteiger -> Code für Indikator Ebene
ich wollte dich auf keinen Fall veräppeln. Ehrlich gesagt hab ich mich eher veräppelt gefühlt. Du hast eine Frage gestellt, wir haben sie beantwortet. Zugegeben es wurde keine vorgekauter Quellcode gepostet, aber (speziell bei solchen Fragen) lernt man mMn mehr wenn man die Richtung erhält und es mal selber probiert, als wenn einem ständig ein anderer alles vormacht. (Vor allem ist es schlichtweg unmöglich alle derartigen Fragen im Forum mit fertigem Source zu beantworten, da man dann aus dem coden nicht mehr rauskommt, und sobald man fertig ist kommt eine neue kompliziertere Frage....) Versteh mich jetzt bitte nicht falsch: merkwürdige Fragen sind absolut kein Problem bzw. dafür ist das Forum in gewisser Weise da (und Fortgeschrittene stellen oft viel merkwürdigere Fragen ;). Wichtig ist was nach der Frage (bzw. dem ersten Wink/Hinweis in die richtige Richtung) kommt. Das Forum ist keine Einbahn, es geht um das hin und her. Also Frage hin, Antwort/Hinweis um selber draufzukommen zurück, "Zeichen guten Willens"/erster Codingversuch/unverstandenes Nachfragen etc. hin, Verbesserungsvorschläge etc retour... Aber wenn auf die Antwort einer Frage, bzw. dem Hinweis wie man es macht ein schlichtes "Das ist keine Antwort auf meine Frage" kommt, sinkt (bei mir zumindest) die Motivation sich weiter damit zu befassen gravierend. Warum ich aktuell nicht mehr geantwortet habe: ganz einfach du hast mich darum gebeten und ich wollt diese Bitte respektieren. Naja ein paar kennst du wohl, und mehr kann der Henrik ja auch nit :wub:
-
Erste Gehversuche in MQL
Servus, erstens: gute Besserung ;) zum Code: vorab zwei Bemerkungen: 1. wenn du statt den code-tags mql-tags verwendest bläht sich der Thread nicht so auf (nur ne Anmerkung) 2. beim Code selber: wenn du int counted_bars=IndicatorCounted (), //---- limit, i=0; schreibst ist das zwar vom compiler her korrekt, aber einerseits schwer lesbar, andererseits risikierst du spätere fehler die du dann lang suchst (zB wenn du auf die Idee kommst vor Limit und unter den Kommentar ein Statement zu schreiben). Denn eigentlich steht in den 6 Zeilen da oben ja genau das: int counted_bars=IndicatorCounted (), limit, i=0; zu deinem Problem: schau dir mal genau deine while Schleife im main an. die Bedingung (i was noch "unschön" ist: im deinit löscht du alle Objekte die du erzeugst, soweit schön, aber du schaust nit ob du sie tatsächlich erzeugt hast (oder sie inzwischen vom User gelöscht wurden etc), versucht also möglicherweise Objekte zu löschen die gar nicht da sind... detto beim erzeugen: wenn du erzeugst bei jedem durchlauf von main die gleichen Objekte. Hier wär eine Abfrage ob das Objekt nit schon da ist besser, am besten mit ObjectFind(...) HTH
-
Erste Gehversuche in MQL
Ich würd sagen beim Indikator ;) Den Moving Average als Vorlage verwenden und sich so rantasten ist ja schon ein guter Anfang. Bei Fragen einfach fragen.
-
Verstärkung des Teams - Herzlichen Glückwunsch an Henrik und Mythos
Erstmal danke whipsaw für die schönen Worte, da wird man ja ganz verlegen ich freu mich natürlich über die Beförderung, aber wie schon oft erwähnt: Das Board lebt von den aktiven Usern und nicht so sehr von den Mods. Insofern werd ich versuchen hauptsächlich ein aktiver User zu bleiben und bei Bedarf "phösen Jungs" auf die Finger hauen *ggg*. (Vor allem bei den ganzen neuen Buttons und Anzeigen muss ich mich eh erstmal zurechtfinden ;) ja klar, bin da nicht so hacklig ;) Jein, ich arbeite derzeit nebenbei und bin dadurch teils (so wie gestern und heute) den ganzen Tag in der Firma von wo aus ich normal nicht ins Netz geh (bin auch gleich wieder weg ;). Und gestern abend hat mir meine Freundin den PC vorzeitig ausgeschalten... *g* also zu mir hat letztens ein Freund einer Freundin nach 20 Minuten smalltalk gemeint "Du bist vielleicht ein Nerd" (aber er hat das irgendwie positiv gemeint) ;) Also ich bins gewohnt als vollnerd bezeichnet zu werden, gehört vermutlich zum Berufsbild ;)
-
Minilot, Microlot, Nanolot
Fände ich persönlich schade, vor allem weil ich Tom-Next nicht unbedingt als elitäre Gemeinschaft betrachte. Alle Broker die Cent-Konten anbieten (hier gibts irgendwo einen Thread dazu), zB MasterForex, LiteForex. Du kannst dort zwar nicht 0.001 Lot handeln, aber am Centkonto ist 1 Pip bei 1 Lot 10 Cent Wert statt 10 Dollar, sprich 0.1 Lot am Cent Konto entsprechen dann 0.001 Lot auf einem realen Konto.
-
Minilot, Microlot, Nanolot
Natürlich ist es nicht egal. Aber einem guten Systementwickler sollte es um die relativen Zahlen gehen und nicht um die absoluten. Sprich für einen "guten" Entwickler ist es egal ob das System auf Nanolots den max DD aus dem Demo im Realen wegraucht, oder ob es das auf normalen Lots macht. Und ja, ATS im Realen laufen zu lassen ist auch Stress, aber der Stress beruht nicht auf der Positionsgröße/dem gefahrenen Risiko, sondern auf der Frage "läufts oder läufts nicht". Um ein skalierbares System zu entwickeln muss man eben auch dementsprechend denken. Und da es dem System egal ist ob es auf Nano oder vollen Lots läuft, macht es mMn sehr wohl Sinn neue Systeme auf Nano zu testen. Weil wenn man einen Effekt des Realtradings übersieht, sich der Markt ändert oder was weiß ich und man dadurch beim ersten Realtest Verluste macht, dann lieber 1 Cent pro Pip als 10 Dollar pro Pip. Natürlich, wenn man ein erfolgreicher Trader ist und das Konto läuft (und man das notwendige Kapital hat) macht es keinen Sinn mit kleineren Positionen zu handeln, aber es steigt nunmal nicht jeder als Profi ein.
-
Erste Gehversuche in MQL
es gibt da schon Gründe. Einer ist das gleichmäßige Verhalten vom Indi. Wenn jemand anderes (oder du in 1 Jahr) den Indi verwenden will rechnet er eher damit das alle Bars (auch der aktuelle) berechnet wird, sprich das alle Bars im Chart gleich behandelt werden. Das es vielleicht wenig Sinn macht den Wert vom aktuellen Bar zu verwenden ist eine andere Frage. Zusätzlich ist folgendes: Ich bin mir jetzt nicht 100% sicher wie MT das mit dem IndicatorCounted löst, aber so wie ich es bis jetzt immer verstanden habe ist es so: Wenn du den aktuellen Bar nicht betrachtest und auch nichts damit machst, denkt MT natürlich trotzdem das du den aktuellen mit bearbeitest, weil du ihn ja zur Verfügung hast. Wenn start() also am letzten Tick des aktuellen Bars ausgeführt wird, behandelst du den Bar noch nicht, MT denkt aber du hast. Beim nächsten Tick (erster Tick des neuen Bars) sagt dir MT jetzt "du hast nur den aktuellen Bar nicht angeschaut, die anderen haben sich alle nicht verändert", in Wirklichkeit hast du aber beim vorletzten Bar noch gar nix getan. (Ist natürlich alles in den Griff zu bekommen, also es geht alles, das sind nur Stolpersteine auf die man achten muss... wie man sich dann entscheidet ist sicher auch persönliche "Freiheit" ;)
-
EA - Zertifizierung
*g* mit den Kategorien könnte man andere Kundschaft anlocken als man ursprünglich wollte. Aber ich wollte auch schonmal einen EA Swinger nennen... die Leute schaun nur so blöd wenn man sagt "Mein Swinger hat heut schon wieder 2% erwirtschaftet" ;) Damit nicht nur Offtopic hier steht: Was mit zum Thema Zertifizierung noch eingefallen ist, bzw. zur "Kritik" daran: Ich denke man kann eine solche Zertifizierung eher mit dem Pickerl fürs Auto vergleichen. Wenn ein Auto das Pickerl hat, heißt das nicht das es das Beste, Sparsamste, Schnellste, Modernste, Luxuröseste etc ist. Oder das es am Besten zu den eigenen Wünschen und Fahrverhalten passt. Aber das Pickerl sagt dir das du erwarten kannst das das Auto nicht explodiert wenn du den Zündschlüssel drehst. Gas und Bremse tun was sie sollen und es auch sonst halbwegs in Ordnung ist. Ob das Auto dann aber zum Käufer passt, bzw. er das Risiko (zB bei einem 5000PS Sportwagen aus der ersten Kurve zu fliegen, aber das dafür schnell und stylisch) eingehen will, muss der Käufer alleine entscheiden.
-
Erste Gehversuche in MQL
Das verstehst du am besten wenn du dir im livechart mal die aktuelle Kerze anschaust. Während dem Aufbau ist (wie conglom-o schon gesagt hat) der aktuell letzte Tick der Close-Wert der Kerze (sprich wenn jetzt "heute" kein neuer Tick mehr kommt, bleibt das auch der Close-Wert der Kerze). Da du einen Indikator programmieren willst noch ein kleiner Hinweis: Ein wichtiger Punkt beim implementieren eines Indi in MT ist das "verstehen" wie MT den Indi malt. Wenn du den fertig programmierten Indikator dann auf den Chart ziehst, wird einmal start() aufgerufen, und danach bei jedem neuen Tick wieder. Das heißt beim ersten Aufruf hat der Indi sofort die gesamte History der vorhanden Bars vor der Nase und du musst (sofern du die History des Indis malen willst) erstmal die ganze Vergangenheit malen. Wenn du dir einen Beispielindikator anschaust siehst du schnell was ich meine. Hier ist zB die Funktion IndicatorCounted() sehr praktisch, die gibt dir an wieviele Bars seit dem letzten Aufruf von start() unverändert geblieben sind. Das heißt Bars-IndicatorCounted ist die Anzahl an Bars (natürlich vom aktuellen also 0 weg) die du "nochmal betrachten/malen musst". Beim ersten Aufruf ist IndicatorCounted() == 0 So (*g* bei mir is nach dem "So" erstmal aus) ich hoff ich hab dich nicht zusehr verwirrt, bei Fragen einfach fragen.
-
Da isser (endlich)
aber im tiefschnee/matsch wirds ja erst richtig lustig... ok, die Autofahrer sind daneben herzinfaktgefährdet weil die Spurwahl halt vom Schnee entschieden wird, aber dafür gibts ja radwege (die um die Zeit immer so schön leer sind ;)
-
Da isser (endlich)
Aber bei Schnee macht das Radfahren doch erst richtig Spass. Blöd sind nur die Bimschienen die man unterm Schnee nicht sieht. Da braucht man dann halt gute "Ortskenntniss" ... oder schnelle Reflexe
-
Frage bzgl. Programmierung
Die erste Frage ist: ist es ein OpenSourceIndi oder hast du ihn gekauft? Bei Kauf: darfst du ihn "weitergeben" bzw. eben verändern lassen? (jeder halbwegs seriöse Programmierservice gibt dir diese Rechte, aber ich frag sicherheitshalber ;) Zu deiner Frage: Ja es gibt Leute im Forum die einen Programmierservice betreiben (zB Knochen). Zusätzlich gibts hier im Forum die "Rent-A-Coder" Sektion zu diesem Zweck/Thema. Falls du Interesse hast selber was dazu zu lernen, kannst du es auch einfach selber probieren und bei Bedarf fragen. Wir helfen gerne weiter. Aber im Forum herrscht halt "Mitarbeitspflicht" ;) (Klingt blöder als es ist, das Forum ist halt kein Programmierservice wo man einen Indi online stellt und sagt "der soll auf ... erweitert/verändert werden" und ein paar Tage später hat man den neuen Indi ohne selber was beizutragen, dafür gibts richtige Programmierservices ;) hth Edit: hab grad gesehen das das Thema schon in anderem Thread weitergegangen is. Da is man einmal am Abend nit online und schon geht die Post ab ;)
-
1-2-3 Formationen
sorry, bin manchmal langsam: Also wenn du im M15 ein 1 2 siehst (weil 3 ist ja noch nicht da ;) gehst du in den M5 und wartest dort auf ein "vollständiges" 1 2 3 (also wo das 2 durchbrochen und damit das 3 bestätigt ist?) und hast damit das 3 im M15? Oder ist das 3 im M5 auch noch nicht bestätigt aber aufgrund von Volumen und Candle-pattern werden dann die zwei unbestätigten (also in M5 und M15) 3 als Indiz genutzt und in M15 gehandelt?
-
Indicator: Abstand zwischen 2 MA
*G* ist immer praktisch, ich meinte aber eigentlich direkt den Log im MetaTrader (ok, es sind die gleichen Einträge aber im MT sieht mans schneller als extra den Ordner aufzumachen)
-
1-2-3 Formationen
erstmal von mir auch ein Hallo und danke für die Screenshots. Mir drängt sich hier aber auch die Frage auf wie du das 3 in dem Moment wo es entsteht als solches erkennst?
-
Indicator: Abstand zwischen 2 MA
unglaublich (musste es selber testen ums zu glauben), das is dann mMn ein böser Bug vom Editor! Bei solchen problemen hilft oft ein Blick ins Journal bzw. Experten Log im Terminal dort wirst du in dem Fall folgende Zeilen lesen: Das Problem ist folgendes: die iMA Funktion erwartet als 5. und 6. Parameter ein Zahl als Identifier welchen Modus und welchen Preis sie verwenden soll. In MQL sind diese Identifier als Konstante definiert wodurch du im Sourcecode zB MODE_EMA schreiben kannst. Denn dieses "MODE_EMA" ersetzt der Compiler vor dem compilieren durch die entsprechende Zahl. Du hast jetzt aber Strings die du der Funktion übergibst, und mit der weiß sie verständlicherweise nix anzufangen. Welchen MA die Funktion dann berechnet ist leider nicht definiert, ich vermute einen SMA auf Close-Basis. Wenn du slow und fast auf gleiche Werte setzt hast du dann trotzdem Differenzen oder ist die Diff dann 0?