
La estrategia Momentum Pullback es una estrategia de posición larga y corta que identifica los valores extremos del RSI como señales de impulso. A diferencia de la mayoría de las estrategias RSI, esta estrategia busca el primer pullback para entrar en juego en la dirección de las lecturas extremas del RSI.
Se realiza un alza/desalza en el primer punto de retorno de la EMA del día 5 (precio mínimo) / EMA del día 5 (precio máximo) y se realiza un alza/desalza en el punto de equilibrio de las 12 líneas K. El mecanismo de alza/desalza en el punto de equilibrio significa que si el precio entra en un ajuste a largo plazo, el objetivo de la parada se reducirá con la aparición de cada nueva línea K.
La distancia de parada recomendada es X veces el ATR del precio de entrada (se puede ajustar en los parámetros de entrada del usuario).
La estrategia es robusta en todos los períodos de tiempo y mercados, con un porcentaje de ganancias entre 60% y 70%, y una gran cantidad de operaciones rentables. Se necesita evitar generar señales en la volatilidad causada por noticias económicas importantes.
Calcule el RSI de 6 días y busque extremos de más de 90 (sobrecompra) y menos de 10 (sobreventa)
Cuando el RSI está sobrecomprado, retroceda a la línea K de 6 días a la EMA de 5 días (la línea más baja) para hacer una entrada adicional
Cuando el RSI está sobrevendido, retroceda a la línea K de 6 días a la EMA de 5 días (la línea más alta) para una entrada en blanco
La estrategia de salida es la parada móvil, la posición larga con el punto más alto de las últimas 12 líneas K como el primer objetivo de salida, luego se actualiza a la nueva línea más alta de 12 líneas K cuando aparece una nueva línea K, para lograr la salida de rodaje. Por el contrario, la cabeza vacía se detiene con el punto más bajo de la línea de 12 líneas K.
El límite de pérdidas es X veces el ATR del precio de entrada y se puede personalizar.
La estrategia combina los extremos del RSI como señales de impulso y retracción para capturar posibles reveses en la tendencia, con una alta probabilidad de ganar.
Se ha activado el mecanismo de suspensión móvil, que permite bloquear parte de las ganancias en función de la evolución real de los precios, lo que reduce el retiro.
El paro de pérdidas de ATR es efectivo para controlar las pérdidas individuales.
La robustez es fuerte, se puede aplicar a diferentes mercados y combinaciones de parámetros, y es fácil de copiar en disco duro.
Si el ATR se establece demasiado alto, el stop loss puede extenderse demasiado y aumentar la pérdida individual.
En caso de que ocurra una liquidación de ██, el mecanismo de suspensión móvil reducirá el margen de ganancia.
Si la vuelta se hace más de 6 líneas K, se perderá el tiempo de entrada.
En caso de un evento económico importante, la operación puede sufrir un deslizamiento o una falsa ruptura.
Se puede probar reducir el número de raíces de admisión, por ejemplo, de 6 a 4 líneas K, para aumentar la tasa de éxito de admisión.
Se puede probar el incremento de la multiplicidad de ATR para controlar aún más el stop loss.
Se puede combinar el indicador de la cantidad de energía, para evitar la pérdida de ordenar la espalda.
Se puede entrar en el eje central después de la ruptura de la etapa de 60 minutos, para filtrar parte del ruido.
La estrategia de retroceso de dinámica es en general una estrategia de captura de líneas cortas muy práctica. Combina la tendencia, la inversión y el stop loss en varios aspectos, que son fáciles de operar en el disco duro y tienen un cierto tipo de alfa.
/*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"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Marcns_
//@version=5
strategy("M0PB", commission_value = 0.0004, slippage = 1, initial_capital=30000)
// commision is equal to approx $3.8 per round trip which is accurate for ES1! futures and slippage per trade is conservatively 1 tick in and 1 tick out.
// *momentum pull back* //
// long / short strategy that identifies extreme readings on the rsi as a *momentum signal*
//Strategy buys/ sells a pullback to the 5ema(low)/ 5ema(high) and exits at rolling 12 bar high/ low. The rolling high/ low feature means that
//if price enters into a pronlonged consolidation the profit target will begin to reduce with each new bar. The best trades tend to work within 2-6 bars
// hard stop is X atr's from postion average price. This can be adjusted in user inputs.
// built for use on 5 min & 1min intervals on: FX, Indexes, Crypto
// there is a lot of slack left in entries and exits but the overall strategy is fairly robust across timeframes and markets and has between 60%-70% winrate with larger winners.
// signals that occur from economic news volatility are best avoided.
// define rsi
r = ta.rsi(close,6)
// find rsi > 90
b = 0.0
if r >= 90
b := 1.0
else
na
// find rsi < 10
s = 0.0
if r <= 10
s := -1.0
else
na
// plot rsi extreme as painted background color
bgcolor(b ? color.rgb(255, 82, 82, 49): na)
bgcolor(s? color.rgb(76, 175, 79, 51): na)
// exponential moving averages for entries. note that source is high and low (normally close is def input) this creates entry bands
//entry short price using high as a source ta.ema(high,5)
es = ta.ema(high,5)
//entry long price using low as a source ta.ema(low,5)
el = ta.ema(low,5)
// long pullback entry trigger: last period above ema and current low below target ema entry
let = 0.0
if low[1] > el[1] and low <= el
let := 1.0
else
na
//short entry trigger ""
set = 0.0
if high[1] < es[1] and high >= es
set := -1.0
else
na
// create signal "trade_l" if RSI > 90 and price pulls back to 5ema(low) within 6 bars
trade_l = 0.0
if ta.barssince(b == 1.0) < 6 and let == 1.0
trade_l := 1.0
else
na
plot(trade_l, "l_entry", color.green)
//create short signal "trade_s" if rsi < 10 and prices pullback to 5em(high) wihthin 6 bars
trade_s = 0.0
if ta.barssince(s == -1.0) < 6 and set == -1.0
trade_s := -1.0
else
na
plot(trade_s, "s_entry", color.purple)
// define price at time of trade_l signal and input value into trade_p to use for stop parems later
trade_p = strategy.position_avg_price
//indentify previous 12 bar high as part of long exit strat
// this creates a rolling 12 bar high target... a quick move back up will exit at previous swing high but if a consolidation occurs system will exit on a new 12 bar high which may be below prev local high
ph = ta.highest(12)
// inverse of above for short exit strat - previous lowest low of 12 bars as exit (rolling)
pl = ta.lowest(12)
// 1.5 atr stop below entry price (trade_p defined earlier) as part of exit strat
atr_inp = input.float(2.75, "atr stop", minval = 0.1, maxval = 6.0)
atr = ta.atr(10)
stop_l = trade_p - (atr* atr_inp)
stop_s = trade_p + (atr* atr_inp)
//strat entry long
strategy.entry("EL", strategy.long, 2, when = trade_l == 1.0)
//strat entry short
strategy.entry("ES", strategy.short, 2, when = trade_s == -1.0)
//strat long exit
if strategy.position_size == 2
strategy.exit(id = "ph", from_entry = "EL", qty = 2, limit = ph)
if strategy.position_size == 2
strategy.close_all(when = low[1] > stop_l[1] and low <= stop_l)
// strat short exit
if strategy.position_size == -2
strategy.exit(id = "pl", from_entry = "ES", qty = 2, limit =pl)
if strategy.position_size == -2
strategy.close_all(when = high[1] < stop_s[1] and high >= stop_s)
// code below to trail remaining 50% of position //
//if strategy.position_size == 1
//strategy.exit(id ="trail", from_entry = "EL", qty = 1, stop = el)