
La stratégie utilise un croisement des moyennes mobiles de l’indice (EMA) pour générer un signal de transaction, tout en définissant dynamiquement les niveaux de stop et de perte. Lorsque l’EMA à courte période (EMA 12) dépasse l’EMA à longue période (EMA 26) en bas, elle génère un signal d’achat; inversement, lorsque l’EMA 12 dépasse l’EMA 26 en haut, elle génère un signal de vente.
Le cœur de la stratégie est de générer un signal de transaction en utilisant la croisée de deux moyennes mobiles indicielles (EMA) de deux périodes différentes. L’EMA est un indicateur de suivi de tendance, capable d’aplanir les données de prix et de réduire les interférences de bruit.
En même temps, la stratégie utilise une méthode de stop loss dynamique, qui définit différents niveaux de stop loss et de stop loss en fonction de la direction de la position actuelle (multiple ou vide). Cette méthode d’ajustement dynamique du stop loss permet de maximiser les bénéfices lorsque la tendance est forte, tout en arrêtant les pertes en temps opportun lors d’une reprise des prix, afin de mieux contrôler les risques.
Simplicité: La stratégie utilise seulement le croisement de deux lignes EMA pour générer un signal de transaction, la logique est claire, facile à comprendre et à mettre en œuvre.
Suivi des tendances: L’indicateur EMA possède une bonne capacité de suivi des tendances et est capable de capturer efficacement les principales tendances des prix.
Stop loss dynamique: les niveaux de stop loss et stop loss sont ajustés dynamiquement en fonction de la direction de la position, ce qui permet de maximiser les bénéfices lorsque la tendance est forte, tout en arrêtant les pertes en temps opportun en cas de revers des prix, afin de mieux contrôler les risques.
Adaptabilité: La stratégie est adaptée à différents environnements de marché et types de transactions, avec une forte adaptabilité et flexibilité.
Risque d’optimisation des paramètres: le choix des cycles EMA et le paramétrage du stop loss ratio doivent être optimisés en fonction de l’environnement du marché et de la variété de transactions, et un paramétrage inapproprié peut entraîner une mauvaise performance de la stratégie.
Risque de transaction fréquent: les croisements EMA peuvent se produire fréquemment lorsque le marché est en état de choc, ce qui conduit la stratégie à générer plus de signaux de transaction, augmentant les coûts de transaction et le risque.
Risque d’inversion de tendance: lorsque la tendance du marché est soudainement inversée, la stratégie peut générer de faux signaux de négociation, entraînant des pertes.
Introduction d’autres indicateurs techniques: il peut être envisagé d’introduire d’autres indicateurs techniques, tels que le RSI, le MACD, etc., pour aider à la confirmation du signal croisé EMA et à améliorer la fiabilité du signal de négociation.
Optimisation des paramètres: recherchez la meilleure combinaison de paramètres pour un environnement de marché et une variété de transactions en effectuant des tests d’optimisation sur les cycles EMA et le stop-loss ratio.
Mettre en place des mesures de contrôle des risques: envisagez de mettre en place des mesures de contrôle des risques, telles que la gestion des positions, la gestion des fonds, etc., afin de mieux contrôler les risques liés aux transactions.
Combinaison avec l’analyse fondamentale: Combiner l’analyse technique avec l’analyse fondamentale, en tenant compte de facteurs tels que l’environnement du marché et les données économiques, afin d’améliorer l’exactitude des décisions de négociation.
La stratégie utilise les croisements EMA pour générer des signaux de négociation et utilise une méthode de stop-loss dynamique pour contrôler les risques. Elle présente des avantages tels que la simplicité, la facilité d’utilisation, le suivi des tendances et la capacité d’adaptation, mais elle est également confrontée à des défis tels que le risque d’optimisation des paramètres, le risque de négociation fréquente et le risque de renversement de la tendance.
/*backtest
start: 2023-05-23 00:00:00
end: 2024-05-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("CDC Action Zone Trading Bot with Dynamic TP/SL", overlay=true)
// ดึงข้อมูลราคาปัจจุบัน
current_price = close
// คำนวณเส้น EMA 12 และ EMA 26
ema12 = ta.ema(current_price, 12)
ema26 = ta.ema(current_price, 26)
// กำหนดเปอร์เซ็นต์ Take Profit และ Stop Loss
takeProfitPercent = 0.080
stopLossPercent = 0.025
// คำนวณระดับ Take Profit และ Stop Loss
longTakeProfit = strategy.position_avg_price * (1 + takeProfitPercent)
longStopLoss = strategy.position_avg_price * (1 - stopLossPercent)
shortTakeProfit = strategy.position_avg_price * (1 - takeProfitPercent)
shortStopLoss = strategy.position_avg_price * (1 + stopLossPercent)
// สัญญาณ Buy
buySignal = (ema12 > ema26) and (ema12[1] <= ema26[1])
// สัญญาณ Sell
sellSignal = (ema12 < ema26) and (ema12[1] >= ema26[1])
// เปิด Position Long
if (buySignal)
strategy.entry("Long", strategy.long)
// เปิด Position Short
if (sellSignal)
strategy.entry("Short", strategy.short)
// ปิด Position Long เมื่อถึง Take Profit หรือ Stop Loss
if (strategy.position_size > 0)
strategy.exit("Long TP/SL", from_entry="Long", limit=longTakeProfit, stop=longStopLoss, comment="TP/SL")
// ปิด Position Short เมื่อถึง Take Profit หรือ Stop Loss
if (strategy.position_size < 0)
strategy.exit("Short TP/SL", from_entry="Short", limit=shortTakeProfit, stop=shortStopLoss, comment="TP/SL")
// ปิด Position Long เมื่อเกิดสัญญาณขาย
if (strategy.position_size > 0 and sellSignal)
strategy.close("Long", comment="Sell Signal")
// ปิด Position Short เมื่อเกิดสัญญาณซื้อ
if (strategy.position_size < 0 and buySignal)
strategy.close("Short", comment="Buy Signal")
// Debugging messages to plot the calculated levels for visual verification
//plot(longTakeProfit, title="Long Take Profit", color=color.green, linewidth=1, style=plot.style_line)
//plot(longStopLoss, title="Long Stop Loss", color=color.red, linewidth=1, style=plot.style_line)
//plot(shortTakeProfit, title="Short Take Profit", color=color.green, linewidth=1, style=plot.style_line)
//plot(shortStopLoss, title="Short Stop Loss", color=color.red, linewidth=1, style=plot.style_line)