ungewünschte Neuberechnung innerhalb einer Periode
Posted: 01 Dec 2015 20:17
Hallo zusammen,
ich habe ein Problem mit der Umsetzung der External Trigger Funktion. Die Ein- und Ausstiegswerte werden separat in einem Indikator berechnet. Dessen Werte werden am Ende einer Periode für die nächste Periode berechnet (Einstellung: CalculateAtEveryTick(false)). Die Datei für den External Trigger wird in einem Stopp erzeugt der sich jede Periode neu berechnet (ohne CalculateAtEveryTick(false)). Bis zum Einstieg in eine Position läuft alles perfekt. Im Moment des Ein- und Ausstieg berechnet er aber den Indikator neu obwohl es immer noch die selbe Periode ist und auch die Abfrage MarketPosition() gibt nur für den Tick des Einstieg 1 oder -1 zurück und gibt im nächsten Tick 0 zurück obwohl die Position noch offen ist. Selbes passiert mit dem Stopp der auch Werte vom Indikator bezieht. In dem Moment wo er eigentlich ausgelöst werden sollte berechnet er sich neu und kann dadurch z.B. in einer Long Position sogar nochmal sinken.
Hier mein Code:
Wie kann man diese Neuberechnung verhindern?
Gruß und Dank
P. Kümmel
ich habe ein Problem mit der Umsetzung der External Trigger Funktion. Die Ein- und Ausstiegswerte werden separat in einem Indikator berechnet. Dessen Werte werden am Ende einer Periode für die nächste Periode berechnet (Einstellung: CalculateAtEveryTick(false)). Die Datei für den External Trigger wird in einem Stopp erzeugt der sich jede Periode neu berechnet (ohne CalculateAtEveryTick(false)). Bis zum Einstieg in eine Position läuft alles perfekt. Im Moment des Ein- und Ausstieg berechnet er aber den Indikator neu obwohl es immer noch die selbe Periode ist und auch die Abfrage MarketPosition() gibt nur für den Tick des Einstieg 1 oder -1 zurück und gibt im nächsten Tick 0 zurück obwohl die Position noch offen ist. Selbes passiert mit dem Stopp der auch Werte vom Indikator bezieht. In dem Moment wo er eigentlich ausgelöst werden sollte berechnet er sich neu und kann dadurch z.B. in einer Long Position sogar nochmal sinken.
Hier mein Code:
Code: Select all
Express Stop Indikator_Dax
Vars
Series Platz, Long (KaufsignaleExpress.Long), Short (KaufsignaleExpress.Short), Zeitzaehlerserie (KaufsignaleExpress.Zeitzaehlerserie), KursrichtungEins(KaufsignaleExpress.KursrichtungEins);
numeric wurde_schon_eingestiegen, Wendeblock;
Calculation
if IsFirstBar() then
begin
wurde_schon_eingestiegen = 5;
Wendeblock = 5;
Platz = 1;
end
else
begin
if Platz[0] = Platz[1] then //Berechnung soll nur einmal pro Periode ausgeführt werden und dafür soll nach der Berechnung Platz[0] <> Platz[1] sein
begin
if (Zeitzaehlerserie = 1) then
begin
wurde_schon_eingestiegen = 5;
end
if Platz[1] = 2 then
begin
Platz = 1;
end
else
begin
Platz = Platz + 1;
end
end
end
////////////////////////////////////////////////////////////////////////////
if (KursrichtungEins[1] <> KursrichtungEins[2]) and (wurde_schon_eingestiegen = 5) then
Wendeblock = 5;
else
if wurde_schon_eingestiegen = 1 then
Wendeblock = -1;
else
if wurde_schon_eingestiegen = -1 then
Wendeblock = 1;
///////////////////////////////////////////////////////////////////////////////
if ((Long <> 0) and (Wendeblock <> -1) and (MarketPosition() = 0) and (wurde_schon_eingestiegen = 5) and (h >= Long)) Then
CreateFile("C:\Users\XXXXXX\Documents\WHS FutureStation Nano\External Trigger\nano.txt","long DAX");
if ((IsIntradayEntry()) and (MarketPosition() = 1)) Then
wurde_schon_eingestiegen = 1;
if ((Short <> 0) and (Wendeblock <> 1) and (MarketPosition() = 0) and (wurde_schon_eingestiegen = 5) and (l <= Short)) Then
CreateFile("C:\Users\XXXXXX\Documents\WHS FutureStation Nano\External Trigger\nano.txt","short DAX");
if ((IsIntradayEntry()) and (MarketPosition() = -1)) Then
wurde_schon_eingestiegen = -1;
Gruß und Dank
P. Kümmel