
Esta estrategia utiliza el indicador PSAR para determinar la tendencia de los precios, el indicador ADX para determinar la fortaleza de la tendencia, el indicador RSI para determinar las zonas de sobreventa y el indicador CMF para determinar el flujo de fondos, para construir una estrategia de comercio cuantitativa de seguimiento de tendencias a lo largo de los ciclos. Esta estrategia se posiciona rápidamente cuando se determina que los precios se contraen para formar una nueva dirección de tendencia y se sigue en la tendencia posterior, al mismo tiempo que establece condiciones de filtrado para reducir el riesgo de la posición para garantizar que se capten los principales beneficios de la tendencia.
Las principales reglas de esta política son las siguientes:
El indicador PSAR se utiliza para determinar si el precio está en una tendencia al alza, y el descenso del PSAR se considera como el final de una tendencia al alza y el cambio a una caída;
El indicador RSI requiere que el indicador esté por encima de la línea media de 50, para filtrar falsos brechas que se forman en las zonas de sobreventa;
El ADX exige un nivel más alto que el promedio de su EMA, lo que indica una señal de continuidad en los resultados del análisis de tendencias;
El CMF requiere un valor mayor a 0, que se juzgará como un flujo de capital.
Se produce una señal de compra cuando se cumplen las cuatro condiciones anteriores; se produce una señal de venta cuando se cumple el PSAR, el RSI está por debajo de 50, el ADX está por debajo de su línea media EMA y el CMF es menor que 0.
La estrategia tiene en cuenta la dirección de la tendencia del precio, la intensidad de la tendencia, el estado de sobrecompra y sobreventa y el flujo de fondos a varias dimensiones para establecer reglas de negociación, y establece un juicio lógico riguroso para determinar la generación de señales de negociación, que puede filtrar eficazmente las brechas falsas y asegurar la captura de la dirección de la tendencia que es sostenible con una alta probabilidad.
Las principales ventajas de esta estrategia son:
La combinación de una variedad de reglas de negociación para el establecimiento de indicadores puede prevenir eficazmente los falsos brechas y garantizar la calidad de las señales de negociación.
Identificar rápidamente la dirección de las tendencias emergentes y seguirlas para aprovechar plenamente los beneficios de la tendencia;
El proceso de configuración rastrea las condiciones de filtración, lo que permite controlar los riesgos de manera efectiva y garantizar el seguimiento.
La combinación de los indicadores de la intensidad de la tendencia puede evitar la dificultad de ajuste.
Los principales riesgos de esta estrategia son los siguientes:
Una sola estrategia es propensa a acumular riesgos y requiere un ajuste adecuado de la posición para controlar el riesgo global.
El seguimiento de los cambios en las condiciones de filtración requiere un seguimiento atento para evitar la pérdida de corte después de la cancelación de las condiciones.
Esta estrategia se basa en la línea media y larga, y el contenido a corto plazo es vulnerable a la fluctuación y presenta un riesgo de pérdida.
Las medidas de gestión de riesgos correspondientes incluyen: optimización de las reglas de gestión de posiciones, establecimiento de líneas de alerta de riesgo, tolerancia adecuada de la distancia entre las líneas de stop loss, etc.
La estrategia tiene el siguiente espacio de optimización:
Optimización de la configuración de los parámetros, actualmente la configuración de los parámetros es más subjetiva, y se puede introducir una optimización automática de los métodos de aprendizaje automático;
El aumento del módulo de gestión de posiciones, que permite ajustar las posiciones de forma dinámica en función de la situación de riesgo;
Aumentar la optimización de los mecanismos de detención de pérdidas, como el seguimiento de la detención, el tiempo de detención, la ruptura de la detención, etc.
Esta estrategia integra varias reglas de evaluación de indicadores, permite la localización rápida y el seguimiento continuo de las tendencias emergentes, y verifica la eficacia del análisis multidimensional, como la combinación de tendencias y fondos en el comercio cuantitativo. La estrategia puede usarse como una estrategia básica para el seguimiento de tendencias transitorias en forma de índice, o puede construirse como una estrategia de cuantificación lineal estable a medio y largo plazo después de la optimización de parámetros y módulos.
/*backtest
start: 2023-11-14 00:00:00
end: 2023-12-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("psar+ adx + cmf + rsi Strategy", overlay=true,initial_capital = 1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent , commission_value=0.1 )
start = input(1.02)
increment = input(1.02)
maximum = input(1.2)
var bool uptrend = na
var float EP = na
var float SAR = na
var float AF = start
var float nextBarSAR = na
if bar_index > 0
firstTrendBar = false
SAR := nextBarSAR
if bar_index == 1
float prevSAR = na
float prevEP = na
lowPrev = low[1]
highPrev = high[1]
closeCur = close
closePrev = close[1]
if closeCur > closePrev
uptrend := true
EP := high
prevSAR := lowPrev
prevEP := high
else
uptrend := false
EP := low
prevSAR := highPrev
prevEP := low
firstTrendBar := true
SAR := prevSAR + start * (prevEP - prevSAR)
if uptrend
if SAR > low
firstTrendBar := true
uptrend := false
SAR := max(EP, high)
EP := low
AF := start
else
if SAR < high
firstTrendBar := true
uptrend := true
SAR := min(EP, low)
EP := high
AF := start
if not firstTrendBar
if uptrend
if high > EP
EP := high
AF := min(AF + increment, maximum)
else
if low < EP
EP := low
AF := min(AF + increment, maximum)
if uptrend
SAR := min(SAR, low[1])
if bar_index > 1
SAR := min(SAR, low[2])
else
SAR := max(SAR, high[1])
if bar_index > 1
SAR := max(SAR, high[2])
nextBarSAR := SAR + AF * (EP - SAR)
//rsi strat
length = input( 50 )
middle_RSI=input(49)
price = close
vrsi = rsi(price, length)
//cmf
lengthCMF = input(20, minval=1)
ad = close==high and close==low or high==low ? 0 : ((2*close-low-high)/(high-low))*volume
mf = sum(ad, lengthCMF) / sum(volume, lengthCMF)
//ADX
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
dirmov(len) =>
up = change(high)
down = -change(low)
plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
truerange = rma(tr, len)
plus = fixnan(100 * rma(plusDM, len) / truerange)
minus = fixnan(100 * rma(minusDM, len) / truerange)
[plus, minus]
adx(dilen, adxlen) =>
[plus, minus] = dirmov(dilen)
sum = plus + minus
adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
sig = adx(dilen, adxlen)
ema_length=input(10)
ema_sig= ema(sig,ema_length)
long = not uptrend and vrsi > middle_RSI and sig > ema_sig and mf>0
short= uptrend and vrsi < middle_RSI and sig<ema_sig and mf<0
strategy.entry("long",1,when=long)
strategy.close('long',when=short)