Strategi Pengesanan Trend Berdasarkan SMA dan ATR

Penulis:ChaoZhang, Tarikh: 2024-01-18 16:04:51
Tag:

img

I. Nama Strategi

Strategi ini dinamakanStrategi Pengesanan Trend Berdasarkan SMA dan ATR.

II. Ringkasan Strategi

Strategi ini menggunakan penunjuk SMA untuk menentukan arah trend harga dan menetapkan kedudukan stop loss dengan penunjuk ATR untuk mengesan trend.

III. Prinsip Strategi

1. Isyarat kemasukan

(1) Pergi panjang apabila harga penutupan meningkat dan lebih tinggi daripada SMA.
(2) Pergi pendek apabila harga penutupan jatuh dan lebih rendah daripada SMA.

2. Hentikan Penetapan Kerugian

Gunakan nilai penunjuk ATR dikalikan dengan kelipatan stop loss yang ditetapkan sebagai kedudukan stop loss.

3. Hentikan Pembaruan Kerugian

Selepas setiap bar ditutup, periksa kedudukan stop loss dan mengemas kini ke nilai stop loss yang lebih dekat dengan harga semasa.

4. Isyarat Keluar

Aktivkan stop loss apabila harga menyentuh garis stop loss.

IV. Kelebihan Strategi

1. Keupayaan Mengesan Trend yang Kuat

Tetapan stop loss dinamik penunjuk ATR membolehkan pengesanan trend secara automatik.

2. Kawalan pengeluaran yang baik

Peraturan stop loss yang ketat membantu mengawal pengeluaran maksimum setiap perdagangan.

3. Tetapan Parameter Sederhana

Hanya 3 parameter membuat penyesuaian dan pengoptimuman mudah.

V. Risiko Strategi

1. Risiko Stop Loss yang terlalu longgar

Jika kelipatan stop loss ditetapkan terlalu tinggi, kedudukan stop loss mungkin terlalu longgar, sehingga meningkatkan drawdown.

2. Risiko Penjelasan Palsu

Penembusan harga yang salah boleh membawa kepada kehilangan arah trend. Penunjuk lain harus digunakan untuk menapis isyarat.

3. Risiko Pengoptimuman Parameter

Kepercayaan yang berlebihan terhadap pengoptimuman parameter boleh menyebabkan pemasangan lengkung. Kestabilan parameter harus dinilai dengan teliti.

VI. Arahan Pengoptimuman Strategi

1. Mengoptimumkan Algoritma Stop Loss

Jenis algoritma stop loss lain boleh diuji, seperti stop loss bergerak, stop loss proporsional, dll.

2. Menambah Isyarat Penapis

Penunjuk lain boleh ditambah untuk menapis pecah palsu.

3. Penilaian Kestabilan Parameter

Sejarah ujian belakang untuk menilai parameter kesesuaian dengan produk dan jangka masa yang berbeza.

VII. Ringkasan

Idea keseluruhan strategi ini jelas. Ia menilai arah trend melalui SMA dan menggunakan ATR untuk mengesan trend dengan kawalan penarikan yang baik. Ia sesuai untuk perdagangan trend jangka menengah dan panjang. Tetapi parameter masih memerlukan penyesuaian yang betul dalam perdagangan langsung, dan risiko terlalu optimasi harus dicegah.


/*backtest
start: 2024-01-16 00:00:00
end: 2024-01-16 17:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Scriptâ„¢ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © omererkan

//@version=5
strategy(title="SMA with ATR", overlay=true)

smaLen = input.int(100, title="SMA Length")

atrLen     = input.int(10, title="ATR Length")
stopOffset = input.float(4, title="Stop Offset Multiple", step=0.25)


smaValue  = ta.sma(close, smaLen)
stopValue = ta.atr(atrLen) * stopOffset


lowerCloses = close < close[1] and 
     close[1] < close[2] and
     close[2] < close[3]

enterLong = close > smaValue and 
     lowerCloses


longStop = 0.0
longStop := if enterLong and strategy.position_size < 1
    close - stopValue
else
    math.max(close - stopValue, longStop[1])


higherCloses = close > close[1] and 
     close[1] > close[2] and
     close[2] > close[3]

enterShort = close < smaValue and 
     higherCloses


shortStop = 0.0
shortStop := if enterShort and strategy.position_size > -1
    close + stopValue
else
    math.min(close + stopValue, shortStop[1])


plot(smaValue, color=#4169e1, linewidth=2, title="SMA")

plot(strategy.position_size > 0 ? longStop : na, color=color.lime,
     style=plot.style_linebr, title="Long stop", linewidth=2)

plot(strategy.position_size < 0 ? shortStop : na, color=color.red,
     style=plot.style_linebr, title="Short stop", linewidth=2)


if enterLong
    strategy.entry("EL", strategy.long)

if enterShort
    strategy.entry("ES", strategy.short)


if strategy.position_size > 0
    strategy.exit("SL Long", from_entry="EL", stop=longStop)

if strategy.position_size < 0
    strategy.exit("SL Short", from_entry="ES", stop=shortStop)


if enterLong
    strategy.cancel("Exit Short")

if enterShort
    strategy.cancel("Exit Long")


Lebih lanjut