Cette stratégie utilise un double système de moyenne mobile pour identifier les opportunités de rupture potentielles dans des actions ou des crypto-monnaies sélectionnées.
La stratégie utilise deux moyennes mobiles simples (SMA) avec des périodes différentes comme signaux de trading. La première SMA a une période plus longue pour représenter la direction générale de la tendance.
Lorsque la SMA à court terme franchit le niveau de la SMA à plus long terme en bas, elle indique une tendance haussière des prix dans l'ensemble, de sorte que la stratégie ouvre une position longue. Lorsque les prix baissent pour réévaluer la SMA à plus long terme, cela indique que le recul à court terme est terminé et que la stratégie envisage de s'arrêter ou de tirer profit de la position.
En outre, la stratégie comporte des conditions de "survente" et de "surachat" afin d'éviter de négocier dans des situations extrêmes.
Il y a encore des possibilités d'optimisation de cette stratégie:
Cette stratégie combine les atouts du trading de suivi de tendance et de pullback en utilisant un double système de moyenne mobile pour détecter les opportunités.
/*backtest start: 2023-02-20 00:00:00 end: 2024-02-26 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // @version=5 strategy("Profitable Pullback Trading Strategy", overlay=true,initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100) // Inputs ma_length1 = input.int(280,'MA length 1', step = 10,group = 'Moving Avg. Parameters', inline = 'MA') ma_length2 = input.int(13,'MA length 2', step = 1,group = 'Moving Avg. Parameters', inline = 'MA') sl = input.float(title="Stop Loss (%)", defval=0.07, step=0.1, group="Moving Avg. Parameters") too_deep = input.float(title="Too Deep (%)", defval=0.27, step=0.01, group="Too Deep and Thin conditions", inline = 'Too') too_thin = input.float(title="Too Thin (%)", defval=0.03, step=0.01, group="Too Deep and Thin conditions", inline = 'Too') // Calculations ma1 = ta.sma(close,ma_length1) ma2 = ta.sma(close,ma_length2) too_deep2 = (ma2/ma1-1) < too_deep too_thin2 = (ma2/ma1-1) > too_thin // Entry and close condtions var float buy_price = 0 buy_condition = (close > ma1) and (close < ma2) and strategy.position_size == 0 and too_deep2 and too_thin2 close_condition1 = (close > ma2) and strategy.position_size > 0 and (close < low[1]) stop_distance = strategy.position_size > 0 ? ((buy_price - close) / close) : na close_condition2 = strategy.position_size > 0 and stop_distance > sl stop_price = strategy.position_size > 0 ? buy_price - (buy_price * sl) : na // Entry and close orders if buy_condition strategy.entry('Long',strategy.long) if buy_condition[1] buy_price := open if close_condition1 or close_condition2 strategy.close('Long',comment="Exit" + (close_condition2 ? "SL=true" : "")) buy_price := na plot(ma1,color = color.blue) plot(ma2,color = color.orange)