O recurso está a ser carregado... Carregamento...

Tendência de seguir uma estratégia baseada nas linhas MA

Autora:ChaoZhang, Data: 2024-02-22 17:24:02
Tags:

img

Resumo

Esta estratégia calcula médias móveis (MA) de diferentes períodos para determinar a direção da tendência do mercado.

Princípio da estratégia

  1. Calcular os MAs de 20 períodos, 60 períodos e 120 períodos
  2. Comparar a relação de magnitude entre MA20, MA60 e MA120 para determinar a direção da tendência atual
    • Se o MA20>MA60>MA120, julgar que a tendência é ascendente
    • Se o MA20
  3. Caso o valor da posição em risco seja inferior a 50% do valor da posição em risco, o valor da posição em risco deve ser calculado em função da posição em risco.
  4. O valor da posição em risco deve ser calculado de acordo com o método de cálculo da posição em risco.
    • A linha de lucro para posição longa é 3 vezes a MA60
    • A linha de lucro para posição curta é 0,9 vezes a MA60

Análise das vantagens

  1. Usar combinações de MA de diferentes períodos para determinar a tendência para evitar whipssaws
  2. Apenas entre em pontos de reversão da tendência para aumentar a taxa de ganho
  3. Ter regras claras para obter lucros e parar perdas para reduzir os riscos

Análise de riscos

  1. Em mercados de intervalo limitado, os crossovers MA podem ocorrer com frequência, causando negociações demasiado frequentes
  2. Os parâmetros de take profit e stop loss precisam ser otimizados, caso contrário a posição pode ser interrompida prematuramente ou o take profit não é suficiente

Orientações de otimização

  1. Adicionar indicadores para identificar mercados de gama para evitar excesso de negociação
  2. Otimizar as combinações de períodos de MA para encontrar os melhores parâmetros
  3. Teste e otimize os coeficientes de lucro e stop loss para equilibrar a maximização dos retornos e minimizar os riscos

Resumo

A estratégia tem uma lógica clara de usar MAs para determinar tendências.


/*backtest
start: 2023-02-15 00:00:00
end: 2024-02-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("MA60上多下空", overlay=true)

// 计算MA20/60/120
ma20 = ta.sma(close, 20)
ma60 = ta.sma(close, 60)
ma120 = ta.sma(close, 120)

// 判断MA的趋势
maUpTrend = ma20 > ma60 and ma60 > ma120
maDownTrend = ma20 < ma60 and ma60 < ma120

// 画竖直线标记MA趋势转折点
plotshape(maUpTrend and ta.crossover(ma20, ma60), style=shape.triangledown, location=location.abovebar, color=color.green, size=size.small)
plotshape(maDownTrend and ta.crossunder(ma20, ma60), style=shape.triangleup, location=location.belowbar, color=color.red, size=size.small)

// 画背景标记MA趋势
bgcolor(maUpTrend ? color.new(color.green, 90) : na)
bgcolor(maDownTrend ? color.new(color.red, 90) : na)

// 建立多头仓位的条件
longCondition = ta.crossover(close, ma60)

// 建立空头仓位的条件
shortCondition = ta.crossunder(close, ma60)

// 在穿过MA60时,根据条件建立相应的多头或空头仓位
if (longCondition)
    strategy.entry("Long", strategy.long)

if (shortCondition)
    strategy.entry("Short", strategy.short)

// 止盈止损规则
calculateReturns() =>
    close / strategy.position_avg_price - 1

takeProfitCondition = calculateReturns() >= 3  // 仓位盈利达到300%
stopLossCondition = calculateReturns() <= -0.1  // 仓位亏损达到10%

if (takeProfitCondition)
    strategy.close("Long", comment="Take Profit")
    strategy.close("Short", comment="Take Profit")

if (stopLossCondition)
    strategy.close("Long", comment="Stop Loss")
    strategy.close("Short", comment="Stop Loss")


Mais.