Strategi ini menggabungkan penunjuk WaveTrend dan penunjuk Chaikin Money Flow (CMF) untuk mengenal pasti arah trend dan mengikuti trend. Ia berjalan dalam jangka masa 15 minit, menggunakan WaveTrend untuk menentukan trend harga dan CMF untuk mengesahkan trend, dengan itu melaksanakan trend jangka pendek.
Indikator WaveTrend dapat mengenal pasti arah trend harga dengan berkesan. Ia terdiri daripada saluran pertengahan, saluran purata dan indeks saluran. Saluran pertengahan adalah purata bergerak eksponen harga, mencerminkan trend harga. Saluran purata adalah purata bergerak saluran pertengahan, digunakan untuk mencari saluran pertengahan. Indeks saluran mencerminkan tahap penyimpangan harga dari saluran pertengahan dan menghasilkan isyarat overbought / oversold.
Indikator CMF boleh menilai aliran masuk dan keluar dana dan mengesahkan trend. Indikator ini berdasarkan garis pengumpulan / pengedaran yang diselaraskan dengan jumlah, mencerminkan perbandingan daya beli dan jual. Nilai sekitar 0 menunjukkan keseimbangan antara aliran masuk dana dan aliran keluar. Di bawah 0 menunjukkan aliran keluar dana dan di atas 0 menunjukkan aliran masuk dana.
Strategi ini berjalan pada jangka masa 15 minit. Ia mula-mula menggunakan penunjuk WaveTrend untuk menentukan arah trend harga, kemudian menggunakan penunjuk CMF untuk mengesahkan, supaya mengikuti trend. Khususnya, apabila indeks saluran WaveTrend di bawah -60 dan CMF kurang dari -0.2, ia pergi lama. Apabila indeks saluran WaveTrend di atas 60 dan CMF lebih besar daripada 0.2, ia pergi pendek. Syarat keluar terutamanya berdasarkan penunjuk CMF - ia menutup kedudukan panjang apabila CMF lebih besar daripada 0.18, dan menutup kedudukan pendek apabila CMF kurang daripada -0.18.
Penyelesaian:
Strategi ini menggunakan WaveTrend untuk menentukan trend dan CMF untuk mengesahkan, untuk trend jangka pendek. Kelebihannya terletak pada kombinasi penunjuk yang munasabah dan trend yang berkesan, dengan jangka masa 15 minit menjadikannya sesuai untuk perdagangan jangka pendek. Tetapi terdapat risiko seperti isyarat yang tidak tepat dan tempoh pemegang yang terlalu pendek. Penambahbaikan masa depan seperti stop loss, pengoptimuman parameter dan penapisan isyarat yang lebih banyak dapat meningkatkan kestabilan dan keuntungan.
/*backtest start: 2023-11-08 00:00:00 end: 2023-11-15 00:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title = "CMF - WaveTrend", shorttitle = "CMF - WaveTrend", overlay = true, pyramiding = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, currency = currency.EUR) //Chaikin Money Flow len = input(20, minval=1, title="Length") mas = input(title="Aggregation", defval="SUM", options=["SUM", "EMA", "WMA"]) e = input(10.0, title="Volume Exponent (0-10 reduces & 10+ increases volume effect)") p = input(false, title="Show in Percentage") mvs = input(false, "Factor in Price (Money Volume)") src=input(hlc3, title="Source for price factor") trl = min(low,close[1]), trh = max(high,close[1]) // 'true range' fixes issues caused by gaps in price wv = pow(volume,e/10.0)*(mvs ? src : 1) ad = (trh==trl ? 0 : (2*close-(trh+trl))/tr(true))*wv cmf = mas=="SUM" ? sum(ad, len)/sum(wv, len) : mas=="EMA" ? ema(ad, len)/ema(wv, len) : mas=="WMA" ? wma(ad, len)/wma(wv, len) : na cmf_p = if p 50*cmf+50 else cmf b = p ? 50 : 0 //WaveTrend n1 = input(10, "Channel Length") n2 = input(21, "Average Length") obLevel1 = input(60, "Over Bought Level 1") obLevel2 = input(53, "Over Bought Level 2") osLevel1 = input(-60, "Over Sold Level 1") osLevel2 = input(-53, "Over Sold Level 2") ap = hlc3 esa = ema(ap, n1) d = ema(abs(ap - esa), n1) ci = (ap - esa) / (0.015 * d) tci = ema(ci, n2) wt1 = tci wt2 = sma(wt1,4) // longCondition = wt1 < -60 and cmf < - 0.20 if (longCondition) strategy.entry("My Long Entry Id", strategy.long) shortCondition = wt1 > 60 and cmf > 0.20 if (shortCondition) strategy.entry("My Short Entry Id", strategy.short) closeLongCondition = cmf_p > 0.18 ? true : false closeShortCondition = cmf_p < -0.18 ? true : false strategy.close("My Long Entry Id", when=(closeLongCondition == true)) strategy.close("My Short Entry Id", when=(closeShortCondition == true))