Wenn Sie jedoch ausstehende Aufträge verwenden (STOP oder LIMIT, abhängig von der aktuellen Preisposition, gemäß beigefügter Anmerkung), erfolgt der Eintrag, wenn der Preis dieses Niveau erreicht.
Leider führt auch das nicht zum gewünschten Ergebnis. In den Foren (Deutsch,Französisch,Englisch)finde ich auch keinen positiven Eintrag zu diesem Thema. Geht das bei PRT nicht oder gibt es noch eine andere Lösung!?
Können Sie noch einmal genauer erklären, was Sie erreichen möchten?
Gerne
Der Indicator X soll im aktuellen Bar als Limit Order gelten und die Position zum Close geschlossen werden.
Voraussetzung ist dass am vorherigen Bar (14uhr) das Close grösser war als der Indicator X und im aktuellen Bar das Low kleiner ist als Indicator X um14Uhr.
Der Indicator X liegt um 14 Uhr bei 18120,2 und Close ist um 14uhr höher als der Indicator X.
Im 15 Uhr Bar ist das Low kleiner als Indicator X um 14 Uhr(18120,2) also möchte ich zum Kurs von 18120,2( Limit Order) kaufen und dann zum Close(18253,7) schließen.
Im ersten Teil fragten Sie: „Wenn Open>Enterlong und Low < Enterlong, dann enter Long auf Höhe vom Indikator „Enterlong“, während Sie jetzt fragen: „Voraussetzung ist, dass im vorherigen Balken (14:00 Uhr) der Schlusskurs höher war als Indikator X und im aktuellen Balken der Tiefstkurs niedriger ist als Indikator X um 14:00 Uhr“, was eine ganz andere Bedeutung hat, nämlich „Wenn Open>Enterlong und Low < Enterlong[1]“.
Hier ist der Code, der auf Ihre letzte Anfrage aktualisiert wurde:
// Festlegen der Code-Parameter
DEFPARAM CumulateOrders = False // Kumulieren von Positionen deaktiviert
// Bedingungen zum Einstieg in Long-Positionen
indicator1 = CALL "enterlong"(low)
c1 = (close > indicator1)
c2 = (low < indicator1[1])
IF c1[1] AND c1 AND c2 AND Not OnMarket THEN
BUY 1 CONTRACT AT indicator1 LIMIT
ENDIF
// Bedingungen zum Ausstieg von Long-Positionen
IF LongOnMarket THEN
SELL AT MARKET
endif
Sorry das war ein Fehler von mir.
Vielen Dank nochmal für Ihre Hilfe. Ich werde de code testen.
Guten Tag
leider geht ihr oben geposteter Code auch nicht.
Der trade wird ein Bar zu spät ausgeführt.
_Im 18 Uhr Bar sind die Konditionen für einen Trade erfüllt
_Im 19Uhr Bar unterschreitet das Low den Indicator x
_Der trade wird aber erst im 20Uhr Bar eröffnet! Sollte aber im 19Uhr bar öffnen!
Das stimmt! Beide Bedingungen sind beim Schließen des 19:00-Uhr-Balkens erfüllt. Steigen Sie also in den Markt ein, sobald der 20:00-Uhr-Balken öffnet!
Aber PRT macht es nicht so wie ich es gerne hätte.
Ich trade live nochmal das Beispiel von oben.
Um 19 Uhr schaue ich ob Close grösser ist als Indicator X in dem 18 Uhr Bar. Wenn das der Fall ist setze ich eine Buy Limit Order auf den Wert vom indicator x aus dem 18 Uhr Bar. Wird die Position eröffnet warte ich bis 19Uhr59 und 59 Sekunden und schließe die Position zum Close des Bar von 19 Uhr.
Poste den vollständigen Code und teile mir mit:
- welches Tool du verwendest
- Zeitrahmen
- Datum und Uhrzeit einiger fehlerhafter Operationen.
Nur dann kann ich die Prüfungen durchführen.
hallo
ich habe einen Screenshot gemacht mit Code und Signale , Tool und Zeitintervall (1Stunde).
Alle Signale sind fehlerhaft: sie steigen immer ein Bar zu spät ein.
Den Code vom Indicator x kann ich leider nicht teilen da ich diesen aktiv handel und viel investiert habe ihn zu entwickeln.
Danke
Ich habe den Grund bereits mehrfach erklärt: Es ist KEINE Verzögerung, sondern die Funktionsweise.
Wenn Sie mehr Präzision wünschen, können Sie auf den 1-Sekunden-Zeitrahmen heruntergehen (unter Beibehaltung der Bedingungen für den Stunden-Zeitrahmen), sodass die Verzögerung nahezu Null ist.
Es könnte ein Problem mit Ihrem Code sein, aber ohne den Code kann ich nichts anderes tun.
Dies ist der Code zur Verwendung des 1-Sekunden-Zeitrahmens im Diagramm (natürlich müssen Sie auch den 1-Stunden-Zeitrahmen geöffnet lassen, um die Bedingungen zu überprüfen):
// Festlegen der Code-Parameter
DEFPARAM CumulateOrders = False // Kumulieren von Positionen deaktiviert
timeframe(1h,UpdateOnClose)
// Bedingungen zum Einstieg in Long-Positionen
indicator1 = CALL "enterlong"(low)
c1 = (close > indicator1)
c2 = (low < indicator1[1])
IF c1[1] AND c1 AND c2 AND Not OnMarket THEN
Segnale = 1
ELSE
Segnale = 0
ENDIF
timeframe(default)
IF Segnale = 1 AND (close > indicator1) THEN
BUY 1 CONTRACT AT indicator1 LIMIT
ENDIF
// Bedingungen zum Ausstieg von Long-Positionen
IF LongOnMarket and Minute > 58 THEN
SELL AT MARKET
endif
Das ist eine gute Idee. Danke, ich werde es testen.
Hallo
und nochmals vielen Dank für die Hilfe.
Dank Ihrer Kommentare habe ich den Fehler gefunden:
c2 = (low < indicator1[1]) musste weg ,da diese Berechnung am aktuellen Bar erfolgt. Limit Order reicht.
So langsam arbeite ich mich in die Logik der PRT ein.
Jetzt eine weitere Frage.
Wie ist der code wenn ich nur zwischen 15 bis 16Uuhr und zwischen 21 bis 22 Uhr handeln möchte bei einer Zeiteinheit 1 Stunde. Ich bekomme das mit flat after nicht hin.
Danke
Ändern Sie die Eingabebedingung wie folgt:
IF Segnale = 1 AND (close > indicator1) AND (((OpenTime >= 150000) AND (OpenTime <= 160000)) OR ((OpenTime >= 210000) AND (OpenTime <= 220000))) THEN