Berdasarkan strategi terobosan saluran dinamis


Tanggal Pembuatan: 2024-02-27 15:15:07 Akhirnya memodifikasi: 2024-02-27 15:15:07
menyalin: 0 Jumlah klik: 567
1
fokus pada
1617
Pengikut

Berdasarkan strategi terobosan saluran dinamis

Ringkasan

Strategi ini menggunakan indikator Keltner Channel, yang dikombinasikan dengan Moving Average, untuk mengatur harga pembelian dan penjualan yang dinamis, untuk melakukan operasi penjualan yang murah dan murah. Strategi ini dapat secara otomatis mengidentifikasi peluang pembelian dan penjualan yang menembus saluran.

Prinsip Strategi

  1. Perhitungan rel rel saluran: menggunakan indeks rata-rata bergerak untuk menghitung rel harga
  2. Menghitung bandwidth saluran: Menghitung bandwidth saluran dengan menggunakan real bandwidth atau rata-rata real bandwidth atau rata-rata pergerakan harga
  3. Garis lintasan atas dan bawah: lintasan bandwidth ± N kali lintasan tengah
  4. Urutan masuk: Ketika harga menyentuh garis lintasan atas, atur harga beli untuk menerobos, menunggu terobosan; Ketika harga menyentuh garis lintasan bawah, atur harga jual untuk menerobos, menunggu terobosan
  5. Urutan keluar: stop loss saat harga teratas melebihi harga masuk atau saat harga teratas kembali ke mid-trail setelah pembelian; stop loss saat harga terendah kembali ke mid-trail atau di bawah harga masuk setelah penjualan

Analisis Keunggulan

  1. Menggunakan saluran dinamis untuk menangkap perubahan tren pasar dengan cepat
  2. Penggunaan rel tengah untuk menentukan arah pergerakan harga
  3. Pengaturan bandwidth N-kali membuat ruang gerak masuk akal dan menghindari seringnya penyesuaian posisi
  4. Menggunakan mekanisme terobosan, sesuai dengan teori tren, dan mengikuti perkembangan.
  5. Setting Stop Loss Conditions dan Mengontrol Risiko

Analisis risiko

  1. Pilihan metode perhitungan orbit dapat mempengaruhi jangkauan saluran dan efek pencocokan harga.
  2. Penetapan N-koefisien terlalu besar atau terlalu kecil akan mempengaruhi return dari strategi
  3. Penembakan ini bisa menimbulkan sinyal palsu dan harus dihentikan secara ketat.

Arah optimasi

  1. Mencoba berbagai metode perhitungan garis tengah untuk mencari parameter terbaik
  2. Uji nilai N yang berbeda untuk menemukan perkalian optimal
  3. Meningkatkan Breakout, Menghindari Sinyal Palsu
  4. Mengoptimalkan logika stop loss dan ketat mengontrol kerugian tunggal

Meringkaskan

Strategi ini secara keseluruhan menggunakan sains yang masuk akal, menilai pergerakan dan arah harga melalui indikator saluran dinamis, mengatur parameter yang masuk akal untuk menangkap sinyal terobosan, mencapai harga rendah dan harga tinggi, dan kemudian mendapatkan keuntungan tambahan. Sementara itu, risiko strategi terus dioptimalkan, sehingga dapat beroperasi secara stabil di berbagai pasar.

Kode Sumber Strategi
/*backtest
start: 2024-01-27 00:00:00
end: 2024-02-26 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title="Keltner Strategy", overlay=true)
length = input.int(20, minval=1)
mult = input.float(2.0, "Multiplier")
src = input(close, title="Source")
exp = input(true, "Use Exponential MA")
BandsStyle = input.string("Average True Range", options = ["Average True Range", "True Range", "Range"], title="Bands Style")
atrlength = input(10, "ATR Length")
esma(source, length)=>
	s = ta.sma(source, length)
	e = ta.ema(source, length)
	exp ? e : s
ma = esma(src, length)
rangema = BandsStyle == "True Range" ? ta.tr(true) : BandsStyle == "Average True Range" ? ta.atr(atrlength) : ta.rma(high - low, length)
upper = ma + rangema * mult
lower = ma - rangema * mult
crossUpper = ta.crossover(src, upper)
crossLower = ta.crossunder(src, lower)
bprice = 0.0
bprice := crossUpper ? high+syminfo.mintick : nz(bprice[1])
sprice = 0.0
sprice := crossLower ? low -syminfo.mintick : nz(sprice[1])
crossBcond = false
crossBcond := crossUpper ? true
     : na(crossBcond[1]) ? false : crossBcond[1]
crossScond = false
crossScond := crossLower ? true
     : na(crossScond[1]) ? false : crossScond[1]
cancelBcond = crossBcond and (src < ma or high >= bprice )
cancelScond = crossScond and (src > ma or low <= sprice )
if (cancelBcond)
	strategy.cancel("KltChLE")
if (crossUpper)
	strategy.entry("KltChLE", strategy.long, stop=bprice, comment="KltChLE")
if (cancelScond)
	strategy.cancel("KltChSE")
if (crossLower)
	strategy.entry("KltChSE", strategy.short, stop=sprice, comment="KltChSE")