1. Würd ich nix in der Init()-Funktion deklarieren
2. Seh ich bei den MA-Deklarationen irgendwie keine Angaben zu Kerzen
3. Sind das bei CheckSell/CheckBuy, wenn ich richtig gesehn habe, mehr ( ) - Klammern als nötig
4. Hab ich aber nur überflogen und vielleicht was übersehn.Die Log-Einträge sind nicht ausreichend :(
Um den Fehler zu erkennen musst Du zusätzlich den Kauf- bzw. Verkaufspreis ausweisen (Ask oder Bid, je nachdem), außerdem wie groß der Abstand sein muss: SYMBOL_TRADE_STOPS_LEVEL von hier: https://www.mql5.com/de/docs/constants/environment_state/marketinfoconstants#enum_symbol_info_double
- www.mql5.com
Aber warum wird die obere Position gleich wieder aufgelöst?
Und hier, warum wird denn hier gekauft und gleich wieder verkauft?
Du hast einen Denkfehler im Chart.
Die Position wird nicht gleich wieder verkauft.
Es wird NACH dem verkauf gleich eine neue Position aufgemacht.
Du hast kein Zeitpuffer in deine Logik für das Öffnen von neuen Positionen.
Das Bild zeigt es deutlich.
Und wie soll ich jetzt erkennen warum was schief gelaufen ist? Gründe gebe mehrere - der Debugger ist Dein Freund.
Meinst Du mich gerade? Falls ja ich gebe nur die Antwort auf die eine Frage.
Er hat ja mehrere Fragen.
Du hast einen Denkfehler im Chart.
Die Position wird nicht gleich wieder verkauft.
Es wird NACH dem verkauf gleich eine neue Position aufgemacht.
Du hast kein Zeitpuffer in deine Logik für das Öffnen von neuen Positionen.
Das Bild zeigt es deutlich.
Oh... da mir leider nicht in den Sinn kam, diesen Thread zu favorisieren, ist mir entgangen, dass Ihr so zahlreich geantwortet habt. Also danke für Eure rege Teilnahme!
Du hast Recht mit dem Zeitpuffer, ich habe da seitdem auch drüber nachgedacht und angefangen Bots zu bauen, die nur einmal pro Kerze kaufen. Da werde ich jetzt die Tage noch etwas mehr Rafinesse investieren müssen. Das Problem ist schon länger her und ich durch zu große Stops einen Margin Call provoziert... obwohl dann müsste da ja "not enough money" stehen .
Und wie soll ich jetzt erkennen warum was schief gelaufen ist? Gründe gebe mehrere - der Debugger ist Dein Freund.
Muss mal schauen ob ich einen Leitfaden finde, Du hast das schon öfter geschrieben bei verschiedenen Leuten mit den Haltepunkten, aber da ich nicht aus dem Programmierbetrieb komme, kann ich mir das nicht richtig vorstellen. Ich habe die Option Haltepunkte zwar im Editor schon gesehen, weiß aber nicht sicher was man damit bewirkt (außer dass das Progamm vielleicht an der Stelle hält?!?)
Ich mache mir mittlerweile immer Print Statements an den entscheidenden Stellen um zu wissen, ob eine Funktio ausgeführt wird oder nicht bzw. lasse mir Werte in einem Array als Comment() anzeigen um zu sehen wie sie durchlaufen usw.
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Guten Tag Leute,
Um ein paar selbst gebastelte Module zu testen verwende ich einen MA Crossover als Signalgeber. Also von dem geschriebenen Programm erst alle unnötigen Module deaktivieren und dann eins nach dem Anderen wieder hinzufügen und sehen wo das Problem liegt.
Leider wurden auch die Signale alleine nicht so umgesetzt wie in den Bedingungen. Vielleicht habe ich etwas übersehen... so werden zum Beispiel nicht immer die Inputs angewandt, die man im Editor einträgt, auch wenn man schon oft kompiliert hat. Gibt es da einen Trick, außer eine neue Datei erstellen, damit man am veränderten Baum erkennt, dass Änderungen wahrscheinlich übernommen wurden?
Aber was sehr seltsam ist, ist dass die Bedingungen nicht so umgesetzt werden, wie man sie eingegeben hat (s. u. orange).
Das passiert im Test (Es geht dann nicht mehr weiter):
Ein Blick ins Journal verrät uns, dass ungültige Stops der Grund dafür sein sollen.
Sind sie vielleicht zu groß? Zu klein jedenfalls nicht (s.o.)...
Na gut, dann eben im visuellen Modus...
Dieser Kauf sieht noch nachvollziehbar aus.
Aber warum wird die obere Position gleich wieder aufgelöst?
Und hier, warum wird denn hier gekauft und gleich wieder verkauft?
Gibt es Gründe, die nicht klar ersichtlich sind? Vielleicht eine Eigenheit der CTrade in Verbindung mit boolean Signalen (Signalumkehr??)
Der Plan war ja, die Komplexität zu vermindern um eine Reproduzierbarkeit zu erreichen. Aber das was er mir da ausspuckt hat ja mit Reproduzierbarkeit nicht mehr so viel zu tun...
Danke schon mal für jede Hilfe.
Nachtrag: Kann das vielleicht wirklich sein, dass das was mit den Booleanfunktionen zu tun hat? Es gibt da noch eine älteree Version von dem Crossoversignal mit string signal= "" und das funktioniert ein Bisschen besser, jedenfalls vekauft es nicht direkt nach dem Kauf wieder.