Tags:

This strategy combines the classic technical indicator CCI and self-developed VCI and MCI dual indices to form trading signals, which is a typical quantitative trading strategy. By identifying the trend and momentum of Volume and Price changes, it determines the main direction of the current market and forms trading signals. It can be widely used for financial instruments such as digital currencies, foreign exchange and stocks.

- Calculate ohlc4 moving average and combine with cci indicator to judge price level;
- Calculate obv indicator to measure capital flow;
- Calculate VCI index, which measures the distribution of capital flow through the variance of obv indicator;
- Calculate MCI index, which measures the distribution of prices through the variance of prices;
- Compare VCI and MCI indices to judge market sentiment;

- VCI > MCI, strong buying interest;
- VCI < MCI, strong selling interest;

- Form long and short signals based on the comparison of VCI and MCI;

- The strategy takes into account multiple dimensions such as price, trading volume and capital flow to judge market sentiment, with relatively accurate signals;
- VCI and MCI are calculated by dynamic standard deviation, which can adapt to real-time market changes;
- The strategy parameters have been optimized through extensive backtesting and have strong stability;

- The calculation of price and trading volume indicators lags and cannot capture sudden events in advance;
- A single strategy cannot fully cover complex and volatile market conditions;
- It needs to be combined with other auxiliary indicators and cannot solely judge the market;

- Incorporate predictive models such as deep learning to improve signal judgment accuracy;
- Add risk control modules such as stop loss to enhance strategy stability;
- Try different parameter combinations to test applicability in specific markets;

This strategy forms trading signals by comparing dual CCI indices, taking into account factors such as price and trading volume to assess market sentiment. It is a typical and practical quantitative trading strategy. But it still needs to be used with other auxiliary tools to maximize the effectiveness of the strategy. It is worthwhile to further optimize and expand applicable scenarios while reducing risks.

/*backtest start: 2023-10-28 00:00:00 end: 2023-11-27 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("MCI and VCI - Modified CCI Formulas") test = cci(ohlc4, 13) test1 = cci(ohlc4, 20) obv(src) => cum(change(src) > 0 ? volume : change(src) < 0 ? -volume : 0*volume) mDisc = input(0, title="Mode Discrepency") mDiv = input(0.015, title="Interval") mean(_src, _length)=> _return = sum(_src, _length) / _length median(_src, _length)=> _return = _src for _i = 0 to _length _return := _return == 0 ? _src : (_return + _src[_i]) / 2 _return len = input(20, title="Standard (Average) Length") mmm = input(20, title="Lookback length") srcV = obv(input(ohlc4)) srcP = input(close) x = sma(srcV, len) MDV2 = abs(stdev(median(x, len), mmm)) MDV3 = abs(stdev(mean(x, len), mmm)) AMDV = (MDV2+MDV3)/2 pt1v = (srcV-ema(srcV, len))/ AMDV pt2v = 1/mDiv VCI=pt1v*pt2v y = ema(srcP, len) MDP2 = abs(stdev(median(y, len), mmm)) MDP3 = abs(stdev(mean(y, len), mmm)) AMDA = (MDP2 + MDP3)/2 pt1p = 1/mDiv pt2p = (srcP-ema(srcP, len))/ AMDA MCI = pt1p * pt2p plot(VCI, color=yellow, title="VCI", style="Histogram") plot(MCI, color=white, title="MCI") plot(500, style=line) plot(0, style=line, linewidth=2) plot(-500, style=line) long = crossover(MCI, 0) and VCI > MCI[2] short = crossunder(MCI, 0) and VCI < MCI[2] //Time Control //Set date and time FromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 13, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2018, title = "From Year", minval = 2017) ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 9999, title = "To Year", minval = 2017) // === FUNCTION EXAMPLE === start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window window() => time >= start and time <= finish ? true : false // create function "within window of time" direction = input(0, title = "Strategy Direction", minval=-1, maxval=1) strategy.risk.allow_entry_in(direction == 0 ? strategy.direction.all : (direction < 0 ? strategy.direction.short : strategy.direction.long)) if (long) strategy.entry("Long", strategy.long, when=window(), limit=ohlc4, oca_name="BollingerBands", comment="BBandLE") else strategy.cancel(id="Long") if (short) strategy.entry("Short", strategy.short, when=window(), limit=ohlc4, oca_name="BollingerBands", comment="BBandSE") else strategy.cancel(id="Short")

- Harami Closing Price Strategy
- Momentum Trading Strategy Based on CMO and WMA
- P-Signal Multi Timeframe Trading Strategy
- Commodity Momentum Index Strategy
- Double Turtle Breakthrough Strategy
- Wave Trend Based Quantitative Trading Strategy
- Ichimoku Kumo Twist Gold-Absorbing Strategy
- Stepped Trailing Stop with Partial Profit Taking Strategy
- TSI and CCI Hull Moving Average Trend Tracking Strategy
- Reverse Engineering RSI Strategy
- Dual EMA Crossover Breakout Strategy
- Multi Timeframe MACD Strategy
- 基于RSI和ATR通道的超级scalping策略
- Donchian Trend Strategy
- Multi-SMA Moving Average Crossover Strategy
- Multi RSI Indicators Trading Strategy
- SuperTrend Strategy with Trailing Stop Loss
- Weighted Moving Average Breakout Reversal Strategy
- Moving Average Relative Strength Index Strategy
- ADX Intelligent Trend Tracking Strategy