Esta estrategia combina PSAR para juzgar las tendencias de precios, ADX para juzgar la fuerza de la tendencia, RSI para localizar zonas de sobrecompra y sobreventa, y CMF para juzgar los flujos de fondos para construir una estrategia comercial cuantitativa intradiaria que siga la tendencia a través de los ciclos. Puede localizar rápidamente nuevas direcciones de tendencia cuando los precios rompen la consolidación y forman nuevas tendencias, y continúa siguiendo las tendencias después.
Las principales reglas de evaluación de esta estrategia son:
Utilice el indicador PSAR para juzgar si los precios están en una tendencia alcista.
Requiere que el RSI esté por encima del punto medio de 50 para filtrar las falsas rupturas que ocurren en zonas de sobreventa.
Requerir que el ADX esté por encima de su línea EMA, lo que indica una señal sostenible en el análisis de tendencias.
Exigir que el CMF sea mayor de 0, juzgando el aumento de los fondos que fluyen.
Las condiciones de venta se producen cuando el PSAR se eleva por encima de los precios, el RSI cae por debajo de 50, el ADX cae por debajo de su EMA y el CMF se vuelve menor que 0.
Esta estrategia tiene en cuenta la dirección de la tendencia de los precios, la fuerza de la tendencia, el estado de sobrecompra/sobreventa y los flujos de fondos al establecer reglas de negociación.
Las principales ventajas de esta estrategia incluyen:
La combinación de múltiples indicadores en el establecimiento de reglas de negociación puede prevenir eficazmente las falsas rupturas y garantizar la calidad de la señal.
La localización rápida de las direcciones de tendencia en ciernes y el seguimiento permite capturar la mayoría de las ganancias de la tendencia.
El establecimiento de condiciones de filtrado de procesos puede controlar los riesgos de manera efectiva y garantizar la eficacia del seguimiento.
Considerar la fuerza de la tendencia ayuda a evitar la congestión del rango de negociación.
Los principales riesgos de esta estrategia incluyen:
La acumulación de una sola estrategia plantea riesgos de cartera, lo que requiere un tamaño de posición adecuado.
Supervise de cerca los cambios de las condiciones de filtración durante el seguimiento para evitar pérdidas cuando se cancele.
Esta estrategia a medio/largo plazo puede verse afectada a corto plazo por las fluctuaciones y entraña riesgos de stop loss.
Las medidas de gestión de riesgos correspondientes incluyen: la optimización de las reglas de dimensionamiento de las posiciones, el establecimiento de líneas de alerta de riesgo y la ampliación de las distancias de detención, etc.
Los espacios de optimización incluyen:
Optimización de parámetros a través del aprendizaje automático dado el ajuste subjetivo actual.
Añadir un módulo de dimensionamiento de posiciones que dimensiones dinámicamente en función de los riesgos.
Mejorar los mecanismos de detención, por ejemplo, las detenciones de retraso, las detenciones de tiempo o las detenciones de fuga.
Esta estrategia combinando indicadores demostró ser eficaz en la localización rápida y seguimiento de tendencias nacientes, validando el comercio cuantitativo basado en múltiples dimensiones como tendencias y fondos.
/*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)