La stratégie d'achat et de vente est une stratégie de trading simple basée sur la tendance suivante, la prémisse étant de déterminer la direction de la tendance en fonction de la moyenne mobile et d'acheter/vendre les baisses et les points faibles de la tendance.
La stratégie utilise la moyenne mobile simple (SMA) pour déterminer la direction de la tendance. Dans une tendance haussière, lorsque l'action de la bougie offre un
La stratégie utilise également %K et %D de l'oscillateur Blanchflower pour la détermination de la tendance. Elle fermera la position et négociera dans la direction opposée lorsque %K franchit le niveau de %D. De plus, le MACD et la ligne de signal agissent comme des filtres pour ne prendre que les transactions alignées sur la direction de tendance déterminée par le MACD et le signal.
La stratégie peut aller Long seulement, Short seulement, ou les deux. Le mois de début et l'année permettent le backtesting à partir de ce point jusqu'à présent. Tous les paramètres tels que la période SMA, la période %K, la période %D, les paramètres MACD, etc. sont personnalisables.
Les principaux risques de cette stratégie sont les suivants:
La stratégie peut être améliorée dans les domaines suivants:
La stratégie d'achat et de vente à la suite d'une tendance a une logique simple et directe pour négocier des retraits dans les tendances identifiées par la SMA et filtrées par des indicateurs.
/*backtest start: 2022-10-10 00:00:00 end: 2023-10-16 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Higher High / Lower Low Strategy", overlay=true) // Getting inputs longOnly = input(true, title="Long or Short Only") useMACD = input(true, title="Use MACD Filter") useSignal = input(true, title="Use Signal Filter") //Filter backtest month and year startMonth = input(10, minval=1, maxval=12, title="Month") startYear = input(2020, minval=2000, maxval=2100, title="Year") //Filter funtion inputs periodA = input(20, minval=1, title="Period SMA") periodK = input(5, minval=1, title="Period %K") fast_length = input(title="Period Fast", type=input.integer, defval=5) slow_length = input(title="Period Slow", type=input.integer, defval=20) signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 30) //Calculations smoothD = 3 //input(3, minval=1, title="Smooth %D") smoothK = 2 //input(2, minval=1, title="Smooth %K") ma50 = sma(close, periodA) k = sma(stoch(close, high, low, periodK), smoothK) - 50 d = sma(k, smoothD) macd = ema(close,fast_length) - ema(close,slow_length) signal = ema(macd,signal_length) hist = macd - signal if (not na(k) and not na(d) and not na(macd) and not na(signal) and longOnly and month>=startMonth and year>=startYear)// if(k > k[1] and k[2] >= k[1] and (ma50 > ma50[1]) and (not useK or k[1] <= -threshold_k) and (not useMACD or macd > macd[1]) and (not useSignal or signal > signal[1]) and (not useHHLL or close >= high[1]) and (not useD or d <= -threshold_d)) if(high[2] >= high[1] and high > high[1] and (ma50 > ma50[1]) and (not useMACD or macd > macd[1]) and (not useSignal or signal > signal[1])) strategy.order("HH_LE", strategy.long, when=strategy.position_size == 0, comment="HH_LE") if (k < k[1]) strategy.order("HH_SX", strategy.short, when=strategy.position_size != 0, comment="HH_SX") if (not na(k) and not na(d) and not na(macd) and not na(signal) and not longOnly and month>=startMonth and year>=startYear) if(low[2] <= low[1] and low < low[1] and (ma50 < ma50[1]) and (not useMACD or macd < macd[1]) and (not useSignal or signal < signal[1])) strategy.order("HH_SE", strategy.short, when=strategy.position_size == 0, comment="HH_SE") if (k > k[1]) strategy.order("HH_LX", strategy.long, when=strategy.position_size != 0, comment="HH_LX") //plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)