
Esta estrategia se llama estrategia de negociación RSI de doble índice móvil. Utiliza el doble índice móvil (Double EMA) y el índice relativamente débil (RSI) como indicadores de negociación principales para realizar operaciones mecanizadas.
La estrategia primero calcula el promedio móvil binario del precio (MA), luego calcula el RSI basado en el MA, y luego calcula el promedio móvil indexado del RSI (Smooth). Cuando el RSI cruza su promedio móvil, genera una señal de compra; cuando el RSI cruza su promedio móvil, genera una señal de venta. Opcionalmente, la estrategia también establece el número máximo de operaciones por día, el volumen de capital de negociación, el período de negociación, el punto de parada de pérdidas y el número de puntos de parada de seguimiento para el control de riesgos.
Respuesta:
Esta estrategia tiene reglas mecánicas claras y de alta fiabilidad para variedades de tendencias de líneas medianas y largas. Después de la optimización, puede servir de base para la estrategia de seguimiento de tendencias mecánicas, el riesgo es controlado y vale la pena evaluar más a fondo el efecto en el mercado.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy(title='[STRATEGY][RS]DemaRSI V0', shorttitle='D', overlay=false, initial_capital=100000, currency=currency.USD)
src = input(close)
ma_length = input(21)
rsi_length = input(4)
rsi_smooth = input(4)
ma = ema(ema(src, ma_length), ma_length)
marsi = rsi(ma, rsi_length)
smooth = ema(marsi, rsi_smooth)
plot(title='M', series=marsi, color=black)
plot(title='S', series=smooth, color=red)
hline(0)
hline(50)
hline(100)
max_order_per_day = input(6)
// strategy.risk.max_intraday_filled_orders(max_order_per_day)
trade_size_as_equity_factor = input(false)
trade_size = input(type=float, defval=10000.00) * (trade_size_as_equity_factor ? strategy.equity : 1)
take_profit_in_points = input(100000)
stop_loss_in_points = input(100000)
trail_in_points = input(150)
USE_SESSION = input(true)
trade_session = input(title='Trade Session:', defval='0400-1500', confirm=false)
istradingsession = not USE_SESSION ? true : not na(time('1', trade_session))
buy_entry = istradingsession and crossover(marsi, smooth)
sel_entry = istradingsession and crossunder(marsi, smooth)
strategy.entry('buy', long=true, qty=1, when=buy_entry)
strategy.entry('sel', long=false, qty=1, when=sel_entry)
strategy.exit('buy.Exit', from_entry='buy', profit=take_profit_in_points, loss=stop_loss_in_points, trail_points=trail_in_points, trail_offset=trail_in_points)
strategy.exit('sel.Exit', from_entry='sel', profit=take_profit_in_points, loss=stop_loss_in_points, trail_points=trail_in_points, trail_offset=trail_in_points)
strategy.close_all(when=not istradingsession)