Esta estrategia emplea un mecanismo de seguimiento bidireccional, combinado con señales de reversión de precios e indicadores de volumen, para realizar una negociación cuantitativa automatizada. Su mayor ventaja radica en un control de riesgo confiable mediante el seguimiento de la parada de pérdida para bloquear las ganancias y evitar la expansión de las pérdidas. Mientras tanto, las señales de negociación de reversión mejoran la tasa de ganancia de la estrategia.
Esta estrategia consiste en dos subestrategias. La primera subestrategia utiliza indicadores estocásticos para determinar las señales de inversión de precios. La lógica específica es:
Si el precio de cierre aumenta durante dos días consecutivos, y la línea Slow K de 9 días es inferior a 50, vaya largo; Si el precio de cierre cae durante dos días consecutivos, y la línea Fast K de 9 días es superior a 50, vaya corto.
La segunda subestrategia combina indicadores de volumen de negociación para juzgar la fuerza del impulso. Específicamente, el volumen de negociación actual se compara con el volumen de negociación promedio de 40 días. Si el volumen de negociación actual es mayor que el promedio, se considera un volumen agresivo, que pertenece a la señal de inversión para ir corto. Si el volumen de negociación actual es menor que el promedio, se considera un volumen hacia abajo, que pertenece a la señal de inversión para ir largo.
La señal de negociación final es la intersección de las señales de las dos subestrategias. Es decir, una posición se abrirá solo cuando ambas subestrategias emitan señales simultáneamente.
La estrategia se puede optimizar aún más en los siguientes aspectos:
En resumen, esta estrategia se basa principalmente en el seguimiento bidireccional y la inversión de precios, además del análisis de impulso de volumen para mejorar la calidad de la señal mediante doble confirmación.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 16/11/2020 // This is combo strategies for get a cumulative signal. // // First strategy // This System was created from the Book "How I Tripled My Money In The // Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies. // The strategy buys at market, if close price is higher than the previous close // during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. // The strategy sells at market, if close price is lower than the previous close price // during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50. // // Second strategy // Volume and SMA // // WARNING: // - For purpose educate only // - This script to change bars colors. //////////////////////////////////////////////////////////// Reversal123(Length, KSmoothing, DLength, Level) => vFast = sma(stoch(close, high, low, Length), KSmoothing) vSlow = sma(vFast, DLength) pos = 0.0 pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1, iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) pos VSAVol(Length) => pos = 0.0 xSMA_vol = sma(volume, Length) pos := iff(volume > xSMA_vol, -1, iff(volume < xSMA_vol, 1, nz(pos[1], 0))) pos strategy(title="Combo Backtest 123 Reversal & Volume SMA", shorttitle="Combo", overlay = true) Length = input(14, minval=1) KSmoothing = input(1, minval=1) DLength = input(3, minval=1) Level = input(50, minval=1) //------------------------- Length_MAVol = input(40, minval=1) reverse = input(false, title="Trade reverse") posReversal123 = Reversal123(Length, KSmoothing, DLength, Level) posVSAVol = VSAVol(Length_MAVol) pos = iff(posReversal123 == 1 and posVSAVol == 1 , 1, iff(posReversal123 == -1 and posVSAVol == -1, -1, 0)) possig = iff(reverse and pos == 1, -1, iff(reverse and pos == -1 , 1, pos)) if (possig == 1) strategy.entry("Long", strategy.long) if (possig == -1) strategy.entry("Short", strategy.short) if (possig == 0) strategy.close_all() barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )