DEFPARAM CumulateOrders = FALSE // Acumulación de posiciones desactivada
z = 60
w = 60
// Condiciones para entrada de posiciones largas
indicator1 = WeightedAverage[9](totalPrice)
indicator2 = WeightedAverage[100](totalPrice)
c1 = (indicator1 CROSSES OVER indicator2)
c2 = (indicator1 > indicator2 + z)
c3 = (indicator1 CROSSES UNDER indicator2)
C4 = (indicator1 < indicator2 - Z)
c7 = (indicator1 < indicator2 - w)
C8 = (indicator1 > indicator2 + w)
IF c1 and C2 THEN
BUY 2 CONTRACT AT market
ENDIF
// Condiciones de salida de posiciones largas
IF c3 and C7 THEN
SELL AT MARKET
ENDIF
// Condiciones de entrada de posiciones cortas
IF c3 and C4 THEN
SELLSHORT 2 CONTRACT AT market
ENDIF
// Condiciones de salida de posiciones cortas
IF c1 and C8 THEN
EXITSHORT AT MARKET
ENDIF
DEFPARAM CumulateOrders = FALSE // Acumulación de posiciones desactivada
z = 60
w = 60
// Condiciones para entrada de posiciones largas
indicator1 = WeightedAverage[9](totalPrice)
indicator2 = WeightedAverage[100](totalPrice)
c1 = (indicator1 > indicator2)
c2 = (indicator1 > indicator2 + z)
c3 = (indicator1 < indicator2)
C4 = (indicator1 < indicator2 - Z)
c7 = (indicator1 < indicator2 - w)
C8 = (indicator1 > indicator2 + w)
IF c1 and C2 THEN
BUY 2 CONTRACT AT market
ENDIF
// Condiciones de salida de posiciones largas
IF c3 and C7 THEN
SELL AT MARKET
ENDIF
// Condiciones de entrada de posiciones cortas
IF c3 and C4 THEN
SELLSHORT 2 CONTRACT AT market
ENDIF
// Condiciones de salida de posiciones cortas
IF c1 and C8 THEN
EXITSHORT AT MARKET
ENDIF
Buenos dias a tod@s,
Necesito ayuda con mi código ya que no consigo programar mi idea correctamente.
La idea es sencilla; cuando se produce cruce al alza de MM9 versus MM100, se da una primera señal de entrada con largos y cuando el cruze es a la baja se da primera señal para abrir cortos.. Pero hasta que la distancia entre las MM no sea mínimo de 60 puntos no debe realizarse la apertura de largos o cortos, según el caso.
Con mi siguiente código, en cuanto lo activo abre posición sin esperar al cruce me medias previo:
Por otro lado cuando aplico este otro código el error está en que solo abre posición, si en el momento del cruce de MM la distancia es mínimo de 60. En caso de que la distancia mínimo de 60 se alcance más adelante, ya no abre posición.
Ruego me ayudéis para poder sacar mi sistema adelante.
Muchas gracias a tod@s.
Ahi esta:
DEFPARAM CumulateOrders = FALSE // Acumulación de posiciones desactivada
ONCE c1Flag = 0
ONCE c3Flag = 0
ONCE c1 = 0
ONCE c3 = 0
z = 60
w = 60
// Condiciones para entrada de posiciones largas
indicator1 = WeightedAverage[9](totalPrice)
indicator2 = WeightedAverage[100](totalPrice)
IF c1 = 0 THEN
c1 = (indicator1 CROSSES OVER indicator2)
IF c1 THEN
c1Flag = 1
c3 = 0
c3Flag = 0
ENDIF
ENDIF
c2 = (indicator1 - indicator2) > z//(indicator1 > indicator2 + z)
IF c3 = 0 THEN
c3 = (indicator1 CROSSES UNDER indicator2)
IF c3 THEN
c3Flag = 1
c1 = 0
c1Flag = 0
ENDIF
ENDIF
C4 = (indicator2 - indicator1) > Z//(indicator1 < indicator2 - Z)
c7 = (indicator2 - indicator1) > w//(indicator1 < indicator2 - w)
C8 = (indicator1 - indicator2) > w//(indicator1 > indicator2 + w)
IF c1Flag and C2 THEN
BUY 2 CONTRACT AT market
ENDIF
// Condiciones de salida de posiciones largas
IF c3Flag and C7 THEN
SELL AT MARKET
ENDIF
// Condiciones de entrada de posiciones cortas
IF c3Flag and C4 THEN
SELLSHORT 2 CONTRACT AT market
ENDIF
// Condiciones de salida de posiciones cortas
IF c1Flag and C8 THEN
EXITSHORT AT MARKET
ENDIF
No publicaste el segundo código.
Hola, buenas noches Roberto.
He operado con este código en cuenta Demo para comprobarlo y, lamentablemente, ha abierto posiciones antes del cruce de MM.
Busco que, cuando activo el sistema por primera vez, no haga ninguna operación hasta que no se den los condicionantes: Un nuevo corte de MM, y una distancia mínima entre MM de 60 puntos.
Así que no debería haber abierto posición hoy, dado que lo he activado sobre las 9h y ha abierto posición sin esperar a un nuevo corte de MM.
Muchas gracias por tu ayuda.
Adjunto imagen de la entrada errónea.
Agregue esto como una segunda línea:
DEFPARAM PreLOadBars = 0
Lo probé y entra correctamente, después de cada cruce, si el ancho supera los 60 puntos.
Agregue estas líneas al final, para que pueda ver las diversas señales en la ventana de variables que abre el backtest:
graph indicator1 CROSSES OVER indicator2 coloured("LawnGreen")
graph indicator1 CROSSES UNDER indicator2 coloured("Red")
graph abs(indicator1 - indicator2) > zz