Stratégie d'inversion de l'élan four Indicateur

Auteur:ChaoZhang est là., Date: 2023-11-27 15:51:01 Je suis désolé.
Les étiquettes:

img

Résumé

Cette stratégie utilise trois principaux indicateurs techniques: la moyenne mobile EMA, l'indice de force relative RSI et l'indice de canal de matières premières CCI pour identifier la dynamique des prix à travers les croisements EMA et d'autres entrées confirmées par des lectures de survente/surachat du RSI et du CCI. Cette stratégie de négociation à moyen terme vise à capturer les inversions de dynamique.

La logique de la stratégie

  1. Utiliser des croisements entre l' EMA à 4 et 8 périodes pour déterminer la dynamique des prix l' EMA à 4 périodes plus rapide pour réagir rapidement et l' EMA à 8 périodes plus lente pour confirmer;

  2. Lorsque les EMA tournent à la hausse, c'est-à-dire lorsque l'EMA à quatre périodes franchit l'EMA à huit périodes, vérifiez que le RSI (supérieur à 65) et le CCI (supérieur à 0) ne sont pas surachetés pour donner un signal long;

  3. Lorsque les EMA tournent à la baisse, c'est-à-dire lorsque l'EMA à quatre périodes traverse l'EMA à huit périodes, vérifiez que le RSI (inférieur à 35) et l'ICC (inférieur à 0) sont survendus pour donner un signal court;

  4. Définissez les prix stop loss et take profit en fonction des distances d'entrée une fois que les signaux de trading sont déclenchés.

En résumé, cette stratégie considère la tendance à moyen terme et les niveaux de surachat/survente à court terme comme des signaux relativement stables, tout en limitant efficacement les pertes par transaction.

Analyse des avantages

  1. Les indicateurs multiples atténuent les faux signaux émis par les oscillateurs individuels;

  2. Les EMA déterminent la tendance principale tandis que les RSI et les CCI évitent les zones surchauffées pour améliorer le taux de réussite;

  3. L'arrêt automatique des pertes et la prise de profit limitent les pertes lors de mouvements extrêmes;

  4. La nature purement technique rend cette stratégie facilement implémentable dans n'importe quel délai.

Analyse des risques

  1. Les grandes nouvelles fondamentales peuvent passer avant les niveaux techniques;

  2. Le stop loss peut être effectué par des appels à des stops plus larges en raison d'une forte volatilité;

  3. Les transactions fréquentes entraînent des coûts de transaction plus élevés, il est donc préférable de les laisser aux algorithmes à haute fréquence.

Des possibilités d'amélioration

  1. Incorporer des modèles d'apprentissage automatique pour ajuster automatiquement les paramètres en fonction des fondamentaux;

  2. Construire des arrêts adaptatifs qui réagissent à la volatilité plutôt qu'à des distances fixes.

Conclusion

Cette stratégie à multiples facettes peut générer des profits constants à moyen terme dans des paramètres optimisés, ce qui en fait un système technique accessible.


/*backtest
start: 2023-11-19 00:00:00
end: 2023-11-26 00:00:00
period: 45m
basePeriod: 5m
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/
// © SoftKill21

//@version=4


strategy(title="Moving Average Exponential", shorttitle="EMA", overlay=true)


len4 = input(4, minval=1, title="Length_MA4")
src4 = input(close, title="Source")
offset4 = input(title="Offset", type=input.integer, defval=0, minval=-500, maxval=500)
out4 = ema(src4, len4)
plot(out4, title="EMA", color=color.blue, offset=offset4)

len8 = input(8, minval=1, title="Length_MA8")
src8 = input(close, title="Source")
offset8 = input(title="Offset", type=input.integer, defval=0, minval=-500, maxval=500)
out8 = ema(src8, len8)
plot(out8, title="EMA", color=color.blue, offset=offset8)


//rsioma
src = close, len = input(14, minval=1, title="Length")
up = rma(max(change(ema(src, len)), 0), len)
down = rma(-min(change(ema(src, len)), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
//plot(rsi, color=color.blue)
//band1 = hline(80)
//band0 = hline(20)
//fill(band1, band0, color=color.purple, transp=90)
//hline(50, color=color.gray, linestyle=plot.style_line)
sig = ema(rsi, 21)
//plot(sig, color=color.purple)

//woodie
cciTurboLength = input(title="CCI Turbo Length", type=input.integer, defval=6, minval=3, maxval=14)
cci14Length = input(title="CCI 14 Length", type=input.integer, defval=14, minval=7, maxval=20)

source = close

cciTurbo = cci(source, cciTurboLength)
cci14 = cci(source, cci14Length)

last5IsDown = cci14[5] < 0 and cci14[4] < 0 and cci14[3] < 0 and cci14[2] < 0 and cci14[1] < 0
last5IsUp = cci14[5] > 0 and cci14[4] > 0 and cci14[3] > 0 and cci14[2] > 0 and cci14[1] > 0
histogramColor = last5IsUp ? color.green : last5IsDown ? color.red : cci14 < 0 ? color.green : color.red


// Exit Condition
// Exit Condition
a = input(12)*10
b = input(15)*10
c = a*syminfo.mintick
d = b*syminfo.mintick


longCondition = crossover(out4, out8) and (rsi >= 65 and cci14>=0)
shortCondition = crossunder(out4, out8) and (rsi <=35 and cci14<=0)


long_stop_level     = float(na)
long_profit_level1  = float(na)
long_profit_level2  = float(na)
long_even_level     = float(na)

short_stop_level    = float(na)
short_profit_level1 = float(na)
short_profit_level2 = float(na)
short_even_level    = float(na)

long_stop_level     := longCondition  ? close - c : long_stop_level     [1]
long_profit_level1  := longCondition  ? close + d : long_profit_level1  [1]
//long_profit_level2  := longCondition  ? close + d : long_profit_level2  [1]
//long_even_level     := longCondition  ? close + 0 : long_even_level     [1]

short_stop_level    := shortCondition ? close + c : short_stop_level    [1]
short_profit_level1 := shortCondition ? close - d : short_profit_level1 [1]
//short_profit_level2 := shortCondition ? close - d : short_profit_level2 [1]
//short_even_level    := shortCondition ? close + 0 : short_even_level    [1] 


//ha
// === Input ===
//ma1_len = input(1, title="MA 01")
//ma2_len = input(40, title="MA 02")

// === MA 01 Filter ===
//o=ema(open,ma1_len)
//cc=ema(close,ma1_len)
//h=ema(high,ma1_len)
//l=ema(low,ma1_len)

// === HA calculator ===
//ha_t = heikinashi(syminfo.tickerid)
//ha_o = security(ha_t, timeframe.period, o)
//ha_c = security(ha_t, timeframe.period, cc)
//ha_h = security(ha_t, timeframe.period, h)
//ha_l = security(ha_t, timeframe.period, l)

// === MA 02 Filter ===
//o2=ema(ha_o, ma2_len)
//c2=ema(ha_c, ma2_len)
//h2=ema(ha_h, ma2_len)
//l2=ema(ha_l, ma2_len)

// === Color def ===
//ha_col=o2>c2 ? color.red : color.lime

// ===  PLOTITING===
//plotcandle(o2, h2, l2, c2, title="HA Smoothed", color=ha_col)

tp=input(120)
sl=input(96)
    
strategy.entry("long", strategy.long, when = longCondition)
//strategy.close("long", when = o2>c2 , comment="ha_long")
strategy.entry("short", strategy.short , when =shortCondition )
//strategy.close("short", when = o2<=c2 , comment = "ha_short" )

//strategy.close("long",when=long_profit_level1 or long_stop_level  , comment="tp/sl")
//strategy.close("short",when=short_profit_level1 or short_stop_level , comment="tp/sl")

strategy.exit("x_long","long",profit = tp, loss = sl) //when = o2>c2)
strategy.exit("x_short","short",profit = tp, loss = sl) //when = o2<c2)



Plus de