Estratégia de scalping de média móvel

Autora:ChaoZhang, Data: 2021-09-21 20:41:15
Tags:

Resumo

Esta estratégia pertence ao tipo de estratégia de scalping, com o objetivo de abrir e fechar posições com frequência para lucrar com pequenos ganhos, limitando os riscos de queda.

Estratégia lógica

A estratégia utiliza 4 médias móveis - 9, 50, 100 e 200 períodos.

As regras específicas de negociação são:

  • Caso o valor da posição em risco seja igual ou superior a 50% do valor da posição
  • 50 MA é inferior a 100 MA
  • 100 MA é inferior a 200 MA

Esta combinação identifica situações em que o preço está em tendência de baixa a curto prazo, mas pode ocorrer uma reversão.

A regra de saída é quando 9 MA cruza acima de 200 MA. Uma meta de lucro próximo é usada para bloquear pequenos ganhos frequentes para lucros estáveis.

Vantagens

  • Controles de abertura e fechamento frequentes com perda única
  • O crossover MA atinge potenciais fundos
  • Meta de lucro próximo bloqueia em pequenas ganhas certas
  • Tempo de retenção reduzido minimiza a influência da tendência
  • Alta utilização do capital adequada para pequenas contas

Riscos

  • O atraso de MA pode perder os melhores pontos de entrada
  • Intervalo de lucro reduzido vulnerável às taxas
  • Mais ofertas não válidas aumentam os custos de tempo e energia
  • A TP excessivamente conservadora não consegue acompanhar as tendências
  • Dificuldade de obter lucros em mercados de gama limitada

Os riscos podem ser reduzidos:

  • Otimização dos parâmetros MA para uma melhor precisão do sinal
  • Relaxar o TP para obter mais lucros de tendência
  • Adição de outros indicadores de confirmação, redução de operações inválidas
  • Otimizar a utilização do capital e o dimensionamento das posições
  • Considerando reentrada

Orientações de otimização

A estratégia pode ser melhorada:

  1. Optimização das combinações de MA

    Testar mais períodos de MA para uma melhor detecção da reversão.

  2. Aumento dos níveis de lucro

    Permitir uma distância TP mais larga para mais lucros de tendência.

  3. Adição de outros indicadores

    Tal como KDJ, MACD para confirmação para reduzir negócios inválidos.

  4. Optimização do dimensionamento da posição

    Posições de tamanho dinâmico baseadas em TP e SL específicos.

  5. Adição de regras de reentrada

    Considere reentrar após TP se a tendência continuar.

Resumo

Esta estratégia de scalping identifica possíveis reversões de curto prazo com combinações de MA para lucros pequenos frequentes. Isso controla efetivamente perdas e riscos individuais, tornando-o adequado para o crescimento de pequenas contas. No entanto, existem limitações como pequena faixa de lucro e negociações excessivas. Melhorias podem ser feitas por meio de ajuste de parâmetros, ajuste de TP, adição de filtros, etc., para expandir os lucros mantendo seus pontos fortes, tornando a estratégia mais robusta e eficiente. Também é importante aprender continuamente outras estratégias mais avançadas.


/*backtest
start: 2023-08-21 00:00:00
end: 2023-09-20 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//strategy(shorttitle='Moving Average Scalper (by Coinrule)',title='Moving Average Scalper', overlay=true, initial_capital = 1000, default_qty_type = strategy.percent_of_equity, default_qty_type = strategy.percent_of_equity, default_qty_value = 30, commission_type=strategy.commission.percent, commission_value=0.1)

//Backtest dates
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 10,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2019, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 1,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 1,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2112, title = "Thru Year",       type = input.integer, minval = 1970)

showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => true       // create function "within window of time"

//MA inputs and calculations
movingaverage_signal = sma(close, input(9))
movingaverage_fast = sma(close, input(50))
movingaverage_slow = sma(close, input(200))
movingaverage_mid= sma(close, input(100))

//Entry 
bullish = crossover(movingaverage_signal, movingaverage_fast)

strategy.entry(id="long", long = true, when = bullish and movingaverage_fast < movingaverage_mid and movingaverage_mid < movingaverage_slow and window())

//Exit

bearish = crossover(movingaverage_signal, movingaverage_slow)


Stop_loss= ((input (2))/100)
Take_profit= ((input (8))/100)

longStopPrice  = strategy.position_avg_price * (1 - Stop_loss)
longTakeProfit = strategy.position_avg_price * (1 + Take_profit)

strategy.close("long", when = bearish)

// close < longStopPrice or close > longTakeProfit and window())

//PLOT
plot(movingaverage_signal, color=color.black, linewidth=2 )
plot(movingaverage_fast, color=color.orange, linewidth=2)
plot(movingaverage_slow, color=color.purple, linewidth=2)
plot(movingaverage_mid, color=color.blue, linewidth=2)


Mais.