
Esta estrategia se basa en el indicador RSI para diseñar un simple sistema de comercio de seguimiento de tendencias, que puede determinar la dirección de la tendencia del mercado a través del indicador RSI en un rango de fechas específicas, para realizar un descubierto automático.
La estrategia utiliza el indicador RSI para determinar las tendencias del mercado y el canal de la correa de Bryn para determinar las zonas de sobreventa y sobrecompra.
En primer lugar, se calcula el valor del RSI, y luego se calcula el promedio móvil y el diferencial estándar del RSI para determinar la banda de Brin que sube y baja. El indicador RSI oscila entre 0 y 1, y el Brin determina el área de sobreventa y sobreventa a través del diferencial estándar.
Cuando el RSI genera una señal de compra cuando se rompe la vía inferior a la vía superior, y una señal de venta cuando se rompe la vía superior a la vía inferior, para lograr el seguimiento de la tendencia. Después de la entrada de la estrategia, no se establece un stop loss stop hasta que se cierre la posición al final de la fecha especificada.
La estrategia utiliza el indicador RSI para determinar la dirección de la tendencia de manera simple y efectiva, junto con el uso de las bandas de browning para determinar el momento de negociación específico. Al limitar el rango de fechas de negociación, se evita el riesgo innecesario.
La dirección de la optimización:
Esta estrategia es en general una estrategia de seguimiento de tendencias muy simple y directa. Utilizando la tendencia de juicio de RSI, Brin lleva una señal de filtro para limitar el rango de fechas de negociación, puede seguir la tendencia de manera efectiva y controlar el riesgo. Sin embargo, la estrategia puede optimizarse aún más, manteniendo una base simple y efectiva, y perfeccionando aún más la estrategia mediante el stop loss, la optimización de parámetros y la filtración de señales.
/*backtest
start: 2022-10-19 00:00:00
end: 2023-10-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Gidra
//2018
//@version=2
strategy(title = "Gidra's RSI or MFI Strategy v0.1", shorttitle = "Gidra's RSI or MFI v0.1", overlay = false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 1)
//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
src = input(close, title="source")
lengthRSI = input(14, title="RSI or MFI length")
// RSI %B
useRSI = input(true, title="use RSI or MFI")
fromyear = input(2018, defval = 2018, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From Day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To Day")
//MFI
upper = sum(volume * (change(src) <= 0 ? 0 : src), lengthRSI)
lower = sum(volume * (change(src) >= 0 ? 0 : src), lengthRSI)
mf = rsi(upper, lower)
//RSI
rsi = useRSI?rsi(src, lengthRSI): mf
// %B
length = input(50, minval=1, title="BB length")
mult = input(1.618, minval=0.001, maxval=50)
basis = sma(rsi, length)
dev = mult * stdev(rsi, length)
upperr = basis + dev
lowerr = basis - dev
bbr = (rsi - lowerr)/(upperr - lowerr)
plot(bbr, color=black, transp=0, linewidth=2)
// band1 = hline(1, color=white, linestyle=dashed)
// band0 = hline(0, color=white, linestyle=dashed)
// fill(band1, band0, color=teal)
hline(0.5, color=white)
//Signals
up = bbr >= 0 and bbr[1] < 0
dn = bbr <= 1 and bbr[1] > 1
//exit = ((bbr[1] < 0.5 and bbr >= 0.5) or (bbr[1] > 0.5 and bbr <= 0.5))
lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 : lot[1]
//Trading
if up
strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if dn
strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if time > timestamp(toyear, tomonth, today, 23, 59)// or exit
strategy.close_all()