Strategi silang spiral dengan konfirmasi rata-rata bergerak

Penulis:ChaoZhang, Tanggal: 2024-02-02 14:50:08
Tag:

img

Gambaran umum

Strategi ini menggabungkan indikator pusaran dan garis rata-rata bergerak untuk mengidentifikasi arah dan kekuatan tren harga untuk menghasilkan sinyal panjang dan pendek potensial. Ketika garis positif pusaran (VI +) melintasi di atas garis negatif pusaran (VI-), setiap silang disorot pada grafik. Jika harga penutupan di atas garis rata-rata bergerak, sinyal panjang dihasilkan. Ketika VI- melintasi di atas VI +, jika harga penutupan di bawah garis rata-rata bergerak, sinyal pendek dihasilkan.

Logika Strategi

  1. Indikator Vortex: Terdiri dari dua garis - Vortex Positive (VI+) dan Vortex Negative (VI-).

  2. Moving Average (MA): Menggunakan metode Moving Average yang dipilih (SMA, EMA, SMMA, WMA atau VWMA) untuk meratakan data harga.

  3. Menentukan sinyal panjang dan pendek: Ketika VI + melintasi di atas VI-, setiap crossover disorot. Jika penutupan di atas Garis Smoothing, sinyal panjang dihasilkan. Ketika VI- melintasi di atas VI+, jika penutupan di bawah Garis Smoothing, sinyal pendek dihasilkan.

Keuntungan

  1. Menggabungkan identifikasi tren dan smoothing untuk menangkap tren di pasar tren, menghindari sinyal palsu di pasar bergolak.

  2. Indikator pusaran secara efektif mengidentifikasi arah tren dan kekuatan.

  3. Logika strategi yang sederhana dan jelas, mudah dipahami dan diimplementasikan.

  4. Parameter disesuaikan, beradaptasi dengan lingkungan pasar yang berbeda.

Risiko

  1. Dapat menghasilkan sinyal palsu dan whipsaws di pasar yang terikat rentang atau tanpa tren.

  2. Pengaturan parameter yang tidak tepat dapat mempengaruhi kinerja strategi. Misalnya, moving average yang terlalu pendek memiliki kemampuan pelusukan yang buruk dan yang lebih lama tertinggal dalam mengenali perubahan tren.

  3. Tidak dapat melindungi terhadap perubahan harga yang ekstrim dari peristiwa besar yang tidak terduga.

Peningkatan

  1. Sertakan indikator lain seperti volume untuk menentukan keandalan tren.

  2. Mengoptimalkan parameter untuk menyeimbangkan trend-mengikuti dan filter kebisingan dari Moving Averages.

  3. Tambahkan stop loss ke kontrol loss.

  4. Menggunakan pembelajaran mesin untuk optimasi parameter otomatis.

  5. Menggabungkan modul manajemen risiko untuk menyesuaikan ukuran posisi.

Kesimpulan

Strategi ini secara efektif menggabungkan Indikator Vortex dan Moving Averages untuk menangkap tren. Ini mengidentifikasi arah tren sambil memiliki beberapa kemampuan penyaringan kebisingan untuk mengurangi sinyal palsu. Logika sederhana dan fleksibel untuk digunakan, berkinerja baik di pasar tren. Perbaikan lebih lanjut dalam pengendalian risiko dapat dicapai dengan menggabungkan lebih banyak filter, mengoptimalkan parameter, dan menambahkan stop loss.


/*backtest
start: 2023-02-01 00:00:00
end: 2024-02-01 00:00:00
period: 1d
basePeriod: 1h
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/
// © DraftVenture

//@version=5
strategy("Vortex + Moving Average Strategy", overlay=true)

//Vortex settings
period_ = input.int(14, title="Vortex Length", minval=2)
VMP = math.sum( math.abs( high - low[1]), period_ )
VMM = math.sum( math.abs( low - high[1]), period_ )
STR = math.sum( ta.atr(1), period_ )
VIP = VMP / STR
VIM = VMM / STR
plot(VIP, title="VI +", color=color.white)
plot(VIM, title="VI -", color=color.white)

len = input.int(9, minval=1, title="MA Length")
src = input(close, title="Source")
offset = input.int(title="Offset", defval=0, minval=-500, maxval=500)
out = ta.sma(src, len)
plot(out, color=color.blue, title="MA", offset=offset)

ma(source, length, type) =>
    switch type
        "SMA" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "SMMA (RMA)" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)

typeMA = input.string(title = "Method", defval = "SMA", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="Smoothing")
smoothingLength = input.int(title = "Length", defval = 5, minval = 1, maxval = 100, group="Smoothing")

smoothingLine = ma(out, smoothingLength, typeMA)
plot(smoothingLine, title="Smoothing Line", color=#f37f20, offset=offset, display=display.none)

// Determine long and short conditions
longCondition = ta.crossover(VIP, VIM) and close > smoothingLine
shortCondition = ta.crossunder(VIP, VIM) and close < smoothingLine
crossCondition = ta.crossunder(VIP, VIM) or ta.crossunder(VIM, VIP)

// Strategy entry and exit logic
if longCondition
    strategy.entry("Long", strategy.long)

if shortCondition
    strategy.entry("Short", strategy.short)

bgcolor(crossCondition ? color.new(color.white, 80) : na)

// Strategy by KP

Lebih banyak