
Strategi ini membentuk sinyal perdagangan dengan menggabungkan indikator teknis klasik CCI dan indeks ganda VCI, MCI yang dikembangkan sendiri. Strategi ini merupakan strategi perdagangan kuantitatif yang khas. Ini membentuk sinyal perdagangan dengan mengidentifikasi tren perubahan Volume dan Harga, menilai arah dan intensitas perdagangan utama saat ini.
Strategi ini membentuk sinyal perdagangan melalui perbandingan indeks ganda cc, mempertimbangkan beberapa faktor seperti harga dan volume perdagangan, untuk menilai kekuatan jual beli di pasar, merupakan strategi perdagangan kuantitatif yang khas dan praktis. Namun, masih perlu digunakan bersama dengan alat bantu lainnya untuk memaksimalkan efektivitas strategi.
/*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")