Les ressources ont été chargées... Je charge...

Stratégie étendue adaptative de la CCI pour le commerce des produits de base dans le secteur de la pêche de fond

Auteur:ChaoZhang est là., Date: 21-12-2023 à 14h30
Les étiquettes:

img

Résumé

Cette stratégie est basée sur l'indicateur du canal des produits de base (CCI) et utilise des niveaux d'entrée adaptatifs dynamiques pour déterminer le moment de l'inversion de la tendance, tout en utilisant un stop-loss pour verrouiller les bénéfices.

La logique de la stratégie

L'indicateur de base est l'ICC, utilisé pour repérer les zones de survente, ce qui laisse entrevoir des opportunités d'inversion de tendance. En outre, l'étendue des zones de survente CCI varie selon les différents instruments et environnements de marché. Par conséquent, cette stratégie adopte une approche "rétrospective", en examinant les niveaux les plus bas de l'ICC sur certaines périodes de rétrospective, pour définir dynamiquement le niveau d'entrée d'achat de l'ICC. Si l'ICC le plus bas au cours des 40 derniers jours est supérieur à -90, alors -90 devient le nouveau seuil de zone de survente, et ainsi de suite. Cette conception adaptative permet aux niveaux d'entrée de s'adapter dynamiquement à différentes conditions de marché, en poursuivant des entrées plus conservatrices pendant les fortes tendances à la baisse tandis que des entrées plus agressives pendant les marchés à plage.

Plus précisément, le niveau de signal d'achat CCI par défaut est -145. La stratégie vérifie ensuite les lectures les plus basses du CCI au cours des 40 derniers jours, 50 jours, etc. Si le CCI le plus bas est au-dessus du niveau suivant comme -90, alors -90 devient le nouveau niveau d'entrée. Et ainsi de suite, le niveau d'entrée peut basculer entre -145 / -90 / -70 / -50 / -4 / 0 / +25 / +50 / +70 dynamiquement. Un signal d'entrée long est déclenché lorsque le CCI tombe en dessous du niveau correspondant.

En outre, un stop loss de trailing est utilisé pour verrouiller les bénéfices, le niveau de stop se déplaçant vers le haut avec le prix.

Analyse des avantages

  • Une approche claire et fiable de l'utilisation de l'ICC pour détecter les zones de survente
  • La conception adaptative des niveaux d'entrée permet à la stratégie de s'adapter automatiquement à différents environnements de marché
  • Le suivi du stop loss aide à verrouiller efficacement les bénéfices

Comparé aux niveaux d'entrée fixes, une telle conception dynamique permet un calendrier d'entrée optimisé. La poursuite d'entrées plus conservatrices pendant les fortes tendances à la baisse réduit le risque, tandis que des entrées plus faibles pendant les marchés à plage permettent de saisir plus d'opportunités. Cela améliore l'adaptabilité de la stratégie.

L'indicateur CCI lui-même est un indicateur clair et fiable pour identifier les niveaux de surachat/survente.

Analyse des risques

  • Les jugements peuvent échouer lorsque le prix échappe rapidement aux lectures du CCI.
  • L'ajustement dynamique des niveaux d'entrée ne peut pas non plus correspondre parfaitement aux changements de l'environnement du marché.
  • La volatilité des marchés des matières premières est élevée et un mauvais arrêt peut entraîner des pertes énormes.

La logique de repérage des points d'inversion de tendance présente des attributs de retard. Le timing de l'entrée peut ne pas être précis lors de pics ou de chutes soudains de prix. De plus, le mécanisme d'adaptation peut ne pas s'adapter parfaitement à l'environnement actuel du marché, conduisant à des entrées non optimales. Enfin, les fluctuations élevées des marchés des matières premières peuvent causer d'énormes pertes si les paramètres de stop loss ne sont pas correctement définis.

Directions d'amélioration

  • Optimiser les paramètres et les périodes de lissage des CCI, tester l'efficacité des différentes longueurs de CCI
  • Tester plus de types de niveaux d'entrée, trouver de meilleures valeurs par défaut ou des conceptions adaptatives
  • Tester différents paramètres de stop loss, augmenter correctement la plage de stop loss pour correspondre aux attributs de forte volatilité des marchés des matières premières

La mise en place d'un système de gestion de la rentabilité et de la rentabilité est un élément essentiel de la stratégie.

Résumé

Cette stratégie combine la logique de l'utilisation de l'ICC pour repérer les zones de surachat/survente et la conception dynamique adaptative de niveau d'entrée pour capturer les inversions de tendance. Par rapport aux paramètres fixes, les niveaux d'entrée dynamiques améliorent considérablement l'adaptabilité. Ce modèle de capture d'inversion d'entrée avec stop loss peut saisir les opportunités avec une forte dynamique et réduire les pertes dans le temps. Avec des paramètres correctement configurés, cette stratégie démontre la viabilité et la robustesse. D'autres améliorations peuvent être apportées en optimisant constamment les paramètres de l'ICC et les règles de niveau d'entrée pour atteindre une plus grande stabilité et rentabilité.


/*backtest
start: 2023-11-20 00:00:00
end: 2023-12-20 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Extended Adaptive CCI Entry Strategy for Commodities", shorttitle="Ext_Adaptive_CCI_Entry_Com", overlay=true)

// Inputs
cciLength = input(20, title="CCI Period")
defaultCCIEntryOversold = input(-145, title="Default CCI Entry Oversold Level")
adaptiveCCIEntryLevel90 = input(-90, title="Adaptive CCI Entry Level for 40 Days")
adaptiveCCIEntryLevel70_50Days = input(-70, title="Adaptive CCI Entry Level for 50 Days")
adaptiveCCIEntryLevel50 = input(-50, title="Adaptive CCI Entry Level for 60 Days")
adaptiveCCIEntryLevel4 = input(-4, title="Adaptive CCI Entry Level for 90 Days")
adaptiveCCIEntryLevel0 = input(0, title="Adaptive CCI Entry Level for 120 Days")
adaptiveCCIEntryLevel25 = input(25, title="Adaptive CCI Entry Level for 140 Days")
adaptiveCCIEntryLevel50_160Days = input(50, title="Adaptive CCI Entry Level for 160 Days")
adaptiveCCIEntryLevel70_180Days = input(70, title="Adaptive CCI Entry Level for 180 Days")
lookback40 = input(40, title="Lookback Period for -90 Level")
lookback50 = input(50, title="Lookback Period for -70 Level")
lookback60 = input(60, title="Lookback Period for -50 Level")
lookback90 = input(90, title="Lookback Period for -4 Level")
lookback120 = input(120, title="Lookback Period for 0 Level")
lookback140 = input(140, title="Lookback Period for +25 Level")
lookback160 = input(160, title="Lookback Period for +50 Level")
lookback180 = input(180, title="Lookback Period for +70 Level")

// Indicator Calculation
cci = ta.cci(close, cciLength)

// Determine adaptive entry level based on lookback periods
var float entryLevel = defaultCCIEntryOversold // Initialize with the default level
if ta.lowest(cci, lookback40) > adaptiveCCIEntryLevel90
    entryLevel := adaptiveCCIEntryLevel90
if ta.lowest(cci, lookback50) > adaptiveCCIEntryLevel70_50Days
    entryLevel := adaptiveCCIEntryLevel70_50Days
if ta.lowest(cci, lookback60) > adaptiveCCIEntryLevel50
    entryLevel := adaptiveCCIEntryLevel50
if ta.lowest(cci, lookback90) > adaptiveCCIEntryLevel4
    entryLevel := adaptiveCCIEntryLevel4
if ta.lowest(cci, lookback120) > adaptiveCCIEntryLevel0
    entryLevel := adaptiveCCIEntryLevel0
if ta.lowest(cci, lookback140) > adaptiveCCIEntryLevel25
    entryLevel := adaptiveCCIEntryLevel25
if ta.lowest(cci, lookback160) > adaptiveCCIEntryLevel50_160Days
    entryLevel := adaptiveCCIEntryLevel50_160Days
if ta.lowest(cci, lookback180) > adaptiveCCIEntryLevel70_180Days
    entryLevel := adaptiveCCIEntryLevel70_180Days

// Entry Condition
longCondition = cci < entryLevel

// Entry and Exit
if (longCondition)
    strategy.entry("Long", strategy.long, qty=1)
    alert("Long entry executed at " + str.tostring(close), alert.freq_once_per_bar)

trailOffset = input(10.0, title="Trailing Stop Offset in USD")
strategy.exit("Trailing Stop", "Long", trail_offset = trailOffset, trail_price = close)
if (close < entryLevel - trailOffset)
    alert("Long position closed at " + str.tostring(close), alert.freq_once_per_bar)

// Plotting
plot(series=cci, color=color.purple, title="CCI")
hline(price=defaultCCIEntryOversold, color=color.red, title="Default CCI Entry Oversold Level")
hline(price=adaptiveCCIEntryLevel90, color=color.orange, title="CCI -90 Level (40 Days)")
hline(price=adaptiveCCIEntryLevel70_50Days, color=color.yellow, title="CCI -70 Level (50 Days)")
hline(price=adaptiveCCIEntryLevel50, color=color.green, title="CCI -50 Level (60 Days)")
hline(price=adaptiveCCIEntryLevel4, color=color.blue, title="CCI -4 Level (90 Days)")
hline(price=adaptiveCCIEntryLevel0, color=color.purple, title="CCI 0 Level (120 Days)")
hline(price=adaptiveCCIEntryLevel25, color=color.aqua, title="CCI +25 Level (140 Days)")
hline(price=adaptiveCCIEntryLevel50_160Days, color=color.black, title="CCI +50 Level (160 Days)")
hline(price=adaptiveCCIEntryLevel70_180Days, color=color.gray, title="CCI +70 Level (180 Days)")


Plus de