
Cette stratégie consiste à calculer l’écart entre le prix de l’or et la moyenne mobile de l’indice du 21e jour, en combinant l’écart standard pour juger de la survente et de la survente du marché, en adoptant une stratégie de suivi de la tendance lorsque l’écart atteint un certain écart standard, tout en mettant en place un mécanisme de stop-loss pour contrôler le risque.
Il s’agit d’une stratégie de suivi des tendances qui consiste à sur-acheter et sur-vendre sur un marché basé sur la dynamique des prix et les écarts de référence, avec les avantages suivants:
Cette stratégie comporte aussi des risques:
La solution est simple:
Cette stratégie peut être optimisée dans les domaines suivants:
Cette stratégie est globalement une stratégie de suivi de tendance raisonnable. Elle utilise les moyennes mobiles pour déterminer la direction de la tendance principale, et grâce au traitement normalisé de l’écart de prix, il est possible de déterminer clairement la situation de survente et de survente du marché, ce qui génère un signal de transaction. La mise en place d’un moyen de stop-loss raisonnable permet également à la stratégie de contrôler le risque tout en garantissant la rentabilité.
/*backtest
start: 2024-01-20 00:00:00
end: 2024-02-19 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("GC Momentum Strategy with Stoploss and Limits", overlay=true)
// Input for the length of the EMA
ema_length = input.int(21, title="EMA Length", minval=1)
// Exponential function parameters
steepness = 2
// Calculate the EMA
ema = ta.ema(close, ema_length)
// Calculate the deviation of the close price from the EMA
deviation = close - ema
// Calculate the standard deviation of the deviation
std_dev = ta.stdev(deviation, ema_length)
// Calculate the Z-score
z_score = deviation / std_dev
// Long entry condition if Z-score crosses +0.5 and is below 3 standard deviations
long_condition = ta.crossover(z_score, 0.5)
// Short entry condition if Z-score crosses -0.5 and is above -3 standard deviations
short_condition = ta.crossunder(z_score, -0.5)
// Exit long position if Z-score converges below 0.5 from top
exit_long_condition = ta.crossunder(z_score, 0.5)
// Exit short position if Z-score converges above -0.5 from below
exit_short_condition = ta.crossover(z_score, -0.5)
// Stop loss condition if Z-score crosses above 3 or below -3
stop_loss_long = ta.crossover(z_score, 3)
stop_loss_short = ta.crossunder(z_score, -3)
// Enter and exit positions based on conditions
if (long_condition)
strategy.entry("Long", strategy.long)
if (short_condition)
strategy.entry("Short", strategy.short)
if (exit_long_condition)
strategy.close("Long")
if (exit_short_condition)
strategy.close("Short")
if (stop_loss_long)
strategy.close("Long")
if (stop_loss_short)
strategy.close("Short")
// Plot the Z-score on the chart
plot(z_score, title="Z-score", color=color.blue, linewidth=2)
// Optional: Plot zero lines for reference
hline(0.5, "Upper Threshold", color=color.red)
hline(-0.5, "Lower Threshold", color=color.green)