
La stratégie CCI+ est une stratégie de négociation quantitative qui utilise à la fois l’indicateur de progression ((CCI) et le signal de croisement bi-équilibré. La stratégie consiste à attendre que le prix revienne près de la ligne rapide et à acheter lorsque l’indicateur CCI est en survente, et à vendre lorsque l’indicateur CCI est en survente lorsque le prix rebondit près de la ligne rapide et à la fois lorsque l’indicateur CCI est en survente.
Le CCI+ est une stratégie de trading quantitative qui combine les avantages du suivi de la tendance et de l’entrée en position inverse. En capturant la direction de la tendance et en utilisant l’indicateur CCI pour délimiter les zones de survente et de survente, tout en attendant que les prix se retirent et rebondissent pour obtenir un meilleur prix d’entrée, il est possible d’améliorer le potentiel de profit et le rapport bénéfice-risque de la stratégie.
/*backtest
start: 2024-04-01 00:00:00
end: 2024-04-30 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © tradedots
//@version=5
strategy("CCI + MA Crossover Pullback Buy Strategy [TradeDots]", overlay=true)
ma(source, length, type) =>
type == "SMA" ? ta.sma(source[1], length) :
type == "EMA" ? ta.ema(source[1], length) :
type == "SMMA (RMA)" ? ta.rma(source[1], length) :
type == "WMA" ? ta.wma(source[1], length) :
type == "VWMA" ? ta.vwma(source[1], length) :
na
//CCI settings
cci_coloring = input.bool(true, "CCI Background Color", group = "Commodity channel index")
cci_length = input.int(20,"CCI Length", group = "Commodity channel index")
cci_ma_type = input.string("EMA","CCI MA Type", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group = "Commodity channel index")
cci_soruce = input(hlc3, "CCI Source", group = "Commodity channel index")
cci_threshold = input.int(100, "CCI Threshold", group = "Commodity channel index")
cci_ma = ma(cci_soruce, cci_length, cci_ma_type)
cci = (cci_soruce - cci_ma) / (0.015 * ta.dev(cci_soruce, cci_length))
bgcolor(cci > cci_threshold and cci_coloring ? color.new(#f9396a, 80) : cci < -cci_threshold and cci_coloring? color.new(#9cff87, 80) : na, title = "CCI Overbought / Oversold")
//ma crossover settings
input_crossover_labels = input.bool(true, "Show Crossover Labels", group="Moving average")
fastma_type = input.string("EMA","", inline="fastma", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="Moving average")
fastma_source = input(close, "", inline="fastma", group="Moving average")
fastma_length = input.int(10, "", inline="fastma", minval=1,group="Moving average")
fastma_color = input(#e2fdff, "", inline="fastma",group="Moving average")
fastma = ma(fastma_source, fastma_length, fastma_type)
fastmaPlot = plot(fastma, color = #b7e4c7, linewidth = 2, title = "Fast MA")
slowma_type = input.string("EMA","", inline="slowma", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="Moving average")
slowma_source = input(close, "", inline="slowma", group="Moving average")
slowma_length = input.int(30, "", inline="slowma", minval=1,group="Moving average")
slowma_color = input(#e2fdff, "", inline="slowma",group="Moving average")
slowma = ma(slowma_source, slowma_length, slowma_type)
slowmaPlot = plot(slowma, color = #2d6a4f, linewidth = 2, title = "Slow MA")
bullish_crossover = ta.crossover(fastma, slowma)
bearish_crossover = ta.crossunder(fastma, slowma)
// // strategy
// if bullish_crossover and input_crossover_labels
// line.new(bar_index, close, bar_index, close * 1.01, extend = extend.both, color = color.new(#9cff87, 30), style = line.style_dotted, width = 3)
// label.new(bar_index,low, "Bullish Crossover", style = label.style_label_up, color = #9cff87)
// else if bearish_crossover and input_crossover_labels
// line.new(bar_index, close, bar_index, close * 1.01, extend = extend.both, color = color.new(#f9396a, 30), style = line.style_dotted, width = 3)
// label.new(bar_index, high, "Bearish Crossover", style = label.style_label_down, color = #f9396a, textcolor = color.white)
if fastma > slowma and close[1] < fastma and close > open and cci < -cci_threshold
strategy.entry("Long", strategy.long)
// if strategy.opentrades == 0 or strategy.opentrades.size(strategy.opentrades -1) < 0
// label.new(bar_index,low, "🟢 Long", style = label.style_label_up, color = #9cff87)
if fastma < slowma and close[1] > fastma and close < open and cci > cci_threshold
strategy.entry("Short", strategy.short)
// if strategy.opentrades == 0 or strategy.opentrades.size(strategy.opentrades -1) > 0
// label.new(bar_index, high, "🔴 Short", style = label.style_label_down, color = #f9396a, textcolor = color.white)