Strategi Perdagangan Volume Rekursif


Tanggal Pembuatan: 2024-01-31 16:56:31 Akhirnya memodifikasi: 2024-01-31 16:56:31
menyalin: 0 Jumlah klik: 596
1
fokus pada
1617
Pengikut

Strategi Perdagangan Volume Rekursif

Ringkasan

Strategi ini didasarkan pada Alexgrover pengembangan dari indikator-indikator pita berulangkali. Strategi ini menggunakan indikator-indikator pita berulangkali untuk menentukan tren harga dan titik-titik resistensi pendukung yang penting, yang digabungkan dengan kondisi momentum untuk memfilter terobosan palsu, untuk memungkinkan masuk yang rendah tetapi berkualitas tinggi.

Prinsip Strategi

Perhitungan indikator berbaris

Indikator pita berurutan terdiri dari pita atas, pita bawah dan garis tengah. Cara menghitung indikator adalah:

Banding atas = nilai maksimum (banding atas dari garis K sebelumnya, harga penutupan + n*Volatilitas) Banding bawah = nilai minimum ((banding bawah dari garis K sebelumnya, harga penutupan - n*Volatilitas)
Garis tengah = (garis atas + garis bawah) / 2

Di mana n adalah faktor skala, tingkat fluktuasi dapat memilih ATR, standar deviasi, saluran rata-rata dan metode RFV khusus. Sensitivitas parameter panjang mengontrol indikator, semakin besar nilai, semakin tidak mudah indikator untuk memicu.

Aturan perdagangan strategis

Strategi pertama adalah mendeteksi apakah arah bawah terus naik dan arah atas terus turun untuk menyingkirkan false breakout.

Ketika harga di bawah batas bawah, lakukan lebih banyak; ketika harga di atas batas atas, lakukan lebih sedikit.

Selain itu, strategi ini juga menyertakan logika stop loss.

Analisis Keunggulan

Strategi ini memiliki keuntungan sebagai berikut:

  1. Menggunakan kerangka acak untuk menghitung indikator secara efisien dan menghindari penghitungan berulang
  2. Parameter indikator dapat disesuaikan dengan kondisi pasar yang berbeda
  3. Menggabungkan tren dan terobosan untuk menghindari terobosan palsu
  4. Filter kondisi momentum untuk memastikan kualitas sinyal perdagangan

Analisis risiko

Strategi ini juga memiliki beberapa risiko:

  1. Setting parameter yang tidak tepat dapat menyebabkan frekuensi transaksi yang terlalu tinggi atau kualitas sinyal yang buruk
  2. Jika terjadi perubahan tren siklus besar, kemungkinan kerugian yang lebih besar
  3. Peningkatan kerugian akibat penurunan harga yang ekstrem

Risiko ini dapat dikontrol dengan mengoptimalkan parameter, menetapkan stop loss, dan meningkatkan slippage.

Arah optimasi

Strategi ini juga dapat dioptimalkan dari beberapa arah:

  1. Menggabungkan beberapa indikator berkala untuk perdagangan multi-frame waktu
  2. Menambahkan modul pembelajaran mesin untuk mengoptimalkan penyesuaian parameter
  3. Menambahkan analisis hubungan kuantitatif untuk menemukan kombinasi parameter yang optimal
  4. Dengan menggunakan pembelajaran mendalam untuk memprediksi jalur harga, meningkatkan akurasi sinyal

Meringkaskan

Strategi ini secara keseluruhan merupakan strategi pelacakan tren yang sangat praktis dan efisien. Ini menggabungkan kerangka acak untuk menghemat sumber daya komputasi, menggunakan tren untuk mendukung resistensi dalam menentukan arah tren besar, dan meningkatkan kondisi momentum untuk memfilter terobosan palsu, sehingga memastikan kualitas sinyal perdagangan.

Kode Sumber Strategi
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// @version=5
// Original indicator by alexgrover
strategy('Extended Recursive Bands Strategy', overlay=true, commission_type=strategy.commission.percent,commission_value=0.06,default_qty_type =strategy.percent_of_equity,default_qty_value = 100,initial_capital =1000)
length = input.int(260, step=10, title='Length')
src = input(close, title='Source')
method = input.string('Classic', options=['Classic', 'Atr', 'Stdev', 'Ahlr', 'Rfv'], title='Method')
bandDirectionCheck = input.bool(true, title='Bands Hold Direction')
lookback = input(3)
//----
atr = ta.atr(length)
stdev = ta.stdev(src, length)
ahlr = ta.sma(high - low, length)
rfv = 0.
rfv := ta.rising(src, length) or ta.falling(src, length) ? math.abs(ta.change(src)) : rfv[1]
//-----
f(a, b, c) =>
    method == a ? b : c
v(x) =>
    f('Atr', atr, f('Stdev', stdev, f('Ahlr', ahlr, f('Rfv', rfv, x))))
//----
sc = 2 / (length + 1)
a = 0.
a := math.max(nz(a[1], src), src) - sc * v(math.abs(src - nz(a[1], src)))
b = 0.
b := math.min(nz(b[1], src), src) + sc * v(math.abs(src - nz(b[1], src)))
c = (a+b)/2

// Colors
beColor = #675F76
buColor = #a472ff

// Plots
pA = plot(a, color=color.new(beColor, 0), linewidth=2, title='Upper Band')
pB = plot(b, color=color.new(buColor, 0), linewidth=2, title='Lower Band')
pC = plot(c, color=color.rgb(120,123,134,0), linewidth=2, title='Middle Band')
fill(pC, pA, color=color.new(beColor,90))
fill(pC, pB, color=color.new(buColor,90))

// Band keeping direction
// By Adulari
longc = 0
shortc = 0
for i = 0 to lookback-1
    if b[i] > b[i+1]
        longc:=longc+1
    if a[i] < a[i+1]
        shortc:=shortc+1
bhdLong = if bandDirectionCheck
    longc==lookback
else
    true
bhdShort = if bandDirectionCheck
    shortc==lookback
else
    true

// Strategy
if b>=low and bhdLong
    strategy.entry(id='Long',direction=strategy.long)
if high>=a and bhdShort
    strategy.entry(id='Short',direction=strategy.short)

// TP at middle line
//if low<=c and strategy.position_size<0 and strategy.position_avg_price>close
    //strategy.exit(id="Short",limit=close)
//if high>=c and strategy.position_size>0 and strategy.position_avg_price<close
    //strategy.exit(id="Long",limit=close)