Hola.
Tengo en el grafico de temporalidad 15 minutos una media exponencial 8 pero en temporalidad de 1 hora. He intentado montar un bot pero no me aparece la media en las opciones de indicadores. Es por ello que quiero un bot que compre cuando el precio de 15 minutos cruce hacia arriba la EMA 8 de 1h, para salir el cruce abajo del precio con la EMA 8.
Muchas gracias
he montado el bot pero en venta .
no entiendo porque no entra en la flecha indicada de la imagen adjunta ya que cumple que la vela rompe hacia abajo la EMA8.
adjunto el bot
// Definición de los parámetros del código
DEFPARAM CumulateOrders = False // Acumulación de posiciones desactivada
// Condiciones de entrada de posiciones cortas
timeframe(1 hour,updateonclose)
indicator1 = ExponentialAverage[8](close)
c1 = (close <= indicator1)
indicator3 =ExponentialAverage[8](close)[1]
c3 = (indicator3[1] >= indicator1)
IF c1 and c3 THEN
SELLSHORT 1 CONTRACT AT MARKET
ENDIF
// Condiciones de salida de posiciones cortas
indicator1 = SAR[0.02,0.02,0.2]
indicator2 = SAR[0.02,0.02,0.2]
c2 = (indicator1 <= indicator2[1])
IF c2 THEN
EXITSHORT AT MARKET
ENDIF
buenas. Aquí tienes el sistema que solicitabas en tu primer comentario.
/*
bot que compre cuando el precio de 15 minutos cruce hacia arriba la EMA 8 de 1h, para salir el cruce abajo del precio con la EMA 8.
*/
// Define la EMA 8 de 1hora
timeframe(1h,updateonclose)
ema8=exponentialaverage[8](close)
// Pasa al timeframe de la operativa (15 minutos)
timeframe(15mn)
// Condiciones entrada
setupEntradaLargo=close crosses over ema8
if not onmarket and setupEntradaLargo then
buy 1 contract at market
endif
// Condiciones salida
setupSalidaLargo= close crosses under ema8
if onmarket and setupSalidaLargo then
sell 1 contract at market
endif
graphonprice ema8 coloured("red")
el problema que tienes en el código que has proporcionado es que estás llamando igaul al PSAR (indicador1) y a la EMA8.
Además estás trabajando todo en timeframe de 1hora porque nunca vuelves a declarar timeframe de 15 minutos. No sé si eso es lo que querías.
Una buena practica es nombrar tú mismo los indicadores. De esta forma con que los declares una vez no lo tendrás que volver a hacer más y sólo tendrás que llamarlos cuando los necesites. Por ejemplo:
// Definición de los parámetros del código
DEFPARAM CumulateOrders = False // Acumulación de posiciones desactivada
// Condiciones de entrada de posiciones cortas
timeframe(1 hour,updateonclose)
ema8 = ExponentialAverage[8](close) //aquí defines la ema de 8
c1 = (close <= ema8)
//indicator3 =ExponentialAverage[8](close)[1] //No hace falta
c3 = (ema8[1] >= ema8)
en el comando 10 indica que hay que trabajar en timeframe 15 mn, no? o es que hay que poner alguna instruccion mas?
Hola.
Sí, la instrucción timeframe(15mn) lo que hace es que a partir de esa línea y hacia abajo, los calculos se hacen en TF 15mn.
Puedes ver más sobre timeframe aquí: https://www.prorealcode.com/documentation/timeframe-probacktest-proorder/
Entonces el bot esta correctamente formulado, sin embargo no entra cuando deberia hacerlo. Te adjunto en archivo adjunto la imagen y el bot a ver si puedes encontrar porque falla.
Muchas gracias Ivan
Esto es porque tienes la condición de salida por PSAR que contradice el setup de entrada.
Si añades a la condición de salida que el activo esté ya dentro del mercado entonces te dará la entrada y acto seguido la salida.
IF onmarket and c2 THEN
EXITSHORT AT MARKET
ENDIF