Bedingung für Einstieg zu verschiedenen Uhrzeiten
Forums › ProRealTime Deutsch forum › ProOrder Support › Bedingung für Einstieg zu verschiedenen Uhrzeiten
- This topic has 8 replies, 3 voices, and was last updated 6 years ago by verdi55.
-
-
11/28/2017 at 6:00 PM #54294
Hallo Zusammen,
ich beschäftige mich zum ersten Mal mit der ProOrder-Programmierung und verstehe nicht warum der nachfolgende Code nicht funktioniert. Es werden keine Order platziert. Es scheint am Setzen der Variable Y in der Einstiegsbedingung für 9:00-12:00 zu liegen. Durch das Setzen von Y auf 1 bzw. 2 beim Einstieg wollte ich erreichen, dass der jeweils zum Einstieg gehörige Ausstieg ausgeführt wird. Das Zurücksetzen von Y auf 0 beim Ausstieg soll bewirken, dass der nächste Einstieg möglich ist. Hat jemand eine Idee warum es nicht funktioniert und wie es richtig wäre?
Gruß
Boerniii// Festlegen der Code-Parameter
DEFPARAM CumulateOrders = False // Kumulieren von Positionen deaktiviert
ONCE Y = 0// Zwischen 09:00 und 12:00
// Bedingungen zum Einstieg
IF NOT LONGONMARKET AND (CurrentTime = 090000) AND (Y = 0) THEN
BUY 1 CONTRACT AT MARKET
Y = 1
ENDIF
// Bedingungen zum Ausstieg
IF LONGONMARKET AND (CurrentTime >= 120000) AND (Y = 1) THEN
SELL AT MARKET
Y = 0
ENDIF// Zwischen 14:00 und 17:00
// Bedingungen zum Einstieg
IF NOT SHORTONMARKET AND (CurrentTime = 140000) AND (Y = 0) THEN
SELLSHORT 1 CONTRACT AT MARKET
Y = 2
ENDIF
// Bedingungen zum Ausstieg
IF SHORTONMARKET AND (CurrentTime >= 170000) AND (Y = 2) THEN
EXITSHORT AT MARKET
Y = 0
ENDIFSET STOP pLOSS 30
SET TARGET pPROFIT 6011/29/2017 at 10:12 AM #5432711/29/2017 at 10:16 AM #5432911/29/2017 at 10:17 AM #5433511/29/2017 at 10:22 AM #54337Vielen Dank für Dein Antwort. Das ist richtig, aber ich benötig eine Variable zur Steuerung, da ich mehrfach Long bzw. Short gehen möchte. Es geht mir auch generell darum, wie ich mit solchen Variablen Ein- und Ausstiege steuern kann.
11/29/2017 at 10:23 AM #5433811/29/2017 at 11:00 AM #5434411/29/2017 at 11:14 AM #54347Bin mir zwar nicht sicher, ob Du das so gemeint hast, aber ich werde heute Abend mal versuchen für jeden Zeitraum eine If Bedingung anzulegen und innerhalb dieser dann die beiden Bedingungen für Ein- und Ausstieg. Das könnte tatsächlich klappen. Von daher vielen Dank für den Gedanken.
Warum das mit Variable nicht funktioniert, begreife ich allerdings immer noch nicht. Es ist als ob der initial auf 0 gesetzte Wert schon auf 1 gesetzt wird bevor die erste Bedingung abgearbeitet wird.
12/06/2017 at 10:02 PM #54926Es gibt 2 Probleme hier :
- fängt der Code in einer Vergangenheit VOR der Anzeige an zu rechnen, die der Menge der zuvor geladenen Bars entspricht. Also, wenn preloadbars = 2000 ist, dann wird 2000 Mal schon vor Beginn der Anzeige das ganze Programm abgearbeitet, aber es können noch keine Orders ausgeführt werden, und Y steht dann immer auf 2. Das kann man vermeiden, indem man einfügt :
defparam preloadbars = 2000
If barindex = 2000 then
y = 0
endif2. gibt es das Problem, wenn eine Position während der Haltedauer in den Stop oder ins Limit läuft, dann bleibt Y immer beim vorherigen Wert stehen und wird nicht wieder auf 0 zurückgesetzt. Auch dann findet danach keine Aktion mehr statt.
Man muß also außerdem noch einfügen :
If not onmarket then
Y = 0
endif
Damit funktioniert alles. Den ersten Befehl mit dem barindex kann man dann auch weglassen.
Den Wert von Y kann man sich anzeigen lassen mittels
graph Y as “Y”
-
AuthorPosts
Find exclusive trading pro-tools on