Sumber dimuat naik... memuat...

Strategi ini menjana isyarat perdagangan berdasarkan aliran wang Chaikin (CMF)

Penulis:ChaoZhang, Tarikh: 2024-06-07 17:05:04
Tag:

PEMBANGUNAN CMF, EMA, SMA

Ringkasan

Strategi ini menjana isyarat dagangan berdasarkan penunjuk Chaikin Money Flow (CMF) dan Exponential Moving Averages (EMA). Ia mula-mula mengira nilai CMF untuk tempoh tertentu, kemudian menggunakan dua EMA dengan tempoh yang berbeza untuk meluruskan data CMF. Isyarat beli dihasilkan apabila EMA cepat melintasi di atas EMA perlahan, sementara isyarat jual dihasilkan apabila EMA cepat melintasi di bawah EMA perlahan. Strategi ini juga menetapkan syarat berhenti kerugian dan mengambil keuntungan untuk menguruskan risiko dan mengunci keuntungan.

Prinsip Strategi

  1. Mengira nilai aliran wang Chaikin (CMF) untuk tempoh tertentu. CMF menggabungkan kedua-dua data harga dan jumlah untuk mengukur kekuatan aliran wang masuk dan keluar dari pasaran.
  2. Menggunakan dua purata bergerak eksponen (EMA) dengan tempoh yang berbeza untuk meluruskan data CMF. EMA cepat menangkap trend jangka pendek, manakala EMA perlahan mengenal pasti trend jangka panjang.
  3. Menghasilkan isyarat beli apabila EMA pantas melintasi di atas EMA perlahan, dan isyarat jual apabila EMA pantas melintasi di bawah EMA perlahan.
  4. Selepas isyarat perdagangan dihasilkan, strategi menunggu pengesahan dari dua lilin untuk mengelakkan isyarat palsu.
  5. Tetapkan syarat stop-loss dan take-profit. Harga stop-loss adalah peratusan tertentu daripada harga masuk, manakala harga take-profit adalah peratusan tertentu daripada harga masuk.

Analisis Kelebihan

  1. Menggabungkan data harga dan jumlah: Penunjuk CMF secara komprehensif mempertimbangkan kedua-dua data harga dan jumlah, memberikan pantulan aliran wang pasaran yang lebih boleh dipercayai dan menghasilkan isyarat perdagangan yang lebih tepat.
  2. Pengesanan trend: Dengan menggunakan EMA dengan tempoh yang berbeza, strategi dapat menangkap kedua-dua trend jangka pendek dan jangka panjang, menyesuaikan diri dengan pelbagai persekitaran pasaran.
  3. Pengesahan isyarat: Selepas isyarat dagangan dihasilkan, strategi menunggu pengesahan dari dua lilin, dengan berkesan menapis beberapa isyarat palsu dan meningkatkan kadar kejayaan dagangan.
  4. Pengurusan risiko: Strategi ini menggabungkan syarat stop-loss dan mengambil keuntungan, yang berkesan mengawal risiko perdagangan individu sambil memastikan keuntungan yang diperoleh.

Analisis Risiko

  1. Pengoptimuman parameter: Prestasi strategi bergantung pada pemilihan tempoh CMF dan EMA. Persekitaran pasaran yang berbeza mungkin memerlukan tetapan parameter yang berbeza, memerlukan pengoptimuman parameter berkala.
  2. Pengiktirafan trend: Dalam pasaran yang bergelora atau pada titik perubahan trend, strategi boleh menghasilkan lebih banyak isyarat palsu, yang membawa kepada perdagangan yang kerap dan kerugian modal.
  3. Kos slippage dan perdagangan: Perdagangan yang kerap boleh meningkatkan kos slippage dan perdagangan, yang mempengaruhi keuntungan keseluruhan strategi.

Arahan pengoptimuman

  1. Penyesuaian parameter dinamik: Sesuaikan parameter tempoh CMF dan EMA secara dinamik berdasarkan perubahan keadaan pasaran untuk menyesuaikan diri dengan keadaan pasaran yang berbeza.
  2. Menggabungkan penunjuk lain: Gabungkan penunjuk teknikal lain, seperti Indeks Kekuatan Relatif (RSI) dan Julat Benar Purata (ATR), untuk meningkatkan ketepatan pengenalan trend dan kebolehpercayaan isyarat.
  3. Mengoptimumkan stop-loss dan mengambil keuntungan: Sesuaikan peratusan stop-loss dan mengambil keuntungan secara dinamik berdasarkan turun naik pasaran dan keutamaan risiko untuk menguruskan risiko dengan lebih baik dan mengunci keuntungan.
  4. Melaksanakan saiz kedudukan: Sesuaikan saiz kedudukan secara dinamik berdasarkan trend pasaran dan kekuatan isyarat. Meningkatkan saiz kedudukan apabila trend jelas dan mengurangkan saiz kedudukan semasa tempoh yang tidak pasti.

Ringkasan

Strategi ini menggunakan penunjuk aliran wang Chaikin dan purata bergerak eksponen, menggabungkan data harga dan jumlah dengan tumpuan utama pada pengesanan trend. Ia juga menetapkan keadaan stop-loss dan mengambil keuntungan untuk menguruskan risiko. Kelebihan strategi terletak pada keupayaannya untuk mempertimbangkan pelbagai faktor secara komprehensif dan menangkap trend pada skala masa yang berbeza. Walau bagaimanapun, masih ada ruang untuk pengoptimuman dalam tetapan parameter dan pengenalan trend.


/*backtest
start: 2023-06-01 00:00:00
end: 2024-06-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("CASHISKING", overlay=false)

// Kullanıcı girişleri ile parametreler
cmfPeriod = input.int(200, "CMF Periyodu", minval=1)
emaFastPeriod = input.int(80, "Hızlı EMA Periyodu", minval=1)
emaSlowPeriod = input.int(160, "Yavaş EMA Periyodu", minval=1)
stopLossPercent = input.float(3, "Stop Loss Yüzdesi", minval=0.1) / 100
stopGainPercent = input.float(5, "Stop Gain Yüzdesi", minval=0.1) / 100

// CMF hesaplama fonksiyonu
cmfFunc(close, high, low, volume, length) =>
    clv = ((close - low) - (high - close)) / (high - low)
    valid = not na(clv) and not na(volume) and (high != low)
    clv_volume = valid ? clv * volume : na
    sum_clv_volume = ta.sma(clv_volume, length)
    sum_volume = ta.sma(volume, length)
    cmf = sum_volume != 0 ? sum_clv_volume / sum_volume : na
    cmf

// CMF değerlerini hesaplama
cmf = cmfFunc(close, high, low, volume, cmfPeriod)

// EMA hesaplamaları
emaFast = ta.ema(cmf, emaFastPeriod)
emaSlow = ta.ema(cmf, emaSlowPeriod)

// Göstergeleri çiz
plot(emaFast, color=color.blue, title="EMA 23")
plot(emaSlow, color=color.orange, title="EMA 50")

// Alım ve Satım Sinyalleri
crossOverHappened = ta.crossover(emaFast, emaSlow)
crossUnderHappened = ta.crossunder(emaFast, emaSlow)

// Kesişme sonrası bekleme sayacı
var int crossOverCount = na
var int crossUnderCount = na

if (crossOverHappened)
    crossOverCount := 0

if (crossUnderHappened)
    crossUnderCount := 0

if (not na(crossOverCount))
    crossOverCount += 1

if (not na(crossUnderCount))
    crossUnderCount += 1

// Alım ve Satım işlemleri
if (crossOverCount == 2)
    strategy.entry("Buy", strategy.long)
    crossOverCount := na  // Sayaç sıfırlanır

if (crossUnderCount == 2)
    strategy.entry("Sell", strategy.short)
    crossUnderCount := na  // Sayaç sıfırlanır

// Stop Loss ve Stop Gain hesaplama
longStopPrice = strategy.position_avg_price * (1 - stopLossPercent)
shortStopPrice = strategy.position_avg_price * (1 + stopLossPercent)
longTakeProfitPrice = strategy.position_avg_price * (1 + stopGainPercent)
shortTakeProfitPrice = strategy.position_avg_price * (1 - stopGainPercent)

// Stop Loss ve Stop Gain'i uygula
if (strategy.position_size > 0 and strategy.position_avg_price > 0)
    strategy.exit("Stop", "Buy", stop=longStopPrice, limit=longTakeProfitPrice)
else if (strategy.position_size < 0 and strategy.position_avg_price > 0)
    strategy.exit("Stop", "Sell", stop=shortStopPrice, limit=shortTakeProfitPrice)


Lebih lanjut