Cette stratégie utilise des techniques simples de croisement des moyennes mobiles et de double prise de profit pour contrôler le risque et augmenter la rentabilité.
La stratégie est basée sur le croisement de l'EMA et de l'WMA pour déterminer les tendances du marché.
Lors de l'entrée, deux niveaux de profit sont définis. Le premier profit est fixé au prix d'entrée + 20 pips, et le second profit est fixé au prix d'entrée + 40 pips. Pendant ce temps, un stop loss est placé au prix d'entrée - 20 pips.
Lorsque le prix atteint le premier profit, il fermera la moitié de la position.
Il y a trois résultats possibles pour chaque transaction:
Le prix atteint le stop loss, prend une perte de 2% directement.
Les prix atteignent d'abord le profit d'abord, ferme la moitié de la position en bloquant 1% de profit, puis continue à fonctionner jusqu'à ce qu'il s'arrête, se terminant par un break even.
Après avoir atteint le premier profit, le prix continue et atteint le deuxième profit, se terminant par 1% + 2% = 3% de profit total.
Le plus grand avantage de cette double stratégie de prise de profit est qu'elle contrôle le risque et évite d'énormes pertes individuelles.
Comparée à la prise de profit/arrêt de perte simple, cette stratégie a trois résultats - perte, gain ou rentabilité, réduisant la probabilité d'arrêt de perte. Même si elle est arrêtée, la perte maximale est limitée à 2%.
L'EMA et le WMA sont des indicateurs bien connus et faciles à comprendre. La logique de prise de profit/arrêt de perte est simple à suivre.
Malgré les avantages, cette stratégie comporte également des risques à prendre en compte.
Tout d'abord, en tant qu'indicateurs de moyennes mobiles, l'EMA et la WMA ont des capacités relativement faibles pour identifier les variations de marché.
Deuxièmement, les niveaux fixes de prise de profit/arrêt de perte peuvent ne pas s'adapter à la volatilité du marché.
Enfin, la stratégie ne peut pas répondre à des événements inattendus, avec le risque d'être piégée.
Plusieurs aspects permettent d'optimiser davantage la stratégie:
Améliorer les signaux d'entrée. Tester de meilleurs indicateurs de moyenne mobile ou de tendance que les EMA et les WMA pour générer des signaux de meilleure qualité.
Utilisez des méthodes telles que l'ATR, l'arrêt de perte de suivi, etc. pour adapter les niveaux de profit/perte aux marchés.
Ajouter des filtres. Exiger la confirmation du volume ou de l'indicateur secondaire avant le croisement pour éviter les pièges.
Optimiser la taille des positions, affiner la taille des positions selon les règles de gestion des capitaux.
En résumé, il s'agit d'une stratégie de suivi de tendance simple et pratique. Il utilise l'intersection EMA et WMA pour les entrées, et le double profit pour contrôler les risques. Par rapport aux stratégies traditionnelles, il a un taux de gain plus élevé et un risque plus faible. Bien sûr, les limitations des indicateurs et des paramètres de profit / perte doivent être surveillées. D'autres optimisations peuvent rendre la stratégie plus robuste.
/*backtest start: 2023-11-06 00:00:00 end: 2023-11-13 00:00:00 period: 30m basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("FS ATR & PS (MA)", overlay=true) // Strategy Buy = input(true) Sell = input(true) // Time Period start_year = input(title='Start year' ,defval=2019) start_month = input(title='Start month' ,defval=1) start_day = input(title='Start day' ,defval=1) start_hour = input(title='Start hour ' ,defval=0) start_minute = input(title='Start minute' ,defval=0) end_time = input(title='set end time?',defval=false) end_year = input(title='end year' ,defval=2019) end_month = input(title='end month' ,defval=12) end_day = input(title='end day' ,defval=31) end_hour = input(title='end hour' ,defval=23) end_minute = input(title='end minute' ,defval=59) // MA ema_period = input(title='EMA period',defval=10) wma_period = input(title='WMA period',defval=20) ema = ema(close,ema_period) wma = wma(close,wma_period) // Entry Condition longCondition = crossover(ema,wma) and Buy and nz(strategy.position_size) == 0 and time > timestamp(start_year, start_month, start_day, start_hour, start_minute) and (end_time?(time < timestamp(end_year, end_month, end_day, end_hour, end_minute)):true) shortCondition = crossunder(ema,wma) and Sell and nz(strategy.position_size) == 0 and time > timestamp(start_year, start_month, start_day, start_hour, start_minute) and (end_time?(time < timestamp(end_year, end_month, end_day, end_hour, end_minute)):true) // Exit Condition a = input(20)*10 b = input(40)*10 c = a*syminfo.mintick d = b*syminfo.mintick 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 + c : 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 - c : short_profit_level1 [1] short_profit_level2 := shortCondition ? close - d : short_profit_level2 [1] short_even_level := shortCondition ? close + 0 : short_even_level [1] // Position Sizing Risk = input(defval=10, title="Risk per trade%", step=1, minval=0, maxval=100)/100 size = 1 // Strategy if longCondition strategy.entry("Buy" , strategy.long, qty=size) strategy.exit ("Exit1", stop=long_stop_level, limit=long_profit_level1, qty=size/2) strategy.exit ("Exit2", stop=long_stop_level, limit=long_profit_level2) if shortCondition strategy.entry("Sell" , strategy.short, qty=size) strategy.exit ("Exit3", stop=short_stop_level, limit=short_profit_level1, qty=size/2) strategy.exit ("Exit4", stop=short_stop_level, limit=short_profit_level2) // Plot plot(strategy.position_size <= 0 ? na : long_stop_level , color=#dc143c, style=plot.style_linebr, linewidth=1) plot(strategy.position_size <= 0 ? na : long_profit_level1 , color=#00ced1, style=plot.style_linebr, linewidth=1) plot(strategy.position_size <= 0 ? na : long_profit_level2 , color=#00ced1, style=plot.style_linebr, linewidth=1) plot(strategy.position_size <= 0 ? na : long_even_level , color=#ffffff, style=plot.style_linebr, linewidth=1) plot(strategy.position_size >= 0 ? na : short_stop_level , color=#dc143c, style=plot.style_linebr, linewidth=1) plot(strategy.position_size >= 0 ? na : short_profit_level1, color=#00ced1, style=plot.style_linebr, linewidth=1) plot(strategy.position_size >= 0 ? na : short_profit_level2, color=#00ced1, style=plot.style_linebr, linewidth=1) plot(strategy.position_size >= 0 ? na : short_even_level , color=#ffffff, style=plot.style_linebr, linewidth=1) plot(ema,color=#00ced1) plot(wma,color=#dc143c)