
Cette stratégie est basée sur les signaux cachés de décalage de l’EMA et de l’indicateur RSI pour ouvrir des positions à plusieurs têtes, en identifiant les caractéristiques de formation de décalage de plusieurs têtes cachées et en jugeant le début d’une tendance à la hausse comme un signal d’ouverture de position. En même temps, la croix d’or combinée à l’EMA et la ligne K. Le prix de clôture de la ligne est au-dessus de l’EMA, assurant une tendance à la hausse.
Stratégie de l’EMA moyenne: utilisation de l’EMA moyenne de 50 cycles et de 250 cycles pour juger de la tendance croisée de l’or. Le prix est considéré comme un signal à plusieurs têtes lorsqu’il dépasse 50 EMA.
Stratégie de déviation cachée du RSI: l’indicateur RSI présente des bas bas plus bas, tandis que les prix présentent des bas plus élevés. Un signal de déviation multiple caché annonce le début d’une inversion. En fonction d’un nombre limité de points de déviation, un faux signal peut être filtré.
Stratégie de clôture de la ligne K: ouvrir une position lorsque le prix de clôture de la ligne K dépasse 50 EMA.
Les trois stratégies décrites ci-dessus ont été combinées pour déterminer le moment où la tendance commence à monter en flèche et ouvre des positions plus élevées.
L’EMA est utilisée pour déterminer la direction de la tendance, et le RSI est utilisé comme indicateur de retour.
Le mécanisme de double confirmation, qui utilise la combinaison des prix de clôture des lignes EMA, RSI et K, permet de filtrer efficacement les faux signaux.
Le suivi de la tendance à la hausse moyenne-longue est approprié pour juger du début d’une nouvelle tendance à la hausse après la consolidation.
Si la ligne moyenne de l’EMA produit une fourchette morte, il est nécessaire de faire un placement en temps opportun.
Le RSI doit être expérimenté pour cacher des signaux de déviation, et un paramètre mal réglé peut entraîner des signaux manqués ou des erreurs de jugement.
Les paramètres de la variété de transaction doivent être optimisés.
Ajustez dynamiquement les paramètres de la moyenne de l’EMA pour optimiser la précision des tendances.
Ajustez les paramètres du RSI pour optimiser l’exactitude de la déviation cachée.
Adhérer à un mécanisme de stop loss et contrôler le risque en utilisant le stop loss ATR ou le stop loss en pourcentage.
Développer des stratégies de trading à découvert qui permettent d’ouvrir des positions à découvert en baisse.
Cette stratégie utilise l’EMA moyenne pour déterminer la tendance majeure, en combinaison avec l’indicateur RSI pour augmenter l’exactitude du jugement. Après la fin de la correction, le jugement de la nouvelle tendance à la hausse commence.
/*backtest
start: 2024-01-25 00:00:00
end: 2024-02-01 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title="EMA RSI ATR Hidden Div Strat", shorttitle="Hidden Div Strat", overlay = true, pyramiding = 0, max_bars_back=3000, calc_on_order_fills = false, commission_type = strategy.commission.percent, commission_value = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 10, initial_capital=5000, currency=currency.USD)
// Time Range
FromMonth=input(defval=1,title="FromMonth",minval=1,maxval=12)
FromDay=input(defval=1,title="FromDay",minval=1,maxval=31)
FromYear=input(defval=2020,title="FromYear",minval=2016)
ToMonth=input(defval=1,title="ToMonth",minval=1,maxval=12)
ToDay=input(defval=1,title="ToDay",minval=1,maxval=31)
ToYear=input(defval=9999,title="ToYear",minval=2017)
start=timestamp(FromYear,FromMonth,FromDay,00,00)
finish=timestamp(ToYear,ToMonth,ToDay,23,59)
window()=>true
// Bar's time happened on/after start date?
afterStartDate = time >= start and time<=finish?true:false
//EMA'S
emasrc = close
len1 = input(50, minval=1, title="EMA1")
ema1 = ema(emasrc, len1)
col1 = color.white
len2 = input(250, minval=1, title="EMA2")
ema2 = ema(emasrc, len2)
col2 = color.yellow
//Plots
plot(ema1, title="EMA1", linewidth=1, color=col1)
plot(ema2, title="EMA2", linewidth=1, color=col2)
//Stoch
periodK = input(4, title="K", minval=1)
periodD = input(4, title="D", minval=1)
smoothK = input(3, title="Smooth", minval=1)
k = sma(stoch(close, high, low, periodK), smoothK)
d = sma(k, periodD)
//Hidden Divergence Indikator
len = input(title="RSI Period", minval=1, defval=14)
src = input(title="RSI Source", defval=close)
lbR = input(title="Pivot Lookback Right", defval=1)
lbL = input(title="Pivot Lookback Left", defval=19)
rangeUpper = input(title="Max of Lookback Range", defval=20)
rangeLower = input(title="Min of Lookback Range", defval=4)
hiddenBullColor = color.new(color.green, 80)
textColor = color.white
noneColor = color.new(color.white, 100)
osc = rsi(src, len)
plFound = na(pivotlow(osc, lbL, lbR)) ? false : true
phFound = na(pivothigh(osc, lbL, lbR)) ? false : true
_inRange(cond) =>
bars = barssince(cond == true)
rangeLower <= bars and bars <= rangeUpper
//------------------------------------------------------------------------------
// Hidden Bullish
// Osc: Lower Low
oscLL = osc[lbR] < valuewhen(plFound, osc[lbR], 1) and _inRange(plFound[1])
// Price: Higher Low
priceHL = low[lbR] > valuewhen(plFound, low[lbR], 1)
hiddenBullCond = priceHL and oscLL and plFound
//buy Conditions
buyhiddenbull = hiddenBullCond[1] or hiddenBullCond[2] or hiddenBullCond[3] or hiddenBullCond[4] or hiddenBullCond[5] or hiddenBullCond[6] or hiddenBullCond[7] or hiddenBullCond[8] or hiddenBullCond[9] or hiddenBullCond[10]
emacondition = ema1 > ema2
upcondition = close[1] > ema1[1] and ema2[1] and close[2] > ema1[2] and ema2[2] and close[3] > ema1[3] and ema2[3]
crossup = k[0] >= d[0] and k[1] <= d[1]
longcondition = emacondition and upcondition and crossup and buyhiddenbull
if (afterStartDate)
strategy.entry("Long", strategy.long, when = longcondition)
//TakeProfit, StopLoss lowest low
profitfactor = input(title="Profitfactor", type=input.float, step=0.1, defval=1.6)
loLen = input(title="Lowest Low Lookback", type=input.integer,
defval=38, minval=2)
stop_level = lowest(low, loLen)[1]
bought = strategy.position_size[1] < strategy.position_size
barsbought = barssince(bought)
if strategy.position_size>0
profit_level = strategy.position_avg_price + ((strategy.position_avg_price - stop_level[barsbought])*profitfactor)
strategy.exit(id="TP/ SL", stop=stop_level[barsbought], limit=profit_level)