Indicador de momentum impulsionado por tendência seguindo estratégia de negociação


Data de criação: 2023-12-12 14:52:11 última modificação: 2023-12-12 14:52:11
cópia: 0 Cliques: 559
1
focar em
1621
Seguidores

Indicador de momentum impulsionado por tendência seguindo estratégia de negociação

Visão geral

Esta estratégia baseia-se no indicador de força RSI e no preço Exponential Moving Average (EMA) e Simple Moving Average (SMA) para construir um sinal de negociação.

Princípio da estratégia

A estratégia usa três condições para gerar um sinal de negociação:

  1. RSI > 45: RSI maior que 45 é considerado um bom sinal de compra
  2. EMA ((RSI) > SMA ((RSI): A linha EMA maior que a linha SMA indica que o RSI está acelerando para cima e é um bom sinal de dinâmica
  3. EMA ((preço de fechamento) > SMA ((preço de fechamento): A linha EMA é maior que a linha SMA, indicando que a tendência de preços está acelerando para cima

Caso se satisfaçam quaisquer duas das três condições acima, um sinal de compra será gerado; se não forem todas satisfeitas, um sinal de venda será gerado.

A estratégia também oferece um padrão de compra e venda para testar o desempenho do próprio sistema em relação ao mercado maior.

Análise de vantagens estratégicas

  1. Usar o RSI para avaliar a dinâmica do mercado e reduzir as posições durante os períodos de turbulência do mercado
  2. A combinação de EMA e SMA para determinar a direção da tendência permite capturar a tendência de mudança de preço em tempo hábil
  3. Regras de condição simples, claras, fáceis de entender e de otimizar
  4. A vantagem de um sistema de verificação de padrões de compra e venda de alumínio

Análise de risco estratégico

  1. Dependendo da configuração dos parâmetros, os parâmetros incorretos podem levar a negociações frequentes ou perder boas oportunidades de negociação
  2. Os preços de curto prazo podem sofrer uma forte oscilação em caso de notícias importantes, o que levará a um stop loss.
  3. A estratégia por si só não pode determinar quando a tendência está prestes a se inverter e precisa ser combinada com outros indicadores.

Direção de otimização

  1. Optimizar os parâmetros do RSI, EMA e SMA para encontrar a melhor combinação de parâmetros
  2. Adição de regras de julgamento de outros indicadores técnicos, como Volume, MACD
  3. Aumentar os indicadores de reversão de tendência e reduzir a probabilidade de perdas

Resumir

Esta estratégia, como um todo, é uma estratégia de negociação de média frequência, que visa capturar tendências de preços a médio prazo, evitando oscilações de mercado a curto prazo. Os seus pontos de vantagem e risco são bastante evidentes.

Código-fonte da estratégia
/*backtest
start: 2022-12-05 00:00:00
end: 2023-12-11 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("I11L Unitrend",overlay=false, initial_capital=1000000,default_qty_value=1000000,default_qty_type=strategy.cash,commission_type=strategy.commission.percent,commission_value=0.00)
tradingMode = input.string("Unitrend", "Trading Mode", ["Unitrend", "Always Buy"], tooltip="Choose the Trading Mode by trying Both in your Backtesting. I use it if one is far better then the other one.")
compoundingMode = input.bool(false)
leverage = input.float(1.0,step=0.1)
SL_Factor = 1 - input.float(1,"Risk Capital per Trade unleveraged (%)", minval=0.1, maxval=100, step=0.1) / 100
TPFactor = input.float(2, step=0.1)




var disableAdditionalBuysThisDay = false
var lastTrade = time
if(time > lastTrade + 1000 * 60 * 60 * 8 or tradingMode == "Always Buy")
    disableAdditionalBuysThisDay := false

if(strategy.position_size != strategy.position_size[1])
    lastTrade := time
    disableAdditionalBuysThisDay := true

//Trade Logic
SCORE = 0

//rsi momentum
RSIFast = ta.ema(ta.rsi(close,50),24)
RSISlow = ta.sma(ta.rsi(close,50),24)
RSIMomentum = RSIFast / RSISlow
goodRSIMomentum = RSIMomentum > 1
SCORE := goodRSIMomentum ? SCORE + 1 : SCORE

//rsi trend
RSITrend = RSISlow / 45
goodRSI = RSITrend > 1
SCORE := goodRSI ? SCORE + 1 : SCORE

//price trend
normalTrend = ta.ema(close,50) / ta.sma(close,50)
goodTrend = normalTrend > 1
SCORE := goodTrend ? SCORE + 1 : SCORE



isBuy =  SCORE > 1 or tradingMode == "Always Buy"
isSell = false //SCORE == 0

//plot(SCORE, color=isBuy ? color.green : #ffffff88)
//reduced some of the values just for illustrative purposes, you can buy after the signal if the trendlines seem to grow
plot(1, color=isBuy ? #77ff7733 : SCORE == 2 ? #ffff0033 : SCORE == 1 ? #ff888833 : #ff000033,linewidth=10)
plot(1 - (1 - RSIMomentum) * 6,color=#00F569)
plot(1 - (1 - RSITrend) * 0.25,color=#00DB9B)
plot(1 - (1 - normalTrend) * 20,color=#00F5EE)


strategy.initial_capital = 50000
if(isBuy and not(disableAdditionalBuysThisDay))
    if(compoundingMode)
        strategy.entry("Long", strategy.long, (strategy.equity / close) * leverage)
    else
        strategy.entry("Long", strategy.long, (strategy.initial_capital / close) * leverage)


if(strategy.position_size != 0)
    strategy.exit("TP/SL Long", "Long", stop=strategy.position_avg_price * (1 - (1 - SL_Factor)), limit=strategy.position_avg_price * (1 + (1 - SL_Factor) * TPFactor))