La stratégie de suivi de l'élan du pourcentage de retournement à haute fréquence est une approche de négociation à haute fréquence basée sur la moyenne mobile adaptative de Kaufman (KAMA). Cette stratégie utilise l'indicateur KAMA sur un laps de temps d'une heure comme référence principale lors de l'exécution de transactions sur des délais plus courts, tels que 15 minutes. Le concept de base consiste à basculer rapidement entre les positions longues et courtes lorsque le prix traverse la ligne KAMA, avec un objectif de profit de 1% pour assurer des gains petits mais fréquents.
Le cœur de la stratégie est d'utiliser la ligne KAMA pour capturer les tendances à court terme et s'adapter aux fluctuations du marché par le biais d'un renversement fréquent des positions.
Caractéristiques des transactions à haute fréquence: la stratégie peut capturer la volatilité à court terme du marché, augmenter la fréquence des transactions et les opportunités de profit potentiels.
Contrôle des risques: en fixant un objectif de profit de 1%, la stratégie peut rapidement générer de petits bénéfices, réduisant l'exposition au risque par transaction.
Haute adaptabilité: L'indicateur KAMA possède des caractéristiques d'adaptation qui lui permettent d'ajuster la sensibilité en fonction des différentes conditions du marché, ce qui améliore l'adaptabilité de la stratégie.
Efficacité élevée du capital: la stratégie utilise 90% du solde du compte comme taille de position, en utilisant pleinement les fonds disponibles.
Contrôle du tirage: les petits bénéfices fréquents aident à contrôler le tirage maximum, ce qui rend la stratégie plus stable.
Le potentiel d'effet de levier: en raison de la faiblesse des recours, la stratégie a le potentiel d'utiliser un effet de levier plus élevé pour amplifier les rendements.
Automatisation complète: la logique de la stratégie est claire et facile à mettre en œuvre pour le trading entièrement automatisé, réduisant l'intervention humaine.
Sur-trading: Le flipping à haute fréquence peut entraîner un trading excessif, augmenter les coûts de transaction et des pertes par glissement.
Inconvénient pour les marchés instables: Dans les marchés instables et latéraux, les sauts longs et courts fréquents peuvent entraîner de petites pertes accumulées.
Les tendances manquantes: l'objectif de profit de 1% peut entraîner une sortie anticipée des marchés à forte tendance, ce qui entraîne une perte de plus grandes opportunités de profit.
Risque de fausse rupture: des croisements fréquents des prix autour de la ligne KAMA peuvent déclencher plusieurs fausses transactions de rupture.
Risque de gestion de trésorerie: l'utilisation de 90% du solde du compte comme taille de position peut rapidement éroder le capital lors de pertes consécutives.
Applicabilité limitée: la stratégie peut ne convenir qu'à des marchés très volatils, dont les performances sont médiocres dans des environnements à faible volatilité.
Dépendance technique: la stratégie repose fortement sur l'indicateur KAMA; si l'indicateur échoue, cela peut entraîner des pertes importantes.
Prise de profit dynamique: envisager de changer l'objectif fixe de 1% de profit en une prise de profit dynamique basée sur l'ATR ou la volatilité afin de s'adapter aux différentes conditions du marché.
Filtrage d'entrée: introduire des conditions de filtrage supplémentaires (telles que RSI, volume) pour réduire les faux écarts.
Évaluation de la force de la tendance: Évaluer la force de la tendance avant l'entrée, ne négocier que lorsque les tendances sont claires pour éviter une négociation fréquente sur des marchés instables.
Optimisation de la gestion des positions: mettre en œuvre une stratégie de dimensionnement des positions plus souple, en ajustant la taille des positions en fonction de la performance du compte ou de la volatilité du marché.
L'analyse à plusieurs délais: intégrer des analyses à partir de délais plus longs pour améliorer la précision de la direction des échanges.
Mécanisme d'arrêt des pertes: mettre en place des mécanismes d'arrêt des pertes appropriés pour éviter des pertes excessives sur les transactions individuelles.
Optimisation des paramètres: Optimiser les paramètres KAMA pour trouver la meilleure combinaison de périodes rapides et lentes.
Adaptabilité du marché: mettre au point un mécanisme de reconnaissance de l'état du marché permettant d'ajuster automatiquement les paramètres de la stratégie ou de mettre en pause la négociation dans des conditions de marché différentes.
La stratégie de suivi de l'élan en pourcentage de retournement à haute fréquence est une méthode de négociation innovante basée sur l'indicateur KAMA. En capturant rapidement les changements de tendance à court terme et en fixant des objectifs de profit fixes, cette stratégie vise à réaliser de petits profits fréquents.
En optimisant les conditions d'entrée, en introduisant des profits dynamiques et en améliorant la gestion des positions, cette stratégie a le potentiel d'améliorer encore ses performances et sa stabilité. Cependant, les traders doivent pleinement reconnaître ses risques lors de l'utilisation de cette stratégie et apporter les ajustements appropriés en fonction des préférences personnelles en matière de risque et des conditions du marché. Dans l'ensemble, il s'agit d'une stratégie de trading quantitative prometteuse, particulièrement adaptée aux investisseurs à la recherche d'opportunités de trading à haute fréquence et à faible risque.
/*backtest start: 2023-07-23 00:00:00 end: 2024-07-28 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 // indicator('TeeLek Flip 1 Percent', shorttitle='TeeLek Flip 1 Percent', overlay=true) strategy("TeeLek Flip 1 Percent", shorttitle="TeeLek Flip 1 Percent", overlay=true) // ---------------------------------------- // Input // ---------------------------------------- BALANCE_USDT = input.float(1000, title="Start Balance (USDT)", minval=100) PERCENT_POSITION_SIZE = input.float(90, title="Position Size (%USDT)", minval=1, maxval=100) PERCENT_TAKE_PROFIT = input.float(10, title="Take Profit (%)", minval=0.1, maxval=100) // KAMA Setup KAMA_PERIOD = int(10) KMA_FAST_LEN = input.int(5, "KMA Fast Legnth", minval=1,group="KAMA Setup") KMA_SLOW_LEN = input.int(50, "KMA Slow Legnth", minval=1,group="KAMA Setup") // ---------------------------------------- // Function // ---------------------------------------- pine_kama(source) => price_change = math.abs(source - source[KAMA_PERIOD]) sum_price_change = math.sum(math.abs(source - source[1]), KAMA_PERIOD) fastest = 2/(KMA_FAST_LEN + 1) slowest = 2/(KMA_SLOW_LEN + 1) ER = price_change / sum_price_change SC = math.pow((ER * (fastest-slowest) + slowest), 2) alpha = SC sum = 0.0 sum := na(sum[1]) ? source : sum[1] + SC * (source - nz(sum[1])) // ---------------------------------------- // Variable // ---------------------------------------- var CurrentBalance_USDT = float(0) var Accom_USDT = float(0) var PositionSize_USDT = float(0) var PositionSize_BTC = float(0) var PositionTarget_USDT = float(0) var TargetPrice = float(0) var Long_BTC = float(0) var Long_AvgPrice = float(0) var Short_BTC = float(0) var Short_AvgPrice = float(0) var Long_Profit = float(0) var Short_Profit = float(0) // เริ่มต้นจากจำนวน Balanace ที่กำหนดมาให้ if CurrentBalance_USDT==0 CurrentBalance_USDT:=BALANCE_USDT // ---------------------------------------- // Signal // ---------------------------------------- // kama line kama_1h = request.security(syminfo.tickerid, "60",pine_kama(close)) // ---------------------------------------- // Strategy Preparing // ---------------------------------------- // คำนวณ Position Size เตรียมเอาไว้ PositionSize_USDT:=CurrentBalance_USDT*PERCENT_POSITION_SIZE/100 PositionSize_BTC:=PositionSize_USDT/close // คำนวณหามูลค่าเป้าหมาย ถ้าถึงก็จะขายเลย PositionTarget_USDT:=CurrentBalance_USDT+(CurrentBalance_USDT*PERCENT_TAKE_PROFIT/100) // ถ้ายังไม่ได้เปิด Order // ให้รอ ราคาตัดเส้น KAMA 1H ก่อน if Long_BTC==0 and Short_BTC==0 // ตัดขึ้น ให้ซื้อขึ้น Long if close>kama_1h and close[1]<=kama_1h[1] strategy.entry("L", strategy.long) Long_BTC:=PositionSize_BTC Long_AvgPrice:=close // ตัดลง ให้ซื้อลง Short else if close<kama_1h and close[1]>=kama_1h[1] strategy.entry("S", strategy.short) Short_BTC:=PositionSize_BTC Short_AvgPrice:=close // ---------------------------------------- // Strategy Switch Side // ---------------------------------------- // ถ้าเปิด Long อยู่ if Long_BTC>0 // ถ้าตัดลง ให้ปิด Long แล้วซื้อลง Short if close<kama_1h and close[1]>=kama_1h[1] strategy.close_all("X") strategy.entry("S", strategy.short) Accom_USDT:=Accom_USDT+(close*Long_BTC)-(Long_AvgPrice*Long_BTC) Long_AvgPrice:=0 Long_BTC:=0 Short_AvgPrice:=close Short_BTC:=PositionSize_BTC // ถ้าเปิด Short อยู่ if Short_BTC>0 // ตัดขึ้น ให้ปิด Short แล้วซื้อขึ้น Long if close>kama_1h and close[1]<=kama_1h[1] strategy.close_all("X") strategy.entry("L", strategy.long) Accom_USDT:=Accom_USDT+(Short_AvgPrice*Short_BTC)-(close*Short_BTC) Short_AvgPrice:=0 Short_BTC:=0 Long_AvgPrice:=close Long_BTC:=PositionSize_BTC // ---------------------------------------- // Strategy Take Profit // ---------------------------------------- // ถ้าเปิด Long อยู่ if Long_BTC>0 // คำนวณหาราคา Target price TargetPrice:=(PositionTarget_USDT+(Long_AvgPrice*Long_BTC)-(CurrentBalance_USDT+Accom_USDT))/Long_BTC // ถ้าราคามากกว่าราคาเป้าหมายก็ปิดทำกำไรได้เลย if close>=TargetPrice strategy.close_all("Take Profit") // เก็บกำไรเป็นทุน ไปเริ่มรอบใหม่ CurrentBalance_USDT:=CurrentBalance_USDT+(close*Long_BTC)-(Long_AvgPrice*Long_BTC) Long_BTC:=0 Long_AvgPrice:=0 Accom_USDT:=0 // ถ้าเปิด Short อยู่ if Short_BTC>0 // คำนวณหาราคา Target price TargetPrice:=((CurrentBalance_USDT+Accom_USDT)+(Short_AvgPrice*Short_BTC)-PositionTarget_USDT)/Short_BTC // ถ้าราคามากกว่าราคาเป้าหมายก็ปิดทำกำไรได้เลย if close<=TargetPrice strategy.close_all("Take Profit") // เก็บกำไรเป็นทุน ไปเริ่มรอบใหม่ CurrentBalance_USDT:=CurrentBalance_USDT+(Short_AvgPrice*Short_BTC)-(close*Short_BTC) Short_BTC:=0 Short_AvgPrice:=0 Accom_USDT:=0 // ---------------------------------------- // Draw // ---------------------------------------- // KAMA plot(kama_1h,"KAMA 1H", #f18a23 , linewidth = 2) // ---------------------------------------- // Alert // ---------------------------------------- // ---------------------------------------- // Info Table // ----------------------------------------