Berdasarkan strategi indikator Chaikin Money Flow (CMF)


Tanggal Pembuatan: 2024-06-07 17:05:04 Akhirnya memodifikasi: 2024-06-07 17:05:04
menyalin: 0 Jumlah klik: 625
1
fokus pada
1617
Pengikut

Berdasarkan strategi indikator Chaikin Money Flow (CMF) CASHISKING | CASHISKING CMF, EMA, SMA

Ringkasan

Strategi ini menghasilkan sinyal perdagangan berdasarkan indikator Chaikin Fund Flow (CMF) dan Index Moving Average (EMA). Pertama, menghitung nilai CMF dalam periode yang ditentukan, kemudian menggunakan dua periode EMA yang berbeda untuk meluruskan data CMF. Ketika EMA cepat menghasilkan sinyal beli ketika EMA lambat melintas di atasnya, sebaliknya menghasilkan sinyal jual. Strategi ini juga menetapkan kondisi stop loss dan stop loss untuk mengendalikan risiko dan mengunci keuntungan.

Prinsip Strategi

  1. Untuk menghitung nilai arus kas Chaikin (CMF) dalam periode tertentu, indikator CMF menggabungkan data harga dan volume transaksi untuk mengukur intensitas arus masuk dan arus keluar.
  2. Indeks moving average (EMA) menggunakan dua periode berbeda untuk memperlancar data CMF, EMA cepat digunakan untuk menangkap tren jangka pendek, EMA lambat digunakan untuk menentukan tren jangka panjang.
  3. Ketika EMA cepat melintas di atas EMA lambat, menghasilkan sinyal beli; ketika EMA cepat melintas di bawah EMA lambat, menghasilkan sinyal jual.
  4. Setelah menghasilkan sinyal perdagangan, strategi akan menunggu konfirmasi dari dua garis K untuk menghindari sinyal palsu.
  5. Tetapkan kondisi stop loss dan stop loss, harga stop loss adalah persentase tertentu dari harga pembukaan posisi, dan harga stop loss adalah persentase tertentu dari harga pembukaan posisi.

Analisis Keunggulan

  1. Kombinasi data harga dan volume transaksi: Indikator CMF menyusun data harga dan volume transaksi, sehingga dapat mencerminkan arus dana pasar secara lebih komprehensif dan memberikan sinyal perdagangan yang lebih andal.
  2. Pelacakan tren: Dengan menggunakan EMA dari periode yang berbeda, strategi dapat menangkap tren jangka pendek dan jangka panjang secara bersamaan dan beradaptasi dengan lingkungan pasar yang berbeda.
  3. Konfirmasi sinyal: Setelah menghasilkan sinyal perdagangan, strategi akan menunggu konfirmasi dari dua garis K, secara efektif memfilter beberapa sinyal palsu, meningkatkan tingkat keberhasilan perdagangan.
  4. Pengendalian risiko: Mengatur kondisi stop loss dan stop loss, yang dapat secara efektif mengontrol risiko dari satu transaksi, sementara mengunci keuntungan yang telah diperoleh.

Analisis risiko

  1. Optimasi Parameter: Kinerja strategi tergantung pada pilihan siklus CMF dan EMA, lingkungan pasar yang berbeda mungkin memerlukan pengaturan parameter yang berbeda, sehingga perlu dilakukan optimasi parameter secara berkala.
  2. Identifikasi tren: Strategi ini dapat menghasilkan lebih banyak sinyal palsu di pasar yang bergoyang atau di titik-titik perubahan tren, yang menyebabkan perdagangan yang lebih sering dan kehilangan dana.
  3. Slippoints dan biaya transaksi: Seringnya transaksi dapat meningkatkan slippoints dan biaya transaksi, yang mempengaruhi keuntungan keseluruhan strategi.

Arah optimasi

  1. Parameter penyesuaian dinamis: Sesuai dengan perubahan lingkungan pasar, penyesuaian dinamis parameter siklus CMF dan EMA untuk menyesuaikan dengan kondisi pasar yang berbeda.
  2. Masukkan indikator lain: dikombinasikan dengan indikator teknis lainnya, seperti indeks relative strength (RSI), rata-rata true amplitude (ATR), dan lain-lain, untuk meningkatkan akurasi identifikasi tren dan keandalan sinyal.
  3. Optimalkan Stop Loss dan Stop Out: Sesuaikan persentase stop loss dan stop out secara dinamis sesuai dengan volatilitas pasar dan preferensi risiko untuk mengontrol risiko dan mengunci keuntungan dengan lebih baik.
  4. Bergabunglah dengan manajemen posisi: Sesuai dengan tren pasar dan kekuatan sinyal, ukuran posisi disesuaikan secara dinamis, meningkatkan posisi jika tren jelas, mengurangi posisi jika tidak pasti.

Meringkaskan

Strategi ini menggunakan indikator aliran dana Chaikin dan indeks moving average, menggabungkan data harga dan volume transaksi, dengan pelacakan tren sebagai ide utama, sambil mengatur kondisi stop loss dan stop loss untuk mengendalikan risiko. Keunggulan strategi ini adalah kemampuan untuk mempertimbangkan faktor multi-aspek secara menyeluruh dan menangkap tren pada skala waktu yang berbeda, tetapi masih ada ruang untuk pengoptimalan dalam pengaturan parameter dan identifikasi tren.

Kode Sumber Strategi
/*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)