problemas con backtest con gap trading
Forums › ProRealTime foro Español › Soporte ProOrder › problemas con backtest con gap trading
- This topic has 9 replies, 2 voices, and was last updated 2 years ago by robertogozzi.
-
-
10/24/2022 at 2:48 PM #202983
hola, estoy intentando realizar un backtest de mi estrategia y me encuentro con el problema de las temporalidades.
La estrategia plantea la entrada según la velas en minutos (ETH) siempre que se cumpla una condición en temporalidad diaria (RTH), en concreto que tengamos un gap>= +-4% a la apertura. el código que he probado es el siguiente, pero no funciona correctamente. Agradezco cualquier ayuda
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071timeframe(Daily, UPDATEONCLOSE)bajista= 0.96*close[1]>openalcista= 1.04*close[1]<opentimeframe(1minute)//Defino las medias.//Media larga y media corta:MediaLarga = Average[200](close)MediaCorta = Average[20](close)//Condición 1: Entrada a partir de la quinta vela y antes de la primera hora:C1 = Time > 093500 AND Time =< 103000//Condición 2: Entrada a largo por encima de la media corta, la cual está por encima de la media larga, ambas ascendentes, al final de la primera vela verde después de una o varias rojas (retroceso):C21 = MediaCorta > MediaLargaC22 = MediaCorta[1] < MediaCortaC23 = MediaLarga[1] < MediaLargaC24 = Close > MediaCortaC25 = Close[1] =< Open[1] AND Close > OpenC2 = C21 and C22 and C23 and C24 and C25//Condición 3: Entrada a corto por debajo de la media corta, la cual está por debajo de la media larga, ambas descendentes, al final de la primera vela roja después de una o varias verdes (retroceso)::C31 = MediaCorta < MediaLargaC32 = MediaCorta[1] > MediaCortaC33 = MediaLarga[1] > MediaLargaC34 = Close < MediaCortaC35 = Close[1] => Open[1] AND Close < OpenC3 = C31 and C32 and C33 and C34 and C35IF NOT LongOnMarket AND (bajista or alcista) and c1 and c2 THENBUY 7000 CASH AT MARKETENDIF// Condiciones de entrada de posiciones cortasIF NOT ShortOnMarket AND (bajista or alcista) and c1 and c3 THENSELLSHORT 7000 CASH AT MARKETENDIFIF (OnMarket AND Not OnMarket[1]) OR (LongOnMarket AND ShortOnMarket[1]) OR (LongOnMarket[1] AND ShortOnMarket) THENPC = TradePriceIF LongOnMarket THENSet Stop Price (PC * 0.99)ELSIF ShortOnMarket THENSet Stop Price (PC * 1.01)ENDIFENDIFIF LongOnMarket THENIF close > (PC * 1.02) THENSet Stop Price (PC * 1.015)ELSIF close > (PC * 1.015) THENSet Stop Price (PC * 1.01)ELSIF close > (PC * 1.01) THENSet Stop Price (PC * 1.005)ELSIF close > (PC * 1.005) THENSet Stop BreakevenENDIFELSIF ShortOnMarket THENIF close < (PC * 0.98) THENSet Stop Price (PC * 0.985)ELSIF close < (PC * 0.985) THENSet Stop Price (PC * 0.99)ELSIF close < (PC * 0.99) THENSet Stop Price (PC * 0.995)ELSIF close < (PC * 0.995) THENSet Stop BreakevenENDIFENDIF10/25/2022 at 10:05 AM #203001¿Qué no está funcionando correctamente?
¿Puede decirme en qué instrumento lo probó, en qué período de tiempo (¿1 minuto?) Y cuántas unidades?
10/25/2022 at 1:56 PM #203013hola gracias por la respuesta. Ya he conseguido que me detecte la entrada con el gap diario, sin embargo ahora la salida la ejecuta de forma diferente si le pido backtest desde origen o por ejemplo desde ayer
lo aplico en gráfico de 1 minuto
valor FUTU
adjunto el codigo en el que he definido escalon como una variable=0.005
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127DEFPARAM CumulateOrders = falseOTD = (Barindex - TradeIndex(1) > IntradayBarIndex)if time =093000 thengap=abs(((open-DClose(1))/DClose(1))*100)endiftimeframe(DEFAULT )MediaLarga = Average[200](close)MediaCorta = Average[20](close)//Condición 1: Entrada a partir de la quinta vela y antes de la primera hora:C1 = Time > 093500 AND Time =< 103000//Condición 2: Entrada a largo por encima de la media corta, la cual está por encima de la media larga, ambas ascendentes, al final de la primera vela verde después de una o varias rojas (retroceso):C21 = MediaCorta > MediaLargaC22 = MediaCorta[1] < MediaCortaC23 = MediaLarga[1] < MediaLargaC24 = Close > MediaCortaC25 = Close[1] =< Open[1] AND Close > OpenC2 = C21 and C22 and C23 and C24 and C25//Condición 3: Entrada a corto por debajo de la media corta, la cual está por debajo de la media larga, ambas descendentes, al final de la primera vela roja después de una o varias verdes (retroceso)::C31 = MediaCorta < MediaLargaC32 = MediaCorta[1] > MediaCortaC33 = MediaLarga[1] > MediaLargaC34 = Close < MediaCortaC35 = Close[1] => Open[1] AND Close < OpenC3 = C31 and C32 and C33 and C34 and C35IF NOT LongOnMarket AND (gap>4) and c1 and c2 and OTD THENBUY 7000 CASH AT MARKETENDIF// Condiciones de entrada de posiciones cortasIF NOT ShortOnMarket AND (gap>4) and c1 and c3 and OTD THENSELLSHORT 7000 CASH AT MARKETENDIFIF (OnMarket AND Not OnMarket[1]) OR (LongOnMarket AND ShortOnMarket[1]) OR (LongOnMarket[1] AND ShortOnMarket) THENPC = TradePriceIF LongOnMarket THENSet Stop Price (PC * 0.99)ELSIF ShortOnMarket THENSet Stop Price (PC * 1.01)ENDIFENDIFIF LongOnMarket THENIF close > (PC * (1+(10*escalon))) THENSet Stop Price (PC * (1+(9*escalon)))ELSIF close > (PC * (1+(9*escalon))) THENSet Stop Price (PC * (1+(8*escalon)))ELSIF close > (PC * (1+(8*escalon))) THENSet Stop Price (PC * (1+(7*escalon)))ELSIF close > (PC * (1+(7*escalon))) THENSet Stop Price (PC * (1+(6*escalon)))ELSIF close > (PC * (1+(6*escalon))) THENSet Stop Price (PC * (1+(5*escalon)))ELSIF close > (PC * (1+(5*escalon))) THENSet Stop Price (PC * (1+(4*escalon)))ELSIF close > (PC * (1+(4*escalon))) THENSet Stop Price (PC * (1+(3*escalon)))ELSIF close > (PC * (1+(3*escalon))) THENSet Stop Price (PC * (1+(2*escalon)))ELSIF close > (PC * (1+(2*escalon))) THENSet Stop Price (PC * (1+(1*escalon)))ELSIF close > (PC * (1+(1*escalon))) THENSet Stop BreakevenENDIFELSIF ShortOnMarket THENIF close < (PC * (1-(10*escalon))) THENSet Stop Price (PC * (1-(9*escalon)))ELSIF close < (PC * (1-(9*escalon))) THENSet Stop Price (PC * (1-(8*escalon)))ELSIF close < (PC * (1-(8*escalon))) THENSet Stop Price (PC * (1-(7*escalon)))ELSIF close < (PC * (1-(7*escalon))) THENSet Stop Price (PC * (1-(6*escalon)))ELSIF close < (PC * (1-(6*escalon))) THENSet Stop Price (PC * (1-(5*escalon)))ELSIF close < (PC *(1-(5*escalon))) THENSet Stop Price (PC * (1-(4*escalon)))ELSIF close < (PC * (1-(4*escalon))) THENSet Stop Price (PC * (1-(3*escalon)))ELSIF close < (PC * (1-(3*escalon))) THENSet Stop Price (PC * (1-(2*escalon)))ELSIF close < (PC * (1-(2*escalon))) THENSet Stop Price (PC * (1-escalon))ELSIF close < (PC * (1-escalon )) THENSet Stop BreakevenENDIFENDIF11/02/2022 at 9:02 AM #203395¿Qué es ESCALON?
11/02/2022 at 2:42 PM #203414hola
escalon es una variable que he definido en el apartado de variables para posteriormente poder optimizarla. en concreto para el caso actual su valor es 0.005
lo que pretendo es ir moviendo el stop loss en saltos de 0.5%
11/03/2022 at 5:26 PM #203484Lo he probado en el BMW action (no he encontrado ningún FUTU, ¿cuál es?) y me parece que funciona correctamente.
Dime con qué herramienta lo probaste, la fecha y la hora de algunas operaciones incorrectas. También dime por qué son incorrectos.
11/18/2022 at 11:06 AM #204379hola Roberto, el código lo probé con el siguiente valor: Futu Holdings Limited (NASDAQ: FUTU)
también tengo activado el premarket, es decir las medias se calculan con ETH.
realizando el backtest desde el 1 nov 2022 4:28, hasta la ultima fecha disponible, tenemos:
1 nov 09:37 entrada 36.36 y salida 36.36 ;correcta
4 nov 09:37 entrada 39.21 (correcto) y salida 09:37 39.21. No es correcto, la salida tendría que estar en 38.82
sin embargo, cuando cambio la temporalidad de análisis para que comience el día 4 de noviembre, entonces la entrada y salida sí es correcta
te adjunto unas imágenes para que se vea la diferencia
11/18/2022 at 8:02 PM #204405No es una acción apoyada por IG. No sé qué decirte.
11/20/2022 at 10:56 AM #204500hola Roberto, gracias por la respuesta.
No me queda claro lo que quieres decir con tu respuesta. por acción te refieres a share.
11/23/2022 at 10:42 AM #204675Si, shares or stocks
-
AuthorPosts
Find exclusive trading pro-tools on