Buenos días.-
Abrimos una posición con un stop trailing y que en un momento determinado se cierra.
¿Cómo podemos saber el precio al que se cerró?
Saludos
Aquí está, la variable EXITPRICE contendrá el precio de salida:
IF Not OnMarket AND OnMarket[1] THEN
ExitPrice = TradePrice(1)
ELSIF (LongOnMarket AND ShortOnMarket[1]) OR (LongOnMarket[1] AND ShortOnMarket) THEN
ExitPrice = TradePrice(2)
ENDIF
Buenos días.-
Pregunta: ¿ el valor ExitPrice perdura en las velas sucesivas?
Gracias y saludos
Sí, en cada vela TODAS las variables utilizadas (excluyendo las matrices) se informan automáticamente con los mismos valores que la vela anterior. Puede cambiarlos como quiera, pero si no los cambia, permanecerán iguales para TODAS las velas futuras.
La idea es:
Establecer una estrategia sobre velas de 1 día donde se invierte en largo un instrumento con un stop trailing y establecer otra estrategia sobre velas de 30 minutos que recupere la posición cuando el precio cotiza sobre el precio de salida más el valor del stop:
ONCE ExitPrice = 0
x = 0.0125
IF Not OnMarket AND OnMarket[1] AND ExitPrice = 0 THEN
ExitPrice = TradePrice(1)
ELSE
ExitPrice = 0
ENDIF
IF NOT OnMarket AND ExitPrice > 0 THEN
EntryPrice = ExitPrice + ExitPrice * x
IF TradePrice >= EntryPrice THEN
BUY 3 Contract at Market
SET STOP TRAILING TradePrice * x
ENDIF
ENDIF
Ver si es correcto y ¿Cómo se podría simular?
Saludos
¿A qué te refieres con recuperar posición ? Entonces, ¿tienen que ser dos estrategias separadas?
Si, serían 2 estrategias sobre el mismo instrumento:
Una primera con velas de 1 día y otra segunda (recuperación de la posición) con velas de 30 minutos.
¿A qué te refieres con recuperación de posición ? ¿Pretendes entrar por el camino contrario? ¿Qué es 0.0125?
Buenos días.-
1.- Arranco una estrategia con velas 1 día y en un momento determinado se ejecuta:
BUY 3 Contract at Market
SET STOP TRAILING TradePrice * x //x es un porcentaje 1,25%
Es posible que se cierre la posición en ExitPrice.
Me gustaría recuperar la posición con una segunda estrategia a 30 minutos en el caso que Tradeprice >= EntryPrice (siendo EntryPrice = ExitPrice + ExitPrice * x), por ejemplo:
En la primera estrategia a 1 día se abre una posición a 950 con un stop trailing 11.87 (950 * 0,0125), La posición sube para después bajar y se cierra a un valor de 1000 (ExitPrice)
Se establece una segunda estrategia a 30 minutos para que en el caso que la cotización sea igual o mayor de 1012.5 (EntryPrice) reabrir la posición con un stop trailing 1000*0.0125.
Saludos
He codificado ambas estrategias, pero no creo que puedan funcionar, porque cada una no es consciente de lo que hace la otra. Entonces el primero puede tener señal, pero puede no entrar por deslizamiento o porque la orden es rechazada, y el segundo estrategia no sabe, por lo que puede entrar de todos modos.
La segunda estrategia ni siquiera sabe exactamente si la primera ya ha cerrado una operación o no.
Pruébalos de todos modos (el marco de tiempo por DEFAULT debe ser 30 minutos):
DEFPARAM CumulateOrders = FALSE
Timeframe(default)
IF OnMarket AND Not OnMarket[1] THEN
SET STOP TRAILING TradePrice * 0.0125
ENDIF
//--------------------------------------------------------------------------------------------
Timeframe(Daily,UpdateOnClose)
LongConditions = close CROSSES OVER average[200,0](close) AND Not OnMarket
IF LongConditions THEN
BUY 1 Contract at Market
ENDIF
DEFPARAM CumulateOrders = FALSE
Timeframe(default)
IF MarketFlag = 1 AND MarketFlag[1] = 0 THEN
EntryPrice = close[1]
ExitPrice = EntryPrice * 0.0125
SET STOP TRAILING ExitPrice
ENDIF
//--------------------------------------------------------------------------------------------
Timeframe(Daily,UpdateOnClose)
ONCE MarketFlag = 0
IF StrategyProfit <> StrategyProfit[1] THEN
MarketFlag = 0
ENDIF
LongConditions = close CROSSES OVER average[200,0](close) AND Not OnMarket AND MarketFlag = 0
IF LongConditions THEN
MarketFlag = 1
ENDIF
//--------------------------------------------------------------------------------------------
Timeframe(default)
IF close CROSSES OVER EntryPrice THEN
BUY 1 Contract at Market
ENDIF
Buenas tardes.-
Me ha costado, dado que no se pueden actualizar aunque si leer variables en 2 TimeFrame distintos por lo que he tenido de utilizar Flag para indicar cuando una variable se actualizaba y “variables espejo”.
Creo que sería muy interesante el poder declarar variables como públicas (a modo programación “C”) para poder actualizar y leer en varios TimeFrame.
Pero su contestación ha sido de gran ayuda, muchas gracias.
Saludos