Berdasarkan strategi penunjuk Aliran Wang Chaikin (CMF).


Tarikh penciptaan: 2024-06-07 17:05:04 Akhirnya diubah suai: 2024-06-07 17:05:04
Salin: 0 Bilangan klik: 625
1
fokus pada
1617
Pengikut

Berdasarkan strategi penunjuk Aliran Wang Chaikin (CMF). CASHISKING | CASHISKING CMF, EMA, SMA

Gambaran keseluruhan

Strategi ini menghasilkan isyarat dagangan berdasarkan petunjuk aliran wang Chaikin ((CMF) dan purata bergerak indeks ((EMA)). Pertama, nilai CMF dalam tempoh yang ditetapkan dikira, kemudian menggunakan dua EMA yang berbeza untuk meratakan data CMF. Apabila EMA cepat menghasilkan isyarat beli ketika EMA perlahan melintas di atasnya, sebaliknya menghasilkan isyarat jual.

Prinsip Strategi

  1. Mengira nilai aliran wang Chaikin (CMF) dalam tempoh yang ditetapkan, indikator CMF menggabungkan data harga dan jumlah transaksi untuk mengukur intensiti aliran masuk dan aliran keluar wang.
  2. Menggunakan purata bergerak indeks dari dua tempoh yang berbeza (EMA) untuk memproses data CMF dengan lancar, EMA cepat digunakan untuk menangkap trend jangka pendek, dan EMA perlahan digunakan untuk menentukan trend jangka panjang.
  3. Apabila EMA pantas bersalin di atas EMA perlahan, ia menghasilkan isyarat beli; apabila EMA pantas bersalin di bawah EMA perlahan, ia menghasilkan isyarat jual.
  4. Selepas menghasilkan isyarat dagangan, strategi akan menunggu pengesahan dua garis K untuk mengelakkan isyarat palsu.
  5. Tetapkan syarat berhenti dan berhenti, harga berhenti adalah peratusan harga bukaan, harga berhenti adalah peratusan harga bukaan.

Analisis kelebihan

  1. Gabungan data harga dan jumlah transaksi: Indeks CMF menyusun data harga dan jumlah transaksi, dapat mencerminkan aliran dana pasaran dengan lebih lengkap, memberikan isyarat perdagangan yang lebih dipercayai.
  2. Pemantauan Trend: Dengan menggunakan EMA yang berbeza, strategi dapat menangkap trend jangka pendek dan jangka panjang pada masa yang sama, menyesuaikan diri dengan keadaan pasaran yang berbeza.
  3. Pengesahan isyarat: Setelah menghasilkan isyarat perdagangan, strategi akan menunggu pengesahan dua garis K, untuk menyaring beberapa isyarat palsu dan meningkatkan kadar kejayaan perdagangan.
  4. Kawalan risiko: Tetapkan syarat berhenti dan hentikan untuk mengawal risiko perdagangan tunggal dengan berkesan, sambil mengunci keuntungan yang telah diperoleh.

Analisis risiko

  1. Pengoptimuman parameter: prestasi strategi bergantung kepada pilihan kitaran CMF dan EMA, keadaan pasaran yang berbeza mungkin memerlukan tetapan parameter yang berbeza, oleh itu pengoptimuman parameter perlu dilakukan secara berkala.
  2. Pengesanan trend: Di pasaran yang bergolak atau di titik perubahan trend, strategi ini mungkin menghasilkan lebih banyak isyarat palsu, yang menyebabkan perdagangan yang kerap dan kehilangan dana.
  3. Slippoints dan kos transaksi: Perdagangan yang kerap boleh meningkatkan slippoints dan kos transaksi, yang menjejaskan keuntungan keseluruhan strategi.

Arah pengoptimuman

  1. Parameter penyesuaian dinamik: Sesuai dengan perubahan keadaan pasaran, parameter kitaran CMF dan EMA secara dinamik disesuaikan dengan keadaan pasaran yang berbeza.
  2. Pengenalan penunjuk lain: digabungkan dengan penunjuk teknikal lain seperti RSI (Relative Strength Index) dan ATR (Average True Rate) untuk meningkatkan ketepatan pengenalan trend dan kebolehpercayaan isyarat.
  3. Mengoptimumkan hentian dan hentian: Secara dinamik menyesuaikan peratusan hentian dan hentian mengikut turun naik pasaran dan pilihan risiko untuk mengawal risiko dan mengunci keuntungan dengan lebih baik.
  4. Menyertai pengurusan kedudukan: menyesuaikan saiz kedudukan secara dinamik mengikut trend pasaran dan kekuatan isyarat, meningkatkan kedudukan apabila trend jelas, mengurangkan kedudukan apabila tidak pasti.

ringkaskan

Strategi ini menggunakan indikator aliran dana Chaikin dan purata bergerak indeks, menggabungkan harga dan data jumlah transaksi, dengan trend mengikuti sebagai pemikiran utama, sambil menetapkan syarat berhenti dan berhenti untuk mengawal risiko. Kelebihan strategi adalah dapat mempertimbangkan pelbagai faktor secara menyeluruh, menangkap trend dalam skala masa yang berbeza, tetapi masih ada ruang untuk pengoptimuman dalam pengaturan parameter dan pengenalan trend.

Kod 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)