Estratégia de acompanhamento de tendência de canal de média móvel multiperíodo


Data de criação: 2024-02-20 13:45:42 última modificação: 2024-02-20 13:45:42
cópia: 2 Cliques: 607
1
focar em
1617
Seguidores

Estratégia de acompanhamento de tendência de canal de média móvel multiperíodo

Visão geral

A estratégia é uma estratégia de swing, que se aplica a mercados tendenciais como criptomoedas e ações, usando um maior período de tempo, como 8 horas. A estratégia usa várias médias móveis, incluindo SMA, EMA, VWMA, ALMA, SMMA, LSMA e VWMA, aplicadas a altos e baixos, respectivamente, formando dois canais de média.

Faça mais quando o preço de fechamento é superior à média aplicada aos pontos altos; faça menos quando o preço de fechamento é inferior à média aplicada aos pontos baixos.

Princípio da estratégia

A estratégia usa 7 diferentes indicadores de médias móveis, incluindo SMA, EMA, VWMA, ALMA, SMMA, LSMA e VWMA. Estas médias móveis são aplicadas aos preços mais altos e mais baixos da linha K, respectivamente, gerando duas médias.

A média aplicada ao preço mais alto é chamada de avg_high e a média aplicada ao preço mais baixo é chamada de avg_low. As duas médias formam um canal.

Quando o preço de fechamento for maior que o valor da média, faça mais; quando o preço de fechamento for menor que o valor da média, faça a quebra.

A linha de parada é o preço de abertura e a linha de parada é o preço de perda.(1+tp_long); quando estiver em aberto, a linha de parada é a linha de perda média e a linha de parada é o preço de abertura da posição(1-tp_short)。

Análise de vantagens

A maior vantagem dessa estratégia é a utilização de vários indicadores de média móvel para aumentar a probabilidade de lucro. Indicadores de média móvel de diferentes períodos e métodos de cálculo reagem de forma diferente ao preço, combinando o uso pode formar um sinal de negociação mais confiável.

Outra vantagem é a utilização de um canal de negociação. O canal ascendente e descendente limita o alcance do stop loss, reduz o risco e é mais adequado para a estratégia de swing.

Análise de Riscos

A estratégia tem dois riscos principais:

  1. São usadas várias combinações de indicadores de médias móveis. A configuração de parâmetros é complexa e requer muito teste e otimização para encontrar a melhor combinação de parâmetros.

  2. Em mercados com trajectória horizontal e sem uma tendência clara, a estratégia é propensa a produzir perdas e sinais de negociação com várias rupturas ineficazes.

Para reduzir esses riscos, é necessário selecionar variedades de negociação com tendências evidentes, além de fazer um grande feedback e otimização do conjunto de parâmetros para encontrar a configuração de parâmetros mais adequada para a situação atual do mercado.

Direção de otimização

A estratégia também precisa ser melhorada em alguns aspectos:

  1. Teste mais tipos de médias móveis para encontrar combinações melhores. Considere SMA, EMA, KAMA, TEMA, etc.

  2. Optimização de parâmetros para o comprimento da média móvel e a largura do canal para encontrar a melhor configuração de parâmetros.

  3. Teste diferentes configurações de stop-loss. Você pode considerar trailing stop ou stop-loss dinâmico.

  4. Combine os indicadores de tendência para evitar a negociação frequente em mercados sem tendências claras, como ADX, ATR, etc.

  5. Otimizar a lógica de entrada e saída, definir condições de filtro adicionais e reduzir transações inválidas.

Resumir

Esta estratégia é uma estratégia de acompanhamento de tendências de swing, que aumenta a probabilidade de lucro com vários indicadores de médias móveis e reduz o risco com o uso de canais ascendentes e descendentes. A estratégia é adequada para variedades de negociação claramente tendenciais, com melhor eficácia após a otimização dos parâmetros.

Código-fonte da estratégia
/*backtest
start: 2024-01-20 00:00:00
end: 2024-02-19 00:00:00
period: 1h
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/
// © exlux99

//@version=4

strategy(title="High/Low channel swing", shorttitle="Multi MA swing", overlay=true)


fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2000, title = "From Year", minval = 1970)
 //monday and session 
// To Date Inputs
toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2021, title = "To Year", minval = 1970)

startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true

//////
length_ma= input(defval=12, title="Length Moving averages", minval=1)

////////////////////////////////SETUP///////////////////////////////////////////

sma_high   = sma(high, length_ma)
ema_high   = ema(high, length_ma)
wma_high   = wma(high, length_ma)
alma_high  = alma(high,length_ma, 0.85, 6)
smma_high = rma(high,length_ma)
lsma_high = linreg(high, length_ma, 0)
vwma_high = vwma(high,length_ma)



avg_high = (sma_high+ema_high+wma_high+alma_high+smma_high+lsma_high+vwma_high)/7

///////////////////////////////////////////

sma_low   = sma(low, length_ma)
ema_low   = ema(low, length_ma)
wma_low   = wma(low, length_ma)
alma_low  = alma(low,length_ma, 0.85, 6)
smma_low = rma(low,length_ma)
lsma_low = linreg(low, length_ma, 0)
vwma_low = vwma(low,length_ma)



avg_low = (sma_low+ema_low+wma_low+alma_low+smma_low+lsma_low+vwma_low)/7

////////////////////////////PLOTTING////////////////////////////////////////////


plot(avg_high , title="avg", color=color.green, linewidth = 4)
plot(avg_low , title="avg", color=color.red, linewidth = 4)

long= close > avg_high
short = close < avg_low

tplong=input(0.06, title="TP Long", step=0.01)
sllong=input(0.05, title="SL Long", step=0.01)

tpshort=input(0.045, title="TP Short", step=0.01)
slshort=input(0.05, title="SL Short", step=0.01)

if(time_cond)
    strategy.entry("long",1,when=long)
    strategy.exit("closelong", "long" , profit = close * tplong / syminfo.mintick, loss = close * sllong / syminfo.mintick, alert_message = "closelong")
    strategy.close("long", when=crossunder(low,avg_low))
    
    
    strategy.entry("short",0,when=short)
    strategy.exit("closeshort", "short" , profit = close * tpshort / syminfo.mintick, loss = close * slshort / syminfo.mintick, alert_message = "closeshort")
    strategy.close("short",when=crossover(high,avg_high))