Estrategia de negociación de convergencia de múltiples indicadores

El autor:¿ Qué pasa?, Fecha: 2023-09-12 14:27:41
Las etiquetas:

La estrategia de negociación de convergencia de múltiples indicadores combina señales de RSI, TD Sequential, MACD y bandas de Bollinger para identificar configuraciones de alta probabilidad durante las tendencias de los mercados.

Estrategia lógica:

  1. Calcule el RSI de 14 períodos. Utilice el parámetro de diferencia RSI como umbral para las señales de compra/venta. RSI por debajo de (50 - diferencia RSI) da una señal de compra. RSI por encima de (50 + diferencia RSI) da una señal de venta.

  2. Computa el indicador MACD. 5 barras positivas consecutivas del histograma MACD dan una señal de compra. 5 barras negativas consecutivas dan una señal de venta.

  3. Computación TD Sequencial. 2 barras TD consecutivas arriba dan señal de compra. 2 barras TS consecutivas abajo dan señal de venta.

  4. Calcule las bandas de Bollinger de 20 períodos. El precio que se rompe por encima de la banda superior sugiere comprar. El precio que se rompe por debajo de la banda inferior sugiere vender.

  5. Solo realice operaciones cuando el RSI, el MACD y el TD Sequential estén de acuerdo en la dirección, y las bandas de Bollinger no se contradigan.

  6. Establecer objetivos de ganancia y stop loss basados en los parámetros de entrada.

Esta estrategia combina los puntos fuertes de múltiples indicadores para evitar señales falsas. Las bandas de Bollinger ayudan a filtrar las configuraciones de alta probabilidad durante las tendencias. Sin embargo, los parámetros del indicador necesitan una optimización exhaustiva, y las señales deben ser relativamente infrecuentes cuando los 4 indicadores están de acuerdo para evitar el exceso de negociación.

En general, esta estrategia de múltiples indicadores puede capturar configuraciones de alta probabilidad durante tendencias fuertes, pero requiere un ajuste cuidadoso de los parámetros y un uso conservador de las señales de indicadores para evitar una negociación excesiva.


/*backtest
start: 2022-09-05 00:00:00
end: 2023-09-11 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("RSI, TD Seq, MACD, BB Strategy - Calculation",overlay=true)



RSIDifference = input(-7, minval=-50, maxval=50, title="RSI Difference") 


TD = close > close[4] ?nz(TD[1])+1:0
TS = close < close[4] ?nz(TS[1])+1:0
TDUp = TD - valuewhen(TD < TD[1], TD , 1 )
TDDn = TS - valuewhen(TS < TS[1], TS , 1 )
TDcheckUP = iff(TD == 2, true, false)
TDCheckDOWN = iff(TS == 2, true, false)

[_, _, histLine] = macd(close, 12, 26, 9)
MACDCheckDown = iff(histLine > 0 and histLine[1] > 0 and histLine[2] > 0 and histLine[3] > 0  and histLine[4] > 0, true, false)
MACDCheckUp = iff(histLine < 0 and histLine[1] < 0 and histLine[2] < 0 and histLine[3] < 0 and histLine[4] < 0, true, false)

RSICal = rsi(close, 14)
RSICalNewUp = 50 + RSIDifference
RSICalNewDown = 50 - RSIDifference
RSICheckUp = iff(RSICal <= RSICalNewUp, true, false)
RSICheckDown = iff(RSICal >= RSICalNewDown, true, false)

basis = sma(close, 20)
dev = 2 * stdev(close, 20)
upperBB = basis + dev
lowerBB = basis - dev
BBCheckUp = iff(close > upperBB, true, false)
BBCheckDown = iff(close < lowerBB, true, false)
//BBCheckUp = false
//BBCheckDown = false


BuyCheck = iff(TDcheckUP == true and MACDCheckUp == true and RSICheckUp == true and BBCheckUp == false, true, false)
SellCheck = iff(TDCheckDOWN == true and MACDCheckDown == true and RSICheckDown == true and BBCheckDown == false, true, false)


ProfitStratA = input(50, minval=0, maxval=10000, title="Profit", step=0.5) 
useStopLoss = input(false, title="Use Stop Loss?")
LossstratA = input(145, minval=0, maxval=10000, title="Stop Loss", step=0.5) 

ProfitStrat = ProfitStratA * 10
Lossstrat = useStopLoss ? LossstratA * 10 : 1000000

if (strategy.position_size > 0)
    strategy.exit("BuyClose", "Buy", profit=ProfitStrat, loss=Lossstrat)
    
    
if (strategy.position_size < 0)   
    strategy.exit("SellClose", "Sell", profit=ProfitStrat, loss=Lossstrat) 
    

if (BuyCheck == true and strategy.position_size == 0)
    strategy.entry("Buy", strategy.long, comment="Long Entry")
    


if (SellCheck == true and strategy.position_size == 0)
    strategy.entry("Sell", strategy.short, comment="Short Entry")
    
    
 
    

//plotshape(BuyCheck, color=blue, transp=0, style=shape.arrowup, text="Buy\n", location=location.belowbar)
//plotshape(SellCheck, color=orange, transp=0, style=shape.arrowdown, text="Sell\n", location=location.abovebar)













Más.