Guten Tag zusammen,
ich habe ein einfaches Programm erstellt, um mich mit ProRealTime anzufreunden. Zu erst habe ich ein Indikator programmiert. „Analyser.py (Speaker)“
Ausgabe des Indikators:
- hasStocks [schwarze Balken] =Positionen gemäß Handelssystem. 0 = keine Position; 1 = 1 Position (läuft)
- nTrades [schwarze Linie] = zählt die Anzahl an Trades.
Bei den Folgenden Ausgaben gilt: 2 = inaktive; 1 = Aktive
- ntp [grün Linie] = Kriterien für TP Ausstieg.
- nsl [rot Linie] = Kriterien für SL Ausstieg.
- nent [blau Linie] = Kriterien für Entry Einstieg.
Daraus habe ich ein Handelssystem gemacht „MeinHandelssystem“. Kaufen bei „nent“ und verkaufen bei „ntp“ und „nsl“.
Kommen wir nun zu meinem Problem:
Das Handelssystem „MeinHandelssystem“ hat im Zeitraum Dezember und Januar Kaufsignale (siehe Bild: “Frage.jpg”) wo mein Indikator „Analyser.py (Speaker)“ keine Signale hat.
- Wie kommt es dazu?
- Warum?
- Was kann ich dort gegen machen?
Guten Morgen,
jemand eventuell einen Ansatz für mich ?
Sind Sie sicher, dass der in Ihrem Diagramm angezeigte Indikator genau dieselben Einstellungen hat wie der, den Sie in Ihrer Strategie verwenden? Wenn Sie sicher sein möchten, welche Variablen in einer Strategie enthalten sind, können Sie GRAPH und GRAPHONPRICE verwenden . Dies sind die einzigen Möglichkeiten, Variablenwerte in einer Strategie zu debuggen.
Guten Tag Nicolas,
Danke für Ihre Rückmeldung.
Ihren Hinweis bezüglich GRAPH und GRAPHONPRICE habe ich mir angeschaut.
Die Funktion GRAPH habe ich umgehen implementiert. Handelsstrategie habe ich angefügt als “MeinHandelssystem”.
Groß debuggen kann ich leider nicht , da mein Code genau eine entschiedene Zeile hat.
Mein Handelssystem “MeinHandelssystem” beruht zu 100% auf dem Indikator “Analyser.py (Speaker)”. Beide haben die selben Variablen.
Es kommt aber nicht das selbe Raus.
Erläuterung des Bildes: “Frage – 20200415”:
-
- [rote dicke Linie] = Unklarheit Zeitraum: 12.12.2019 – 08.01.2020
- Indikators”Analyser.py (Speaker)”:
- ntp [grün Linie] = Kriterien für TP Ausstieg. – 2 = inaktive; 1 = Aktive
- nsl [rot Linie] = Kriterien für SL Ausstieg. – 2 = inaktive; 1 = Aktive
- nent [blau Linie] = Kriterien für Entry Einstieg. – 2 = inaktive; 1 = Aktive
- hasStocks [schwarze Balken] =Positionen gemäß Handelssystem. 0 = keine Position; 1 = 1 Position (läuft)
- nTrades [schwarze Linie] = zählt die Anzahl an Trades.
- Handelssystem “MeinHandelssystem”
- myntp [grün Linie] = Kriterien für TP Ausstieg. – 2 = inaktive; 1 = Aktive
- mynsl [rot Linie] = Kriterien für SL Ausstieg. – 2 = inaktive; 1 = Aktive
- mynent [blau Linie] = Kriterien für Entry Einstieg. – 2 = inaktive; 1 = Aktive
- myhasStocks [schwarze Linie] =Positionen gemäß Handelssystem. 0 = keine Position; 1 = 1 Position (läuft)
Code des Handelssystems “MeinHandelssystem”
// Initialisieren des Indikators und definieren der Variablen
myntp, mynsl, mynent, myhasStocks, mynTrades = CALL "Analyser.py (Speaker)"[0, 2, 100, 2, 60, 40, 2, 1]
// Bedingungen zum Einstieg in Long-Positionen
IF NOT LongOnMarket AND mynent = 1 THEN
BUY 1 CONTRACTS AT MARKET
ENDIF
// Bedingungen zum Ausstieg von Long-Positionen
If LongOnMarket AND ((mynsl = 1) or (myntp = 1)) THEN
SELL AT MARKET
ENDIF
// Visualisierung
GRAPH myntp coloured(17,247,55) AS "myntp"
GRAPH mynsl coloured(255,0,0) AS "mynsl"
GRAPH mynent coloured(44,16,248) AS "mynent"
GRAPH myhasStocks coloured(0,0,0) AS "myhasStocks"
Vielen Dank, ich kann das gleiche Verhalten in genau derselben Reihenfolge wiederholen. Es scheint nur einmal zu passieren und für dieses Instrument habe ich kein anderes Problem mit anderen Instrumenten gefunden, oder? Ich denke, es wäre zuerst eine gute Idee, den Indikator in den Strategiecode zu integrieren, um zu sehen, ob er in irgendeiner Weise helfen kann. Könnten Sie das tun?
Guten Tag Nicolas,
Danke erneut für Ihre Rückmeldung.
Meine Testversion ist gestern abgelaufen und ich habe nun keine Daten mehr um die Situation erneut zu Simulieren.
Das Problem ist mit anderen Instrumenten durch mich nicht getestet worden. Auch ein Test in anderen Zeitintervallen (z.B. 3h oder 2h…) habe ich nicht vorgenommen.
Ich komme gerne Ihrer erneuten Idee nach und habe den Indikator 1:1 in das Handelssystem integriert.
Sofern die Möglichkeit besteht meine Testversion, um eine Woche zu verlängern würde ich gerne weiter diesem Problem auf den Grund gehen.
An Wenn könnte ich mich mit dieser Bitte wenden?
Code des Handelssystems: ” Analyser.py”
//Indikator "Analyser.py (Speaker)"
//Average definieren
//typ = 0
//ent1 = 2
//ent2 = 100
//sl1 = 2
//sl2 = 60
//tp1 = 100
//tp2 = 2
//longshort = 1
//Gleitenden Durchschnitt zuordnen und einer Variablen zuordnen.
ent1Average = Average[ent1,typ](close)
ent2Average = Average[ent2,typ](close)
//Stop Lost Average definieren
sl1Average = Average[sl1,typ](close)
sl2Average = Average[sl2,typ](close)
//Take Profit Average definieren
tp1Average = Average[tp1,typ](close)
tp2Average = Average[tp2,typ](close)
//Warten bis größer SMA oder EMA erreicht ist.
if BarIndex = 0 Then
//finden größten SMA oder EMA
startId = MAX(MAX(MAX(ent1,ent2),MAX(sl1,sl2)),MAX(tp1,tp2))
//initialieiseren
//hasStocks = 0 --> kein Trade / 1 = Trade aktiv
hasStocks = 0
nTrades = 0
sell1 = 0
ntp = 2
nsl = 2
nent = 2
elsif BarIndex >= startId Then
//Prüfen ob ich im Markt bin
if hasStocks = 0 Then
//Prüfen Kaufen
if ent1Average[0] < ent2Average[0] and ent1Average[1] > ent2Average[1] Then
//# "Buy" because of Entry
hasStocks = 1
nent = 1
//Kaufen durch ProRealTime
if longshort = 1 Then
// LONG
BUY 1 CONTRACTS AT MARKET
else
// SHORT
//SELLSHORT 1 CONTRACTS AT MARKET
endif
endif
//Visualisation von TP und SL durch ntp und nsl
if (tp1Average[1] < tp2Average[1] and tp1Average[2] > tp2Average[2]) Then
ntp = 2
endif
if (sl1Average[1] < sl2Average[1] and sl1Average[2] > sl2Average[2]) Then
nsl = 2
endif
else
//Visualisation von Entry durch nent
if (ent1Average[1] < ent2Average[1] and ent1Average[2] > ent2Average[2]) Then
nent = 2
endif
//Prüfen Verkaufen
// "Sell" because of SL or TP
if (tp1Average[0] < tp2Average[0] and tp1Average[1] > tp2Average[1]) Then
sell1 = 1
ntp = 1
endif
if (sl1Average[0] < sl2Average[0] and sl1Average[1] > sl2Average[1]) Then
sell1 = 1
nsl = 1
endif
//Sell
if sell1 = 1 Then
hasStocks = 0
sell1 = 0
nTrades = nTrades + 1
//Verkaufen durch ProRealTime
if longshort = 1 Then
// LONG
SELL AT MARKET
else
// SHORT
//EXITSHORT AT MARKET
endif
endif
endif
endif
// Visualisierung
myntp = ntp
mynsl = nsl
mynent = nent
myhasStocks = hasStocks[1]
mynTrades = nTrades
GRAPH myntp coloured(17,247,55) AS "myntp"
GRAPH mynsl coloured(255,0,0) AS "mynsl"
GRAPH mynent coloured(44,16,248) AS "mynent"
GRAPH myhasStocks coloured(0,0,0) AS "myhasStocks"
Das Problem ist in dieser Version weiterhin vorhanden. Aber ich habe festgestellt, dass es ein Problem mit den Daten gibt, es gibt keine Kerzenhalter zwischen dem 13. Dezember und dem 23. Dezember und ich denke, es könnte erklären, warum es zu diesem Zeitpunkt ein ProBacktest-Problem gibt.
Guten Tag Nicolas,
Danke erneut für Ihre Rückmeldung und Ihre Bemühungen.
Interessant Ihre Erkenntnis.
- Kann der Fehler behoben werden?
- Wieso kann ProRealTime ohne Datengrundlage oder Signal kaufen / verkaufen?
Kann ich irgendwie helfen ?