Cette stratégie utilise une combinaison d’indicateurs de la moyenne, du hasard et du MACD pour identifier les opportunités de trading à court terme.
Cette stratégie est basée sur les principes suivants:
Les courbes de 50 et 100 cycles sont utilisées pour déterminer la direction de la tendance. Les courbes de 50 et 100 cycles sont utilisées pour déterminer la direction de la tendance.
L’indicateur MACD est utilisé pour déterminer le moment de l’achat et de la vente. Lorsque l’écart est supérieur à 0, la force de la tête est augmentée et la position est en hausse. Lorsque l’écart est inférieur à 0, la force de la tête vide est augmentée et la position est en baisse.
L’indicateur Stochastic RSI, combiné à l’indicateur KDJ et à l’indicateur RSI, permet de déterminer si le marché est en survente ou en survente. Il est en survente lorsque l’indicateur est inférieur à 20 et en survente lorsque l’indicateur est supérieur à 80.
Après avoir déterminé la direction de l’ouverture d’une position, une position peut être ouverte si 4 des 5 dernières lignes K de clôture touchent la ligne moyenne, indiquant un support ou une pression près de la ligne moyenne.
Gestion des risques avec des points de rupture.
Cette stratégie présente les avantages suivants:
La combinaison d’indicateurs multiples, l’utilisation intégrée de la ligne moyenne, le surachat et la survente des indicateurs et des indicateurs d’énergie, améliorent le taux de réussite des transactions.
La courte période de la moyenne permet de saisir rapidement les tendances et de les inverser. Optimisation des paramètres MACD, identification précise des moments d’achat et de vente.
Les paramètres de l’indicateur RSI stochastique ont été optimisés pour mieux identifier les surachats et les surventes.
Utilisez la pression d’appui près de la moyenne pour contrôler le rythme et éviter d’être coincé dans une percée inefficace.
Il est possible d’effectuer des stop-loss raisonnables et de contrôler efficacement le risque d’une seule transaction.
Cette stratégie comporte aussi des risques:
Les dommages causés par les fausses intrusions ne peuvent pas être évités.
Les combinaisons d’indicateurs multiples peuvent être déviées, ce qui entraîne des signaux de trading incohérents.
Les points de rupture fixes peuvent ne pas s’adapter aux changements du marché.
La mise en œuvre du code est plus complexe, les paramètres sont nombreux et il n’est pas facile à optimiser.
Les solutions pour gérer les risques sont les suivantes:
Optimisation des paramètres, amélioration de la qualité du signal et réduction de la probabilité de fausse percée.
La priorité des indicateurs est établie pour éviter les conflits de signaux.
Il permet de suivre la dynamique de stop loss et de définir une plage de stop loss en fonction d’indicateurs tels que ATR.
Simplifier la logique du code, extraire les paramètres centraux pour les tester et les optimiser.
Cette stratégie peut être optimisée dans les directions suivantes:
Test des périodes de moyenne et des paramètres MACD pour trouver la meilleure combinaison de paramètres
Test de différents indicateurs de survente et de survente au lieu du RSI stochastique.
L’expérience de l’arrêt de perte dynamique, de l’arrêt de perte mobile, etc., rend la gestion des pertes plus intelligente.
L’ajout de conditions de filtrage telles que l’augmentation du volume des transactions améliore la qualité du signal.
Optimisation de la logique d’ouverture des positions pour prévenir les ruptures inefficaces.
Limite de stop-loss sur la taille du compte, le nombre de transactions par jour, etc. pour contrôler le risque global.
Cette stratégie intègre les avantages de plusieurs indicateurs et a une forte utilité dans les transactions à court terme. La stabilité et la rentabilité de la stratégie peuvent être encore améliorées en continuant à optimiser les paramètres, la logique d’ouverture stricte et l’amélioration de la stratégie de gestion des pertes et des pertes.
/*backtest
start: 2023-01-01 00:00:00
end: 2023-10-08 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title="Forex scalper 2xEMA + SRSI + MACD", shorttitle="Forex scalper 5-15min", overlay=true)
src = input(title="Source", type=input.source, defval=close)
src_0 = src[0]
src_1 = src[1]
src_2 = src[2]
src_3 = src[3]
src_4 = src[4]
len50 = input(50, minval=1, title="Length")
src50 = input(close, title="Source")
out50 = ema(src50, len50)
len100 = input(100)
src100 = input(close, title="Source")
out100 = ema(src100, len100)
len1 = input(1, minval=1, title="Length")
src1 = input(close, title="Source")
out1 = sma(src1, len1)
length = input(4, minval=1)
OverBought = input(80)
OverSold = input(20)
smoothK = 3
smoothD = 3
k = sma(stoch(close, high, low, length), smoothK)
d = sma(k, smoothD)
cu = crossover(k,OverSold)
co = crossunder(k,OverBought)
sma_down = crossunder(out1, out50)
sma_up = crossover(out1,out50)
//if (not na(k) and not na(d))
// if (co and k < OverSold)
// strategy.entry("StochLE", strategy.long, comment="StochLE")
//if (cu and k > OverBought)
// strategy.entry("StochSE", strategy.short, comment="StochSE")
crossCandle_4 = crossover(src[4],out50)
crossCandleUnder_4= cross(src[4],out50)
crossCandle_3 = crossover(src[3],out50)
crossCandleUnder_3= crossunder(src[3],out50)
crossCandle_2 = crossover(src[2],out50)
crossCandleUnder_2= crossunder(src[2],out50)
crossCandle_1 = crossover(src[1],out50)
crossCandleUnder_1= crossunder(src[1],out50)
crossCandle_0 = crossover(src[0],out50)
crossCandleUnder_0= crossunder(src[0],out50)
conditionOver = (crossCandle_4 or crossCandle_3 or crossCandle_2 or crossCandle_1 or crossCandle_0)
conditionUnder =(crossCandleUnder_4 or crossCandleUnder_3 or crossCandleUnder_2 or crossCandleUnder_1 or crossCandleUnder_0)
touch4 = (cross(low[4],out50) or cross(high[4],out50))
touch3 = (cross(low[3],out50) or cross(high[3],out50))
touch2 = (cross(low[2],out50) or cross(high[2],out50))
touch1 = (cross(low[1],out50) or cross(high[1],out50))
touch = touch1 or touch2 or touch3 or touch4
//and sma_up
//and sma_down
// Getting inputs
fast_length = input(title="Fast Length", type=input.integer, defval=12)
slow_length = input(title="Slow Length", type=input.integer, defval=26)
src_macd = input(title="Source", type=input.source, defval=close)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 10)
sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=false)
sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=false)
// Plot colors
col_grow_above = #26A69A
col_grow_below = #FFCDD2
col_fall_above = #B2DFDB
col_fall_below = #EF5350
col_macd = #0094ff
col_signal = #ff6a00
// Calculating
fast_ma = sma_source ? sma(src_macd, fast_length) : ema(src_macd, fast_length)
slow_ma = sma_source ? sma(src_macd, slow_length) : ema(src_macd, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal
//plot(hist, title="Histogram", style=plot.style_columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below) ), transp=0 )
//plot(macd, title="MACD", color=col_macd, transp=0)
//plot(signal, title="Signal", color=col_signal, transp=0)
// plot((conditionOver or conditionUnder or touch) and src[0] >= out50 and close >= out50 and (cu) and out50 > out100 and hist>=0 , title="Buy", style=columns, color=lime)
// plot((conditionOver or conditionUnder or touch) and src[0] <= out50 and close <= out50 and (co) and out50< out100 and hist<=0 , title="sell", style=columns, color=red)
long_cond = ((conditionOver or conditionUnder or touch) and src[0] >= out50 and close > out50 and (cu) and out50 > out100 and hist>=0)
short_cond = ((conditionOver or conditionUnder or touch) and src[0] <= out50 and close < out50 and (co) and out50< out100 and hist<=0)
tp=input(200)
sl=input(200)
strategy.entry("long",strategy.long, when=long_cond)
strategy.entry("short",strategy.short, when=short_cond)
strategy.exit("X_long", "long", profit=tp, loss=sl, when=touch )
strategy.exit("x_short", "short",profit=tp, loss=sl,when = touch )