Estrategia de período cruzado basada en AlphaTrend


Fecha de creación: 2023-09-28 11:05:27 Última modificación: 2023-09-28 11:05:27
Copiar: 0 Número de Visitas: 903
1
Seguir
1617
Seguidores

Descripción general

Esta estrategia se basa en el indicador AlphaTrend, que combina las ventajas de los indicadores RSI y MFI para obtener un mejor efecto estratégico en un mercado de tendencia múltiple. La estrategia determina principalmente si el precio rompe la curva AlphaTrend para capturar la dirección de la tendencia.

Principio de estrategia

  1. Calcular el indicador ATR para medir la volatilidad del mercado
  2. Si no hay datos de volumen de transacciones, se utiliza el indicador RSI para determinar la falta de mercado; si hay volumen de transacciones, se utiliza el indicador MFI para determinar la falta de mercado
  3. Cálculo de subida y bajada de la vía según el ATR y la determinación del espacio múltiple
  4. Cálculo de la curva de AlphaTrend, que combina el ajuste de la dinámica ascendente y descendente
  5. Las señales de compra y venta se emiten cuando el precio sube y baja a través de la curva de AlphaTrend

La estrategia se basa en la dirección de la tendencia de los precios en la curva de AlphaTrend, que considera la medida de la volatilidad del mercado ATR, el RSI y el indicador de la pluralidad de los MFI, lo que permite un seguimiento eficaz de la tendencia de los precios. Cuando el precio rompe la curva, indica que la tendencia cambia, y este momento es el momento de entrada.

Ventajas estratégicas

  1. El indicador de AlphaTrend combina las ventajas de RSI y MFI para adaptarse a un mercado en expansión
  2. La configuración dinámica de la vía ascendente y descendente se puede ajustar automáticamente según las fluctuaciones del mercado
  3. La información de precios y volúmenes de transacciones es considerada integralmente y no es fácilmente engañada por señales falsas y contrarias
  4. El uso de métodos innovadores para capturar las nuevas tendencias en el tiempo
  5. La lógica es clara, simple y fácil de entender.

En resumen, la estrategia se aplica a todo tipo de situaciones de mercado, filtra el ruido del mercado, identifica las tendencias con mayor precisión, y es una estrategia de seguimiento de tendencias precisa y eficiente.

Riesgo estratégico

  1. La curva de AlphaTrend puede presentar errores que requieren verificación de Combinación con otros indicadores
  2. Las señales de invalidez pueden aparecer varias veces en situaciones de gran movimiento de la bolsa
  3. Los parámetros de los indicadores mal configurados también pueden afectar la eficacia de la estrategia
  4. En la caída de la tormenta, el stop loss podría ser superado, por lo que hay que estar alerta de grandes pérdidas.

En función del riesgo, se puede configurar un stop loss para controlar las pérdidas individuales; optimización de la combinación de parámetros, que se utiliza con otras combinaciones de indicadores para reducir las señales de invalidez; ajuste de los parámetros según los diferentes mercados.

Optimización de la estrategia

  1. Puede probar diferentes combinaciones de parámetros para encontrar el mejor
  2. Puede combinarse con otros indicadores para formar condiciones auxiliares que ayuden a juzgar
  3. Se puede configurar un stop dinámico o un stop tracker para controlar el riesgo
  4. Se puede usar una frecuencia de negociación diferente según las condiciones del mercado (por ejemplo, 5 minutos, 15 minutos, etc.)
  5. Optimización de la hora de ingreso para establecer condiciones de ingreso más precisas

Se puede seguir optimizando la estrategia para adaptarla a más tipos de situaciones, probando diferentes mercados y parámetros.

Resumir

La estrategia de AlphaTrend es una estrategia de seguimiento de tendencias simple y eficiente. Combina precios y volumen de operaciones para adaptarse a las condiciones de vacío.

Código Fuente de la Estrategia
/*backtest
start: 2023-09-20 00:00:00
end: 2023-09-26 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// author © KivancOzbilgic
// developer © KivancOzbilgic
// pv additions, simplification and strategy conversion @ treigen
//@version=5
strategy('AlphaTrend For ProfitView', overlay=true, calc_on_every_tick=true, process_orders_on_close=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1, initial_capital=1000)
coeff = input.float(1.5, 'Multiplier', step=0.1)
AP = input(15, 'Common Period')
ATR = ta.sma(ta.tr, AP)
novolumedata = input(title='Change calculation (no volume data)?', defval=false)

i_startTime = input(defval = timestamp("01 Jan 2014 00:00 +0000"), title = "Backtesting Start Time", inline="timestart", group='Backtesting')
i_endTime = input(defval = timestamp("01 Jan 2100 23:59 +0000"), title = "Backtesting End Time", inline="timeend", group='Backtesting')
timeCond = true

pv_ex = input.string('', title='Exchange', tooltip='Leave empty to use the chart ticker instead (Warning: May differ from actual market name in some instances)', group='PV Settings')
pv_sym = input.string('', title='Symbol', tooltip='Leave empty to use the chart ticker instead (Warning: May differ from actual market name in some instances)', group='PV Settings')
pv_acc = input.string("", title="Account", group='PV Settings')
pv_alert_long = input.string("", title="PV Alert Name Longs", group='PV Settings')
pv_alert_short = input.string("", title="PV Alert Name Shorts", group='PV Settings')
pv_alert_test = input.bool(false, title="Test Alerts", tooltip="Will immediately execute the alerts, so you may see what it sends. The first line on these test alerts will be excluded from any real alert triggers" ,group='PV Settings')

upT = low - ATR * coeff
downT = high + ATR * coeff
AlphaTrend = 0.0
AlphaTrend := (novolumedata ? ta.rsi(close, AP) >= 50 : ta.mfi(hlc3, AP) >= 50) ? upT < nz(AlphaTrend[1]) ? nz(AlphaTrend[1]) : upT : downT > nz(AlphaTrend[1]) ? nz(AlphaTrend[1]) : downT


k1 = plot(AlphaTrend, color=color.new(#0022FC, 0), linewidth=3)
k2 = plot(AlphaTrend[2], color=color.new(#FC0400, 0), linewidth=3)

buySignalk = ta.crossover(AlphaTrend, AlphaTrend[2])
sellSignalk = ta.crossunder(AlphaTrend, AlphaTrend[2])

var exsym = ""
if barstate.isfirst
    exsym := pv_ex == "" ? "" : "ex=" + pv_ex + ","
    exsym := pv_sym == "" ? exsym : exsym + "sym=" + pv_sym + ","


if barstate.isconfirmed and timeCond 
    if strategy.position_size <= 0 and buySignalk
        strategy.entry("Buy", strategy.long)
        alert(pv_alert_long + "(" + exsym + "acc=" + pv_acc + ")", alert.freq_once_per_bar_close)
    if strategy.position_size >= 0 and sellSignalk
        strategy.entry("Sell", strategy.short)
        alert(pv_alert_short + "(" + exsym + "acc=" + pv_acc + ")", alert.freq_once_per_bar_close)


//  Only used for testing/debugging alert messages
if pv_alert_test
    alert("<![Alert Test]!>\n" + pv_alert_long + "(" + exsym + "acc=" + pv_acc + ")", alert.freq_once_per_bar)
    alert("<![Alert Test]!>\n" + pv_alert_short + "(" + exsym + "acc=" + pv_acc + ")", alert.freq_once_per_bar)