Com base em uma estratégia de acompanhamento de tendências de múltiplos períodos de tempo


Data de criação: 2024-02-19 11:13:22 última modificação: 2024-02-19 11:13:22
cópia: 1 Cliques: 545
1
focar em
1617
Seguidores

Com base em uma estratégia de acompanhamento de tendências de múltiplos períodos de tempo

Visão geral

A estratégia é uma estratégia de acompanhamento de tendências que utiliza o consentimento de vários indicadores de quadros de tempo. Ela abre uma posição de alta ou baixa ao mesmo tempo na linha do sol, na linha do dia 10, na linha do dia 15 e na linha do dia 30, usando o método de parada de perda dinâmica.

Princípio da estratégia

A estratégia usa quatro prazos de tempo: dia, dia 10, dia 15 e dia 30 para determinar a direção da tendência. Quando os quatro prazos de fechamento são mais altos do que o preço de abertura, é considerado um otimismo. Quando os quatro prazos de fechamento são mais baixos do que o preço de abertura, é considerado um otimismo.

Faça uma entrada adicional quando for considerado positivo; Faça uma entrada de curto prazo quando for considerado negativo. Após a entrada, use o canal KC para fazer um stop loss dinâmico.

Em particular, a estratégia julga a direção da tendência comparando o preço de abertura e o preço de fechamento em diferentes quadros de tempo. Se o preço de abertura for inferior ao preço de fechamento, o quadro de tempo é positivo, em verde. Se o preço de abertura for superior ao preço de fechamento, o quadro de tempo é negativo, em vermelho.

Quando os quatro quadros de tempo são positivos, a estratégia abre uma posição a mais; quando os quatro quadros de tempo são negativos, a estratégia abre uma posição a menos.

Vantagens estratégicas

  1. O uso de múltiplos prazos para julgar a tendência permite filtrar de forma eficaz as falsas rupturas e determinar a direção da tendência

  2. O método de stop loss dinâmico protege o máximo dos fundos

  3. As condições de entrada são rigorosas, o que reduz transações desnecessárias e evita custos excessivos de deslizamento.

  4. A combinação de vários prazos permite um equilíbrio entre velocidade de lucro e estabilidade

Risco estratégico

  1. Os critérios de admissão são muito rígidos e você pode perder algumas oportunidades.

  2. A configuração inadequada do stop loss pode ser demasiado radical ou conservadora

  3. Uma escolha errada de um período de tempo que pode não corresponder a tendências mais longas ou mais curtas

  4. O evento de emergência causou uma rápida reversão e não conseguiu parar os danos.

Direção de otimização

  1. Optimizar a escolha de prazos, equilibrando a velocidade e a estabilidade do lucro

  2. Teste diferentes configurações de parâmetros para otimizar o stop loss

  3. Adição de algoritmos de aprendizagem de máquina para auxiliar na determinação de pontos de reversão de tendências

  4. Aumentar a atenção em eventos importantes e evitar perdas em eventos inesperados

Resumir

A estratégia integra a direção da tendência de julgamento de múltiplos quadros temporais, condições de entrada rígidas em combinação com stop loss dinâmico, com o objetivo de obter ganhos estáveis. Existem possíveis oportunidades perdidas e problemas de controle de risco inadequado.

Código-fonte da estratégia
/*backtest
start: 2024-01-19 00:00:00
end: 2024-02-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("[RichG] Easy MTF Strategy v1.1", overlay=false)

TF_1_time = input("D", "Timeframe 1")
TF_2_time = input("10D", "Timeframe 2")
TF_3_time = input("15D", "Timeframe 3")
TF_4_time = input("30D", "Timeframe 4")
lengthKC=input(20, title="KC Length")
multKC = input(1.5, title="KC MultFactor")
lengthBB=input(20, title="BB Length")
transaction_size = input(1, "Contract/Share Amount")

src = close, len = 20


out = sma(src, len)
width = 5
upcolor = green
downcolor = red
neutralcolor = blue
linestyle = line


kc() =>
    ma = sma(close, lengthKC)
    range = tr
    rangema = sma(range, lengthKC)
    upperKC = ma + rangema * multKC
    lowerKC = ma - rangema * multKC
    [lowerKC, upperKC] 

 
bb() =>
    source = close 
    basis = sma(source, lengthBB)
    dev = multKC * stdev(source, lengthBB)
    upperBB = basis + dev
    lowerBB = basis - dev
    [upperBB, lowerBB]

TF_1 = request.security(syminfo.tickerid, TF_1_time, open) < request.security(syminfo.tickerid, TF_1_time, close) ? true:false
TF_1_color = TF_1 ? upcolor:downcolor

TF_2 = request.security(syminfo.tickerid, TF_2_time, open) < request.security(syminfo.tickerid, TF_2_time, close) ? true:false
TF_2_color = TF_2 ? upcolor:downcolor

TF_3 = request.security(syminfo.tickerid, TF_3_time, open) < request.security(syminfo.tickerid, TF_3_time, close) ? true:false
TF_3_color = TF_3 ? upcolor:downcolor


TF_4 = request.security(syminfo.tickerid, TF_4_time, open) < request.security(syminfo.tickerid, TF_4_time, close) ? true:false
TF_4_color = TF_4 ? upcolor:downcolor

TF_global = TF_1 and TF_2 and TF_3 and TF_4 
TF_global_bear = TF_1 == false and TF_2 == false and TF_3 == false and TF_4 == false
TF_global_color = TF_global ? green : TF_global_bear ? red : white
TF_trigger_width = TF_global ? 6 : width

plot(1, style=linestyle, linewidth=width, color=TF_1_color)
plot(5, style=linestyle, linewidth=width, color=TF_2_color)
plot(10, style=linestyle, linewidth=width, color=TF_3_color)
plot(15, style=linestyle, linewidth=width, color=TF_4_color)
plot(25, style=linestyle, linewidth=4, color=TF_global_color)    

exitCondition_Long = TF_global_bear 
exitCondition_Short = TF_global

longCondition = TF_global
if (longCondition)
    strategy.entry("MTF_Long", strategy.long, qty=transaction_size)

shortCondition = TF_global_bear
if (shortCondition)
    strategy.entry("MTF_Short", strategy.short, qty=transaction_size)

[kc_lower,kc_upper] = kc()

strategy.close("MTF_Long", when=close < kc_upper)
strategy.close("MTF_Short", when=close > kc_lower)