Estratégia de período cruzado baseada no AlphaTrend


Data de criação: 2023-09-28 11:05:27 última modificação: 2023-09-28 11:05:27
cópia: 0 Cliques: 903
1
focar em
1617
Seguidores

Visão geral

Esta estratégia é baseada no indicador AlphaTrend, que combina os benefícios dos dois indicadores RSI e MFI para obter melhores efeitos de estratégia em mercados de tendência múltipla. A estratégia determina principalmente se o preço quebra a curva AlphaTrend para capturar a direção da tendência.

Princípio da estratégia

  1. Calcular o indicador ATR para medir a volatilidade do mercado
  2. Se não houver dados de volume de transação, use o indicador RSI para determinar a falta de mercado; Se houver volume de transação, use o indicador MFI para determinar a falta de mercado
  3. Computação de subida e descida de carril com base em ATR e julgamento de espaço múltiplo
  4. Calcule a curva AlphaTrend, que combina o ajuste da dinâmica ascendente e descendente
  5. Os sinais de compra e venda são emitidos quando o preço sobe e desce pela curva AlphaTrend

A estratégia baseia-se principalmente na AlphaTrend curva para determinar a direção da tendência de preços, que considera integralmente a medida de flutuação do mercado ATR, RSI e indicadores de MFI de alta volatilidade, para rastrear efetivamente a tendência de preços. Quando o preço quebra a curva, indica que a tendência se reverteu, e esse momento é o ponto de entrada.

Vantagens estratégicas

  1. Os indicadores AlphaTrend combinam os benefícios dos dois indicadores RSI e MFI, adaptando-se simultaneamente a um mercado livre
  2. A configuração dinâmica de ascensão e descensão pode ser ajustada automaticamente de acordo com as flutuações do mercado
  3. A informação sobre preços e volumes de transação é considerada integralmente, e não é facilmente confundida com sinais falsos e contrários
  4. Atividades inovadoras para captar novas tendências em tempo hábil
  5. A lógica é clara, simples e fácil de entender.

Em resumo, a estratégia é válida em todos os cenários, filtra o ruído do mercado, identifica tendências com maior precisão e é uma estratégia de acompanhamento de tendências muito eficiente.

Risco estratégico

  1. Caso a curva AlphaTrend possa ter uma ruptura errônea, a combinação com outros indicadores será necessária para a verificação
  2. Sinais de falha podem ocorrer em situações de grandes tremores
  3. Parâmetros de indicadores mal definidos também podem afetar a eficácia da estratégia
  4. No caso de uma forte queda, o stop loss pode ser ultrapassado, e é preciso estar alerta para grandes perdas.

De acordo com o risco, pode-se definir o stop loss para controlar a perda individual; Optimizar a combinação de parâmetros, com outras combinações de indicadores para reduzir o sinal de invalidez; Ajustar a configuração de parâmetros de acordo com diferentes mercados.

Otimização de Estratégia

  1. Experimentar com diferentes combinações de parâmetros para encontrar o melhor
  2. Pode ser combinado com outros indicadores para formar condições auxiliares de julgamento.
  3. Pode-se definir um stop-loss dinâmico ou um stop-loss de rastreamento para controlar o risco
  4. A frequência de negociação pode variar de acordo com a situação do mercado (por exemplo, 5 minutos, 15 minutos, etc.)
  5. Otimizar o timing de entrada e definir condições de entrada mais precisas

A estratégia pode ser continuamente aperfeiçoada, testando diferentes mercados e parâmetros, para que possa ser adaptada a mais tipos de cenários.

Resumir

A estratégia de AlphaTrend é uma estratégia de seguimento de tendência simples e eficiente. Combina preços e volume de negociação, adaptando-se a uma situação de mercado vazio.

Código-fonte da estratégia
/*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)