MA Titik Peralihan Strategi Panjang dan Pendek

Penulis:ChaoZhang, Tarikh: 2024-01-17 11:56:53
Tag:

img

Ringkasan

Strategi ini menilai trend berdasarkan titik perubahan garis purata bergerak untuk pergi panjang pada titik perubahan trend MA dan pergi pendek pada titik perubahan trend MA.

Prinsip Strategi

Strategi ini menggunakan harga=security ((tickerid, tempoh, menutup) untuk mendapatkan harga penutupan sebagai harga untuk analisis strategi, kemudian mengira SMA atau EMA berdasarkan pilihan input panjang ma1 untuk mendapatkan harga baris purata pertama1. roc1 kemudiannya ditakrifkan sebagai kadar perubahan harga satu hari1. Dengan trend ambangStrength1, ia menilai sama ada garis purata mempunyai kenaikan atau penurunan yang ketara. Apabila roc1 melebihi trendStrength1, ma1up ditakrifkan sebagai benar, menunjukkan bahawa garis purata sedang meningkat. Apabila roc1 di bawah trend negatifStrength1, ma1down ditakrifkan sebagai benar, menunjukkan bahawa garis purata sedang jatuh. Isyarat panjang dikeluarkan apabila garis purata naik dan hari sebelumnya jatuh. Isyarat pendek dikeluarkan apabila garis purata jatuh dan hari sebelumnya sedang meningkat.

Oleh itu, strategi menggunakan titik perubahan garis purata bergerak untuk menangkap perubahan trend harga saham, yang merupakan strategi trend berikut yang tipikal.

Analisis Kelebihan

Kelebihan terbesar strategi ini adalah bahawa ia menggunakan titik perubahan garis purata bergerak untuk menilai trend, yang merupakan kaedah analisis teknikal yang agak matang dan boleh dipercayai dalam perdagangan kuantitatif.

  1. Menggunakan purata bergerak untuk menapis bunyi bising dan dengan tepat menangkap titik perubahan trend. purata bergerak meluruskan harga dan boleh menapis beberapa bunyi bising untuk mengenal pasti pembalikan trend dengan lebih dipercayai.

  2. Menggabungkan penunjuk kadar perubahan untuk menentukan intensiti pembalikan untuk mengelakkan pecah palsu. Strategi ini bukan sahaja mengesan titik perubahan, tetapi juga menetapkan ambang untuk gradien kadar perubahan, sehingga dapat mengelakkan perdagangan yang tidak perlu yang disebabkan oleh pecah palsu pada purata bergerak.

  3. Tetapan parameter mudah untuk pengoptimuman backtesting yang mudah. Strategi ini hanya mempunyai satu purata bergerak dan beberapa parameter yang mudah difahami dan dikuasai oleh pengguna.

Analisis Risiko

Risiko utama strategi ini ialah:

  1. Strategi trend berikut tidak dapat meramalkan puncak dan bawah. Strategi ini adalah strategi trend berikut yang hanya boleh mengikuti trend dan tidak dapat meramalkan puncak dan bawah pasaran, mudah terlepas peluang pembalikan segera.

  2. Masalah lag purata bergerak. purata bergerak mempunyai kelewatan tertentu dalam mencerminkan pergerakan harga, yang boleh mempengaruhi ketepatan masa mengenal pasti pembalikan trend.

  3. Tetapan parameter strategi ini seperti bilangan tempoh garis purata dan ambang gradien kadar perubahan akan memberi kesan langsung kepada keuntungan strategi, pengeluaran dan lain-lain dan perlu diuji dan dioptimumkan dengan teliti.

Penyelesaian yang sepadan adalah:

  1. Gabungkan dengan baik penunjuk lain untuk meramalkan titik perubahan utama.

  2. Uji EMA dan purata bergerak yang lebih pantas lain bukannya SMA.

  3. Adalah disyorkan untuk mengoptimumkan pelbagai untuk mencari tetapan parameter terbaik.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan lagi dalam arah berikut:

  1. Tambah garis purata bergerak kedua untuk membentuk strategi salib emas dan salib mati. Ini menggunakan hubungan antara purata bergerak dua untuk menentukan trend dan bunyi penapis.

  2. Menambah analisis jumlah. Dengan memerhatikan perubahan jumlah pada titik giliran purata bergerak, ia dapat mengesahkan kebolehpercayaan titik giliran.

  3. Ujian membantu peranan penunjuk teknikal lain seperti RSI dan MACD. Penunjuk ini juga boleh membantu menentukan trend dan membentuk strategi gabungan dengan titik perubahan purata bergerak.

  4. Multi-pasaran keadaan parameter pengoptimuman dan skrining. Secara berasingan menguji dan mengoptimumkan tetapan parameter untuk kombinasi di bawah pasaran lembu, pasaran beruang, jangkauan terikat pasaran keadaan.

  5. Menggunakan kaedah pembelajaran mesin untuk mengoptimumkan parameter secara dinamik ke atas persekitaran pasaran yang berbeza dan menilai ketahanan parameter untuk pengoptimuman dinamik.

Kesimpulan

Ringkasnya, ini adalah trend yang agak matang mengikuti strategi dengan beberapa nilai praktikal. Idea strategi adalah mudah dan jelas, dengan beberapa parameter yang boleh diselaraskan, yang mudah difahami dan diuji. Pada masa yang sama, terdapat juga masalah seperti trend mengikuti lag. Adalah disyorkan untuk menggabungkan dengan penunjuk lain, menguji dan mengoptimumkan di seluruh situasi, atau memperkenalkan mekanisme untuk penyesuaian parameter dinamik untuk meningkatkan lagi kestabilan dan kesan praktikal strategi.


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

//@version=3
strategy("MA Turning Point Strategy", overlay=true)
src = input(close, title="Source")

price = request.security(syminfo.tickerid, timeframe.period, src)
ma1 = input(25, title="1st MA Length")
type1 = input("SMA", "1st MA Type", options=["SMA", "EMA"])

price1 = if (type1 == "SMA")
    sma(price, ma1)
else
    ema(price, ma1)

plot(series=price1, style=line,  title="1st MA", color=blue, linewidth=2, transp=0)

lookback1 = input(1, "Lookback 1")
roc1 = roc(price1, lookback1)

ma1up = false
ma1down = false
ma2up = false
ma2down = false

ma1up := nz(ma1up[1])
ma1down := nz(ma1down[1])
ma2up := nz(ma2up[1])
ma2down := nz(ma2down[1])

trendStrength1 = input(2.5, title="Minimum slope magnitude * 100", type=float) * 0.01

if crossover(roc1, trendStrength1)
    ma1up := true
    ma1down := false
    
if crossunder(roc1, -trendStrength1) 
    ma1up := false
    ma1down := true

longCondition = ma1up and ma1down[1]
if (longCondition)
    strategy.entry("Long", strategy.long)

shortCondition = ma1down and ma1up[1]
if (shortCondition)
    strategy.entry("Short", strategy.short)



Lebih lanjut