Combinação de RSI e média móvel MT5 Estratégia de scalping Martingale

Autora:ChaoZhang, Data: 23 de dezembro de 2023
Tags:

img

Resumo

A estratégia é denominada RSI e Combinação de Média Móvel MT5 Martingale Scalping Strategy. Combina o indicador de média móvel dupla e o indicador Relative Strength Index (RSI) para implementar a negociação de scalping de alta frequência, ao mesmo tempo em que incorpora o princípio de média de posição Martingale para controlar o nível de risco geral da estratégia.

Estratégia lógica

  1. A estratégia utiliza primeiro o indicador de estoque para desenhar um oscilador personalizado com o oscilador de parâmetroPeriod definido em 5, e define limiares superiores e inferiores k1 e k2 para construir a área de consolidação.

  2. Em seguida, o indicador RSI é incorporado para identificar fenômenos de sobrecompra e sobrevenda. O indicador RSI pode identificar efetivamente o momento da penetração do mercado dos limites superior e inferior. Esta estratégia define a linha de sobrecompra do RSI em 70 e a linha de sobrevenda em 30.

  3. Além disso, a estratégia também introduz o fator tendênciaActividade como o principal filtro de tendência.Quando o indicador estocástico e o RSI cumprem as condições de reversão ao mesmo tempo, ele também verifica se a tendência principal ainda está ativa o suficiente para evitar perdas devido a falhas de ruptura no mercado de choque.

  4. Por fim, a estratégia utiliza o clássico princípio de média de posições de Martingale para controlar o risco global.

Análise das vantagens

  1. A incorporação do indicador RSI pode identificar efetivamente fenômenos de sobrecompra e sobrevenda para ajudar a julgar o momento da reversão.

  2. A definição do oscilador para determinar a área de consolidação pode filtrar alguns falsos sinais de ruptura.

  3. A definição do filtro de tendência principal evita perdas em mercados voláteis.

  4. A média das posições de Martingale controla eficazmente o aproveitamento máximo da estratégia e é fundamental para a rentabilidade sustentável.

Análise de riscos

  1. Em condições anormais de mercado, o indicador RSI pode falhar e causar uma avaliação errada das condições de sobrecompra e sobrevenda.

  2. A configuração inadequada dos parâmetros do oscilador também pode levar a uma filtragem excessiva do sinal ou à identificação de falhas de ruptura.

  3. A média de posições de Martingale levará a perdas em cascata em certos ambientes.

  4. A estratégia só foi verificada em dados de pares de moedas GBPUSD de 15 minutos.

Orientações de otimização

  1. Otimizar os parâmetros do RSI para encontrar parâmetros mais adequados ao ambiente de mercado actual.

  2. Teste e otimize os parâmetros do oscilador para que possa julgar a área de consolidação com mais precisão.

  3. Adicione a lógica de stop loss. Parar ativamente as perdas quando as perdas atingirem um certo nível para controlar efetivamente as perdas individuais.

  4. Otimizar as regras de definição do filtro de tendência principal para evitar a perda de oportunidades de reversão.

  5. Teste diferentes configurações de dimensionamento de posição adicionais.

Resumo

Esta estratégia combina o indicador de média móvel dupla, indicador RSI e oscilador personalizado para julgar os fenômenos de ruptura do limite superior e inferior no curto prazo, e usa o filtro de tendência principal para evitar falhas para uma negociação de scalping eficiente. Ao mesmo tempo, o clássico princípio de média de posição Martingale é introduzido para controlar o nível geral de risco. A estratégia tem o potencial de gerar retornos estáveis após otimização de parâmetros e gestão rigorosa do risco.


/*backtest
start: 2022-11-24 00:00:00
end: 2023-11-30 00:00:00
period: 1d
basePeriod: 1h
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/
// © cloudofw

//@version=5
strategy("F2.2 Martingale Scalping Strategy", overlay=true)

// Input parameters
rsiOverbought = input.int(70, "RSI Overbought Threshold")
rsiOversold = input.int(30, "RSI Oversold Threshold")
oscillatorPeriod = input.int(5, "Period for oscillator")
k1 = input.float(0.2, "K1 for oscillator's zone")
k2 = input.float(0.5, "K2 for oscillator's zone")
trendActivity = input.float(1.0, "Main Trend filter", minval=0.1)
decreasePerOrder = input.float(0.1, "Trend filter decrease per order", minval=0.01)

// Calculate custom oscillator and RSI
oscillator = ta.stoch(close, high, low, oscillatorPeriod)
rsiValue = ta.rsi(close, 14)

zoneHigh = 100 - k1 * 100
zoneLow = k2 * 100

// Entry conditions
longCondition = oscillator < zoneLow and trendActivity > 0 and rsiValue < rsiOversold
shortCondition = oscillator > zoneHigh and trendActivity > 0 and rsiValue > rsiOverbought

// Martingale logic
var lot_multiplier = 1.0
var last_lot_size = strategy.equity * 0.01
var trade_1_profit = 0.0
if (strategy.position_size != 0)
    lot_multiplier := last_lot_size / strategy.position_size < 1.5 ? lot_multiplier * 1.5 : 1.0
    trade_1_profit := strategy.grossprofit
else
    lot_multiplier := 1.0
    trade_1_profit := 0.0
lot_size = strategy.equity * 0.01 * lot_multiplier + trade_1_profit
last_lot_size := lot_size

// Trading logic
if longCondition and strategy.position_size == 0
    strategy.entry("Long", strategy.long)
    
if shortCondition and strategy.position_size == 0
    strategy.entry("Short", strategy.short)

// Exit conditions
if longCondition == false and strategy.position_size > 0
    strategy.close("Long")

if shortCondition == false and strategy.position_size < 0
    strategy.close("Short")

// Indicators on chart
plotshape(series=longCondition, title="Buy Entry", location=location.belowbar, color=color.green, style=shape.labelup, text="Buy")
plotshape(series=shortCondition, title="Sell Entry", location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell")

plot(oscillator, color=color.blue, title="Oscillator")
hline(zoneHigh, "Upper Zone", color=color.red)
hline(zoneLow, "Lower Zone", color=color.green)


Mais.

O que é isso?O que é que vai acontecer se copiarmos o código em uma simulação direta e descobrirmos que não fizemos a operação de agregação quando chegamos ao ponto de agregação?