Zum Inhalt springen
View in the app

A better way to browse. Learn more.

#T/N/X/T

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

RAiNWORM

Developer
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von RAiNWORM

  1. Nennt sich "strategisches Tippen" ohne auf den Chart zu gucken Mal sehen, was letztendlich daraus wird. Und ihr alle wisst ja, was man am Ende des Rainbows findet, oder?
  2. Äh, ja, genau. Ich komm nur mit dem Druck nicht klar, der jetzt auf mir lastet
  3. Ich würde mir gerne eine Merkliste von verschiedenen Posts aus unterschiedlichen Topics erstellen können. Dann noch ein kurzes Stichwort dabei und ich finde künftig interessante Beiträge wieder. Ich glaube, den Wunsch schonmal gehört zu haben...
  4. Wenn du mit Rainbow mich meinst, dann möchte ich gerne antworten Ich habe mich in der Form eingearbeitet, dass ich erstmal versucht habe Broker und Datenfeeds zu verbinden. Wer von MT4 kommt nimmt vieles als selbstverständlich hin, da dort die Tradingplattform fest mit dem Broker verbunden ist. Bei MC oder NT können diverse Broker und Feeds angebunden werden und dazu müssen die Einstellungen im Programm passen. Daran musste ich mich ersteinmal gewöhnen. Zweitens ist das Orderhandling bei MC vollkommen anders i.V.z. MT4. Ich kann keine einzelne Order (anhand der Ticketnummer) verfolgen und explizit mit dieser arbeiten. Ich habe eine Position (mit ggf. mehreren Entries) pro Symbol und fertig. Außerdem ist MC (standardmäßig) so aufgebaut, dass im Grunde mit Beendigung der Bar die Signalverarbeitung erfolgt und nicht mit jedem Tick. Ansonsten habe ich festgestellt, dass ich meistens zu kompliziert denke und die Umsetzung in Easy/Powerlanguage viel einfacher ist. Die eigentlich Einarbeitung in Powerlanguage lief im Grunde so: ich habe ein einfaches Handelssystem gebaut und dabei gelernt. Zu deiner Frage, ob ich zufrieden bin: ja, da mir MC sehr gute Auswertungsmöglichkeiten bietet und er mir die Wahl des Brokers überlässt. Damit einhergehend ist auch gleich der negative Punkt: Broker und MC kommunizieren nicht so gut, wie beim MT4 miteinander. Das betrifft Connectivity und Order-Tracking.
  5. Zum Timeout: sollte dieser in Stunden/Minuten oder besser in Anzahl Bars angegeben werden? Ich bin für die Anzahl an vergangenen Bars, da somit der Wechsel des Timeframes indirekt berücksichtigt wird. Dann zu Zeitfilter: Einen Zeitfilter finde ich schwer paramatrisierbar. Wahrscheinlich wird dieser hardcoded in einer eigenständigen Funktion am besten aufgehoben sein. Nur so lassen sich Wochentage/Abendstunden/Nachtstunden einfach definieren. @Mythos: Könntest du bei deinen wöchentlichen Reports bitte den derzeitigen Code immer unten mit anhängen? Ich tue mich gerade schwer, die bislang verabschiedeten Fragmente zusammenzusetzen. Auch wenn der Code noch nicht lauffähig ist, wäre es für mich eine große Hilfe Deinen aktuellen Codevorschlag kannst du dann mit (Kommentar) darunter packen. Den aktuellen Codebaustein kannst du in deinem Post ja dennoch darstellen. Dann kann man den Thread gut lesen und wenn man was machen will, downloaded man einfach den aktuellen Gesamtcode.
  6. Ich nutze schon seit Ewigkeiten den Altap Salamander. Den habe ich mir vor etwa 10 Jahren gekauft. Vor allem, weil alle Funktionstasten dem Norton Commander unter DOS entsprachen. Ich brauchte also nicht umlernen Das Programm ist nicht verspielt bunt, sondern besticht durch Funktionalität und sehr vielen eingebauten Plugins (vom Packer über Pictviewer bis hin zum Batchrenaming etc.). Kopieraufträge können eingereiht werden. Dabei können auch nur neue/veränderte Dateien (CRC, Datum, Größe...) kopiert werden. Außerdem kommt man in so ziemlich alle Archive rein, als wäre es ein Ordner (auch ISOs). Sollte man sich mal anschauen. Sicherlich gibt es gefühlte 1000 Alternativen, aber ich fahre damit sehr gut. Link: Altap Salamander
  7. Wow, Glückwunsch, tah! Demnächst opfere ich Punkte, um deinen Tip vorab zu sehen und kann mich dann um einen Punkt drüber/drunter legen
  8. RAiNWORM antwortete auf LRP's Thema in Plattform (MC)
    Die stabilste Version war noch die 6er Reihe. Aber aufgrund der neuen Möglichkeiten bin ich auf die 7.0 geschwenkt. Absichtlich habe ich die Betareleases zur 7.1 / 7.2 nicht mitgemacht. Tja, aber der Support hat mir geraten, die Betaversionen einzusetzen, weil diese stabiler seien, als das Release. Damit hatte ich natürlich wieder neue Probleme Wie siscop es treffend beschreibt: ein Teufelskreis. Der Support ist klasse. Sie sind sehr bemüht um eine Lösung. Wenigstens etwas. Ansonsten mag ich MC sehr und meine Strategien lassen sich einfach umsetzen. Allerdings muss ich sagen, dass mich die Probleme von MC bereits reales Geld gekostet haben.
  9. Da hieße, dass ich bspw. auf meinem Flatex-CFD-Forex-Account den EA nicht laufen lassen könnte. Aber ich habe genügen Alternativen Letztlich gehört die spezielle Orderbehandlung in Abhängigkeit von Broker-Eigenheiten mit in die tbSendOrder. Kommt mit auf die ToDo-Liste für - äh - 2013
  10. Passt besser. Finde ich besser lesbar. Finde ich in Ordnung. Allerdings muss dann darauf geachtet werden, dass calcStop nicht unabsichtlich 0 zurückliefert, was "keinem Stop" entsprechen würde. Wie sieht es eigentlich mit einer Prüfung des Mindestabstands von SL und TP zum aktuellen Kurs aus? Manche Broker lassen keine Platzierung zu, wenn sie zu dicht liegen. Andere Broker hingegen lassen erst nach einem Order-Fill das Anhängen von SL und TP zu. Beachtet das dann die tbSendOrder-Funktion? Hast Recht. So rum ist es nachher doch einfacher, den Baustein auszutauschen.
  11. Ich schnappe mir mal ein paar Stellen: (1) Den Funktionsnamen checkForOpen() finde ich nicht korrekt. Hier wird nicht nur geprüft, sondern auch schon geordert. Also sollte entweder die Funktion umbenannt oder die Prüfung und das Ordern getrennt werden. (2) if(filterSignal == FLAT || filterSignal*entrySignal <= 0) Ich liebe solche schlanken und effizienten Programmierungen. Allerdings erschweren diese die Lesbarkeit des Codes vor allem für Außenstehende, aber auch für einen selbst, wenn man länger nicht mehr drauf geschaut hat. Ich vermeide daher gerne solche Konstrukte, da sie aus Performance-Sicht in heutigen Programmiersprachen eher irrelevant sind (außer es kommt auf jede Nanosekunde an). Vielleicht zur Erklärung für diejenigen Mitleser, denen sich der Sinn der Zeile nicht sofort erschließt: Die Signale werden durch -1 (short), 0 (flat) und +1 (long) gekennzeichnet. Damit ergbit sich nachfolgende Entscheidungstabelle. filterSignal 0, entrySignal 0 --> true filterSignal 0, entrySignal 1 --> true filterSignal 0, entrySignal -1 --> true filterSignal 1, entrySignal 0 --> true filterSignal 1, entrySignal 1 --> false filterSignal 1, entrySignal -1 --> true filterSignal -1, entrySignal 0 --> true filterSignal -1, entrySignal 1 --> true filterSignal -1, entrySignal -1 --> false Heißt auf deutsch: zeigen FilterSignal und EntrySignal in die gleiche Richtung, ergibt der Ausdruck false, ansonsten ist das Ergebnis true. Im Falle von true wird mit dem return (ohne ein Entry vorzunehmen) die Funktion verlassen. Finde ich schwer zu lesen. Warum nicht einfach: if !(filterSignal == entrySignal) return; //oder if (filterSignal != entrySignal) return; (3) stop=calcInitStopDiff(OP_BUY); lots= calcLots(stop); if(stop > 0) stop = entry - stop; tp=calcTPDiff(OP_BUY); if(tp > 0) tp= entry + tp; res = tbSendOrder(Symbol(),OP_BUY,lots,entry,3,stop,tp,"buy",MAGICNR, 0,-1); Hierzu gleich zwei Anmerkungen: Was soll geschehen, wenn stop oder tp 0 bzw. negativ sind? Da es sich anscheinend um Differenzwerte handelt, wird tbSendOrder mit invaliden Parametern gefüttert. Der Aufruf von calcInitStopDiff und calcTPDiff sollte mit den nötigen Parametern geschen, sodass diese Funktionen auch losgelöst einsetzbar sind. Ich würde es gerne vermeiden, dass innerhalb dieser beiden Funktionen noch Indikatoren o.ä. ausgewertet werden. Dann ist ein späterer Austausch eher schwer.
  12. Daraus wird: xcopy J:\Core\test1_copy C:\test1 /E /Y /E und /Y sind lediglich Parameter, die angeben, alle Unterverzeichnisse zu kopieren und vorhandene Dateien zu überschreiben.
  13. Da ich nur noch Meldungen über politische Aussagen und Entscheidungen höre, die sich innerhalb von Stunden ins Gegenteil verkehren, bleiben mir die Worte einfach stecken. Schön auch: Quelle Genau. Da ja die bösen Ratingagenturen im Jahr 2008 nicht schnell genug herabgestuft haben und heute 2011 eine Herabstufung von Euro-Krisenstaaten nicht erwünscht ist, wird die Veröffentlichung einfach verboten. Bingo. Was für ein Wahnsinn...
  14. Wir könnten beide von Mythos vorgeschlagene Varianten kombinieren: von vorne Anfangen und Wolfs EA durchsprechen. Das heißt, wir beginnen vorne (bei start()), nehmen uns den vorhandenen Programmteil und sprechen diesen Schritt für Schritt durch. Dabei kann es natürlich passieren, dass das bereits Vorhandene im Nachgang ganz anders umgesetzt wird. Fände ich nicht weiter schlimm, so lange es besser wird. Ja, das "double&" bedeutet, dass die übergebene Variable "by reference" und nicht "by value" übergeben wird. Im Normalfall (also, "by value", also ohne das &-Zeichen), hat die Veränderung der Variable ref_stop innerhalb der Funktion keine Auswirkungen auf die aufrufende Funktion. So, wie es hier gemacht wird, gibt die Funktion nicht nur einen Wert per return zurück, sondern auch über die veränderte Variable ref_stop. Beispiel: Ich rufe aus start() Funktion calcExitSignal wie folgt auf: Rueckgabewert = calcExitSignal(stop, OP_BUY, 1.32) Vor dem Aufruf hat die hier verwendete Variable stop vielleicht den Wert 1.1. Allerdings wird der Wert von stop durch die Funktion calcExitSignal angepasst, sodass sich nach dem Aufruf nicht nur Rueckgabewert, sondern auch stop geändert haben wird. Technisch wird bei "call by reference" nämlich nur die Speicheradresse und nicht der Wert übergeben. Siehe auch: http://abraham.fh-lausitz.de/profs/robel/faq/callByReference.html
  15. Ich habe mir den Quellcode nun mal sorgfältig durchgelesen. Zunächst muss ich sagen, dass ich mit deinem Coding-Stil gut zurecht komme. Ich finde das ein sehr brauchbares Grundgerüst. Vielleicht hast du Anfänger damit aber schon lange abgehängt (z.B. return-Wert durch call by reference im calcExitSignal). Nun aber gleich was zum Code: In der Funktion lotsOptimized verringerst du offensichtlich die Lots in Abhängigkeit der aufeinanderfolgenden Verluste. Das sollten wir inhaltlich nochmals mit allen diskutieren, aber darum geht's mir jetzt nicht. Vielmehr iterierst du über die For-Schleife rückwärts durch die Trade-History. Die Reihenfolge der History ist jedoch willkürlich, bzw. nicht garantiert. Das heißt, sie muss nicht zwangsläufig chronologisch sortiert sein. Ich meine mal festgestellt zu haben, dass die Sortierreihenfolge der Darstellungsreihenfolge (also die in der Applikation dargestellten Tabelle im MT4) entspricht. Selbst eine Filterung dieser Tradehistory hat m.W. Auswirkung auf den OrderSelect(...,MODE_HISTORY). Eigentlich müsste man sich - um ganz sicher zu gehen - eine Funktion schreiben, welche die History als chronoligisch sortierte Liste zurückgibt. Im checkForOpen fehlt mir persönlich noch eine Prüfung der Umgebungsparameter. Damit meine ich bspw. "Sonntags nicht traden", "kein Trade am Freitag nach 20:00 Uhr", "Gesamtportfolio-Risiko (über alle Symbols)
  16. Ach, das bestätigt, dass es jetzt funktionieren müsste. Außerdem wollte ich auch mal wieder MQL machen
  17. Mit den Dateien aus Post #5 klappt's bei mir, wenn ich das zweite FileReadString entferne (wo "null" dran steht). handle1=FileOpen(FileName,FILE_CSV|FILE_READ," "); if(handle1<1) { Print("File not found, the last error is ", GetLastError()); return(false); } int i= 0; while(!FileIsEnding(handle1)) { string rPair=FileReadString(handle1); // Pair FileReadString(handle1); // null // <-- Zeile streichen! Print(rPair); i++; if (rPair == "EURUSD") Export("EURUSD",1); if (rPair == "AUDUSD") Export("AUDUSD",1); if (rPair == "EURJPY") Export("EURJPY",1); if (rPair == "USDCHF") Export("USDCHF",1); if (rPair == "GBPUSD") Export("GBPUSD",1); } Des Weiteren ist es bei mir vollkommen egal, was als FileOpen-Delimiter angegeben wird, da eine neue Zeile sowieso immer einen neuen Datensatz bedeutet. Du hast ja nicht mehrere Infos nebeneinander. Wogo hat daher Recht: Und dann kannst du den letzten Block "if (rPair == "xyz") Export("xyz",1);" auch noch anpassen: if (rPair != "") Export(rPair,1); So ist's schick Und dann noch die Dekleration (nicht die ganze) Zeile raus aus der Schleife, dann ist es perfekt Ich häng den Code mal an. export_history.mq4
  18. Was heißt denn: "funktioniert nicht"? Kommt eine Fehlermeldung beim Kompilieren oder während des Programmlaufs, bricht das Programm ab oder läuft es durch ohne was zu tun? Spontan würde ich schonmal die Dekleration string rPair nicht in die While-Schleife packen. Einmal deklarieren sollte reichen.
  19. Wir beginnen also von Null, oder? Das heißt, wir haben ja mal am Anfang dieses Threads ein Grundmodell gehabt. Aus meiner Sicht war das aber schon zu viel des Guten und daher fände ich es richtig, wenn wir wirklich mit start() beginnen. Sehe ich das richtig?
  20. Ich glaube, du hast ein anderes Leaderboard als ich auf dem Schirm Oha, ich sehe gerade, dass ich den niedrigsten Stand getippt habe und andere knapp über mir liegen. Das schreit ja quasi nach erstem oder letztem Platz - dazwichen ist nicht viel möglich
  21. Kannst du die Spreads der gängigen Währungspaare beider Kontenmodell gegenüberstellen? So als Liste hier in diesem Thread? Ansonsten vereinbaren wir Datum und Uhrzeit, dann machen du und ich mal einen Screenshot der Spreads zur gleichen Zeit.
  22. Ich verkaufe dir meinen Tipp für 80 Punkte Das nennt sich dann Future-Handel
  23. Finde ich sehr gut. Das heißt aber auch: wir werden viel Zeit mit Projektmanagement und -Koordination verbringen. Das ist allerdings aus meiner Sicht vollkommen in Ordnung. Der Mehrwert des Community-EA soll ja (neben dem eigentlichen EA) die gemeinschaftliche Entwicklung sein. Da schadet ein Flußdiagramm, welches den großen Zusammenhang aufzeigt, nicht. So kann sich jeder (auch später noch) reinfinden. Außerdem soll der Thread für Neulinge in der (MT4-)Programmierung als Orientierung dienen. Ein erfahrener Entwickler hat ein Flußdiagramm bei überschaubaren Projekten im Kopf. Bei den meisten Neueinsteiger scheitert eine Umsetzung in Programmcode jedoch an einem fehlenden Ablaufplan.
  24. RAiNWORM antwortete auf ajkonly's Thema in EPA-Labs
    Wenn der Entwickler gerade dabei ist: in der Hall-of-Fame werden die Punkte der aktuellen Runde zusammengezählt, die "Total Predictions" jedoch schon von unserer ersten Runde. Das passt also nicht zusammen

Account

Navigation

Suche

Suche

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.