Strategi lintas periode berdasarkan AlphaTrend


Tanggal Pembuatan: 2023-09-28 11:05:27 Akhirnya memodifikasi: 2023-09-28 11:05:27
menyalin: 0 Jumlah klik: 903
1
fokus pada
1617
Pengikut

Ringkasan

Strategi ini didasarkan pada indikator AlphaTrend, yang menggabungkan keunggulan dari kedua indikator RSI dan MFI untuk mendapatkan efek strategi yang lebih baik di pasar tren multi-kamar. Strategi ini terutama menilai apakah harga menembus kurva AlphaTrend untuk menangkap arah tren.

Prinsip Strategi

  1. Perhitungan indikator ATR untuk mengukur tingkat volatilitas pasar
  2. Jika tidak ada data volume transaksi, gunakan indikator RSI untuk menilai pasar kosong; jika ada volume transaksi, gunakan indikator MFI untuk menilai pasar kosong
  3. Perhitungan atas dan bawah rel berdasarkan ATR dan penilaian ruang kosong
  4. Hitung kurva AlphaTrend yang menggabungkan uptrend dan downtrend
  5. Sinyal beli dan jual muncul saat harga naik dan turun melalui kurva AlphaTrend

Strategi ini bergantung pada arah tren harga berdasarkan kurva AlphaTrend, yang secara komprehensif mempertimbangkan metrik fluktuasi pasar ATR, RSI, dan indikator MFI overhead, yang dapat secara efektif melacak tren harga. Ketika harga menembus kurva, menunjukkan adanya pergeseran tren, yang merupakan titik waktu masuk.

Keunggulan Strategis

  1. Indikator AlphaTrend menggabungkan keunggulan dari kedua indikator RSI dan MFI, yang dapat menyesuaikan diri dengan kondisi pasar kosong pada saat bersamaan
  2. Pengaturan up-track dan down-track yang dinamis dapat disesuaikan secara otomatis dengan fluktuasi pasar
  3. Informasi harga dan volume transaksi yang dipertimbangkan secara menyeluruh, tidak mudah tertipu oleh sinyal yang salah dan bertentangan
  4. Menggunakan pendekatan inovatif untuk menangkap tren baru dalam waktu singkat
  5. Logika yang jelas, sederhana, dan mudah dipahami

Secara keseluruhan, strategi ini berlaku untuk semua situasi pasar, efektif memfilter kebisingan pasar, lebih akurat dalam mengidentifikasi tren, dan merupakan strategi yang tepat dan efisien untuk mengikuti tren.

Risiko Strategis

  1. Kurva AlphaTrend mungkin mengalami kesalahan penembusan yang memerlukan verifikasi Kombinasi dengan indikator lain
  2. Beberapa sinyal tidak efektif dapat muncul dalam situasi gempa besar.
  3. Pengaturan parameter indikator yang tidak tepat juga dapat mempengaruhi efek kebijakan
  4. Dalam situasi turunnya ribut, stop loss dapat ditembus, waspadalah terhadap kerugian besar.

Untuk risiko, Anda dapat mengatur stop loss untuk mengendalikan kerugian tunggal; mengoptimalkan kombinasi parameter, yang digunakan dengan kombinasi indikator lain untuk mengurangi sinyal tidak valid; menyesuaikan pengaturan parameter sesuai dengan pasar yang berbeda.

Optimasi Strategi

  1. Anda dapat mencoba kombinasi parameter yang berbeda untuk menemukan yang optimal.
  2. Dapat dikombinasikan dengan indikator lain untuk membentuk kondisi tambahan yang membantu penilaian
  3. Anda dapat mengatur stop loss dinamis atau stop loss pelacakan untuk mengontrol risiko
  4. Frekuensi perdagangan yang berbeda dapat digunakan berdasarkan kondisi pasar (misalnya 5 menit, 15 menit, dll.)
  5. Anda dapat mengoptimalkan waktu masuk dan mengatur kondisi masuk yang lebih tepat.

Dengan menguji pasar dan parameter yang berbeda, strategi ini dapat terus dioptimalkan agar dapat beradaptasi dengan lebih banyak jenis situasi pasar.

Meringkaskan

Strategi AlphaTrend secara keseluruhan adalah strategi yang sederhana dan efisien untuk mengikuti tren. Strategi ini menggabungkan harga dan volume perdagangan, yang dapat beradaptasi dengan situasi yang tidak stabil. Dengan cara operasi yang menembus, waktu masuk yang jelas. Dengan asumsi pengendalian risiko yang baik, efek strategi yang baik dapat diperoleh.

Kode Sumber Strategi
/*backtest
start: 2023-09-20 00:00:00
end: 2023-09-26 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// author © KivancOzbilgic
// developer © KivancOzbilgic
// pv additions, simplification and strategy conversion @ treigen
//@version=5
strategy('AlphaTrend For ProfitView', overlay=true, calc_on_every_tick=true, process_orders_on_close=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1, initial_capital=1000)
coeff = input.float(1.5, 'Multiplier', step=0.1)
AP = input(15, 'Common Period')
ATR = ta.sma(ta.tr, AP)
novolumedata = input(title='Change calculation (no volume data)?', defval=false)

i_startTime = input(defval = timestamp("01 Jan 2014 00:00 +0000"), title = "Backtesting Start Time", inline="timestart", group='Backtesting')
i_endTime = input(defval = timestamp("01 Jan 2100 23:59 +0000"), title = "Backtesting End Time", inline="timeend", group='Backtesting')
timeCond = true

pv_ex = input.string('', title='Exchange', tooltip='Leave empty to use the chart ticker instead (Warning: May differ from actual market name in some instances)', group='PV Settings')
pv_sym = input.string('', title='Symbol', tooltip='Leave empty to use the chart ticker instead (Warning: May differ from actual market name in some instances)', group='PV Settings')
pv_acc = input.string("", title="Account", group='PV Settings')
pv_alert_long = input.string("", title="PV Alert Name Longs", group='PV Settings')
pv_alert_short = input.string("", title="PV Alert Name Shorts", group='PV Settings')
pv_alert_test = input.bool(false, title="Test Alerts", tooltip="Will immediately execute the alerts, so you may see what it sends. The first line on these test alerts will be excluded from any real alert triggers" ,group='PV Settings')

upT = low - ATR * coeff
downT = high + ATR * coeff
AlphaTrend = 0.0
AlphaTrend := (novolumedata ? ta.rsi(close, AP) >= 50 : ta.mfi(hlc3, AP) >= 50) ? upT < nz(AlphaTrend[1]) ? nz(AlphaTrend[1]) : upT : downT > nz(AlphaTrend[1]) ? nz(AlphaTrend[1]) : downT


k1 = plot(AlphaTrend, color=color.new(#0022FC, 0), linewidth=3)
k2 = plot(AlphaTrend[2], color=color.new(#FC0400, 0), linewidth=3)

buySignalk = ta.crossover(AlphaTrend, AlphaTrend[2])
sellSignalk = ta.crossunder(AlphaTrend, AlphaTrend[2])

var exsym = ""
if barstate.isfirst
    exsym := pv_ex == "" ? "" : "ex=" + pv_ex + ","
    exsym := pv_sym == "" ? exsym : exsym + "sym=" + pv_sym + ","


if barstate.isconfirmed and timeCond 
    if strategy.position_size <= 0 and buySignalk
        strategy.entry("Buy", strategy.long)
        alert(pv_alert_long + "(" + exsym + "acc=" + pv_acc + ")", alert.freq_once_per_bar_close)
    if strategy.position_size >= 0 and sellSignalk
        strategy.entry("Sell", strategy.short)
        alert(pv_alert_short + "(" + exsym + "acc=" + pv_acc + ")", alert.freq_once_per_bar_close)


//  Only used for testing/debugging alert messages
if pv_alert_test
    alert("<![Alert Test]!>\n" + pv_alert_long + "(" + exsym + "acc=" + pv_acc + ")", alert.freq_once_per_bar)
    alert("<![Alert Test]!>\n" + pv_alert_short + "(" + exsym + "acc=" + pv_acc + ")", alert.freq_once_per_bar)