
La stratégie est basée sur l’indicateur CCI et a été conçue comme un système de trading automatique flexible qui suit les tendances. Elle peut émettre des signaux de négociation en fonction de l’axe 0 de l’indicateur CCI. Elle peut également émettre des signaux par des bandes de canaux ascendantes et descendantes personnalisées et des bandes de canaux croisées.
Le croisement de l’axe 0 de l’indicateur CCI est utilisé pour déterminer la tendance du marché. Le CCI sur l’axe 0 est un signal positif et le CCI sur l’axe 0 est un signal négatif.
En personnalisant le CCI en haut et en bas de la bande, lorsque le CCI en haut de la bande est un signal positif, le CCI en bas de la bande est un signal négatif. Le croisement de la bande est un signal d’arrêt.
Il est possible d’établir des positions de plafonnement pour les périodes non négociées. Il est possible d’établir des périodes de négociation quotidiennes.
Il est possible de régler le stop loss et le stop loss ratio.
Alerte sur les transactions personnalisables ouvrant une position de clôture.
Les stratégies sont entièrement personnalisables et flexibles. Les stratégies d’optimisation, telles que les paramètres CCI, les paramètres de bande passante et les paramètres d’arrêt-défaut, peuvent être ajustées.
L’indicateur CCI est utilisé pour déterminer les tendances du marché, il est sensible aux changements de prix et peut rapidement capturer les points de basculement du marché.
Les bandes de passage personnalisées peuvent être ajustées en fonction des paramètres des différents marchés, ce qui permet de contrôler efficacement les risques liés à la perte croisée des bandes de passage.
Prise en charge d’une multitude de réglages de temps de négociation, permettant d’ajuster les paramètres de stratégie en fonction des différentes périodes de temps, en utilisant les caractéristiques des différentes périodes de temps pour obtenir des gains supplémentaires.
Prise en charge d’un paramètre de stop-loss fixe, permettant de prévoir le ratio profit/perte et de contrôler efficacement le risque de chaque transaction.
Les paramètres sont entièrement personnalisables et permettent d’optimiser les stratégies en fonction des variétés et des conditions du marché.
L’indicateur CCI est sensible aux variations de prix et peut produire des faux signaux partiels, et doit être vérifié en combinaison avec un indicateur à plus long cycle.
Le ratio de stop loss fixe ne peut pas être ajusté en fonction des variations du marché et doit être réglé de manière appropriée.
Les heures de négociation fixes peuvent manquer les opportunités d’ajustement des courts-circuits du marché, en choisissant de manière appropriée les périodes de temps qui ont une valeur de négociation.
Les paramètres doivent être optimisés fréquemment, car une mauvaise optimisation peut entraîner des transactions excessives ou des opportunités manquées.
Il est nécessaire de combiner plusieurs facteurs, tels que la situation de l’industrie et l’environnement macroéconomique, afin d’éviter les risques en s’appuyant uniquement sur l’optimisation des paramètres.
La vérification est effectuée en combinaison avec des indicateurs à longue et courte périodes pour éviter que le CCI ne génère de faux signaux.
L’ATR est utilisé pour définir un stop-loss dynamique.
Tester l’efficacité des paramètres sur différentes périodes de temps, en choisissant les périodes les plus efficaces.
Optimiser les paramètres CCI, les paramètres de bande passante et s’adapter aux changements du marché.
Il faut tenir compte de plusieurs facteurs, dont la tendance, la volatilité et le volume des transactions.
Choisissez une période appropriée en fonction des caractéristiques de la variété de transaction.
Envisagez d’intégrer des algorithmes d’apprentissage automatique pour optimiser automatiquement votre stratégie.
Cette stratégie est un système de trading de suivi de tendance très flexible et personnalisable. La stratégie présente plusieurs avantages, tels que l’utilisation de CCI pour juger des tendances, le contrôle des risques de la bande de canaux personnalisés, la définition de stop-loss fixes et le choix de la période de négociation. Il convient également de prêter attention aux problèmes tels que la susceptibilité de CCI à produire de faux signaux, l’impossibilité d’ajuster dynamiquement le taux de stop-loss fixe.
/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-31 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © REV0LUTI0N
//@version=4
strategy(title="CCI Strategy", overlay=true, initial_capital = 10000, default_qty_value = 10000, default_qty_type = strategy.cash)
//CCI Code
length = input(20, minval=1, title="CCI Length")
src = input(close, title="Source")
ma = sma(src, length)
cci = (src - ma) / (0.015 * dev(src, length))
// Strategy Backtesting
startDate = input(timestamp("2099-10-01T00:00:00"), type = input.time, title='Backtesting Start Date')
finishDate = input(timestamp("9999-12-31T00:00:00"), type = input.time, title='Backtesting End Date')
time_cond = true
//Time Restriction Settings
startendtime = input("", title='Time Frame To Enter Trades')
enableclose = input(false, title='Enable Close Trade At End Of Time Frame')
timetobuy = true
timetoclose = true
//Strategy Settings
//Strategy Settings - Enable Check Boxes
enableentry = input(true, title="Enter First Trade ASAP")
enableconfirmation = input(false, title="Wait For Cross To Enter First Trade")
enablezero =input(true, title="Use CCI Simple Cross Line For Entries & Exits")
enablebands = input(false, title="Use Upper & Lower Bands For Entries & Exits")
//Strategy Settings - Band Sources
ccisource = input(0, title="CCI Simple Cross")
upperbandsource =input(100, title="CCI Enter Long Band")
upperbandexitsource =input(100, title="CCI Exit Long Band")
lowerbandsource =input(-100, title="CCI Enter Short Band")
lowerbandexitsource =input(-100, title="CCI Exit Short Band")
//Strategy Settings - Crosses
simplecrossup = crossover(cci, ccisource)
simplecrossdown = crossunder(cci, ccisource)
uppercrossup = crossover(cci, upperbandsource)
lowercrossdown = crossunder(cci, lowerbandsource)
uppercrossdown = crossunder(cci, upperbandexitsource)
lowercrossup = crossover(cci, lowerbandexitsource)
upperstop = crossunder(cci, upperbandsource)
lowerstop = crossover(cci, lowerbandsource)
// Stop Loss & Take Profit % Based
enablesl = input(false, title='Enable Stop Loss')
enabletp = input(false, title='Enable Take Profit')
stopTick = input(5.0, title='Stop Loss %', type=input.float, step=0.1) / 100
takeTick = input(10.0, title='Take Profit %', type=input.float, step=0.1) / 100
longStop = strategy.position_avg_price * (1 - stopTick)
shortStop = strategy.position_avg_price * (1 + stopTick)
shortTake = strategy.position_avg_price * (1 - takeTick)
longTake = strategy.position_avg_price * (1 + takeTick)
plot(strategy.position_size > 0 and enablesl ? longStop : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Long Fixed SL")
plot(strategy.position_size < 0 and enablesl ? shortStop : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Short Fixed SL")
plot(strategy.position_size > 0 and enabletp ? longTake : na, style=plot.style_linebr, color=color.green, linewidth=1, title="Long Take Profit")
plot(strategy.position_size < 0 and enabletp ? shortTake : na, style=plot.style_linebr, color=color.green, linewidth=1, title="Short Take Profit")
// Alert messages
message_enterlong = input("", title="Long Entry message")
message_entershort = input("", title="Short Entry message")
message_closelong = input("", title="Close Long message")
message_closeshort = input("", title="Close Short message")
//Strategy Execution
//Strategy Execution - Simple Line Cross
if (cci > ccisource and enablezero and enableentry and time_cond and timetobuy)
strategy.entry("Long", strategy.long, alert_message = message_enterlong)
if (cci < ccisource and enablezero and enableentry and time_cond and timetobuy)
strategy.entry("Short", strategy.short, alert_message = message_entershort)
if (simplecrossup and enablezero and enableconfirmation and time_cond and timetobuy)
strategy.entry("Long", strategy.long, alert_message = message_enterlong)
if (simplecrossdown and enablezero and enableconfirmation and time_cond and timetobuy)
strategy.entry("Short", strategy.short, alert_message = message_entershort)
//Strategy Execution - Upper and Lower Band Entry
if (uppercrossup and enablebands and time_cond and timetobuy)
strategy.entry("Long", strategy.long, alert_message = message_enterlong)
if (lowercrossdown and enablebands and time_cond and timetobuy)
strategy.entry("Short", strategy.short, alert_message = message_entershort)
//Strategy Execution - Upper and Lower Band Exit
if strategy.position_size > 0 and uppercrossdown and enablebands and time_cond and timetobuy
strategy.close_all(alert_message = message_closelong)
if strategy.position_size < 0 and lowercrossup and enablebands and time_cond and timetobuy
strategy.close_all(alert_message = message_closeshort)
//Strategy Execution - Upper and Lower Band Stops
if strategy.position_size > 0 and upperstop and enablebands and time_cond and timetobuy
strategy.close_all(alert_message = message_closelong)
if strategy.position_size < 0 and lowerstop and enablebands and time_cond and timetobuy
strategy.close_all(alert_message = message_closeshort)
//Strategy Execution - Close Trade At End Of Time Frame
if strategy.position_size > 0 and timetoclose and enableclose and time_cond
strategy.close_all(alert_message = message_closelong)
if strategy.position_size < 0 and timetoclose and enableclose and time_cond
strategy.close_all(alert_message = message_closeshort)
//Strategy Execution - Stop Loss and Take Profit
if strategy.position_size > 0 and enablesl and time_cond
strategy.exit(id="Close Long", stop=longStop, limit=longTake, alert_message = message_closelong)
if strategy.position_size < 0 and enablesl and time_cond
strategy.exit(id="Close Short", stop=shortStop, limit=shortTake, alert_message = message_closeshort)
if strategy.position_size > 0 and enabletp and time_cond
strategy.exit(id="Close Long", stop=longStop, limit=longTake, alert_message = message_closelong)
if strategy.position_size < 0 and enabletp and time_cond
strategy.exit(id="Close Short", stop=shortStop, limit=shortTake, alert_message = message_closeshort)