Strategi Dagangan Kuantitatif Purata Pergerakan Berganda


Tarikh penciptaan: 2024-02-04 16:06:46 Akhirnya diubah suai: 2024-02-04 16:06:46
Salin: 0 Bilangan klik: 606
1
fokus pada
1617
Pengikut

Strategi Dagangan Kuantitatif Purata Pergerakan Berganda

Gambaran keseluruhan

Strategi penembusan garis dua rata adalah strategi perdagangan kuantitatif yang lebih tipikal untuk mengikuti trend. Strategi ini menilai pegangan dengan mengira purata bergerak sederhana dari pelbagai kitaran dan menetapkan isyarat perdagangan sebagai purata bergerak harga. Strategi ini menggunakan garis 20 hari dan 60 hari sebagai isyarat perdagangan.

Prinsip Strategi

Logik utama strategi penembusan dua hala adalah:Menggunakan purata bergerak untuk tempoh yang berbeza untuk menangkap trend harga dan menghantar isyarat perdagangan apabila harga menembusi purata bergerak

Khususnya, strategi ini menggunakan purata bergerak mudah 20 hari dan purata bergerak mudah 60 hari. Kedua-dua purata bergerak boleh dilihat sebagai alat untuk menangkap trend jangka pendek dan trend jangka menengah.

Kode yang diluluskanta.crossoverdanta.crossunderUntuk menentukan sama ada harga akan menembusi atau menembusi satu purata bergerak. Apabila penembusan berlaku, arahan untuk melakukan kenaikan atau penurunan akan dikeluarkan.

Kelebihan Strategik

Strategi penembusan dua hala ini mempunyai beberapa kelebihan:

  1. Konsepnya mudah, mudah difahami dan dilaksanakan.
  2. Ia boleh mengesan trend pasaran dengan berkesan dan mengelakkan daripada terjejas oleh bunyi bising.
  3. Ia mempunyai sedikit parameter strategi dan mudah untuk dioptimumkan.
  4. Fleksibiliti memilih kitaran purata bergerak, menyesuaikan kepekaan kepada pasaran.

Risiko Strategik

Ini adalah strategi yang tidak dapat dielakkan, tetapi ia mempunyai beberapa risiko:

  1. Apabila pasaran berada dalam trend goyah, beberapa isyarat salah akan dihasilkan. Ia boleh dikurangkan dengan menambah tempoh pegangan.
  2. Tidak dapat menangkap pasaran yang berubah dengan cepat. Ia boleh digabungkan dengan petunjuk lain sebagai penapis.
  3. Rata-rata bergerak inherently lagging, tidak dapat bertindak balas lebih awal terhadap perubahan harga.

Arah pengoptimuman strategi

Strategi penembusan dua garis rata boleh dioptimumkan dari dimensi berikut:

  1. Mengoptimumkan parameter kitaran rata-rata bergerak untuk mencari kombinasi parameter terbaik.
  2. Tambah penilaian indikator lain untuk mengelakkan isyarat yang salah. Contohnya MACD, KD dan sebagainya.
  3. Tambah logik stop loss.
  4. Menggabungkan lebih banyak analisis kitaran masa, mewujudkan kerangka masa yang lebih banyak.

ringkaskan

Strategi penembusan dua garis sejajar adalah strategi penjejakan trend yang mudah dan praktikal. Ia dapat menangkap trend jangka panjang dan jangka panjang dengan berkesan dan mengelakkan gangguan bunyi pasaran jangka pendek. Strategi ini mudah difahami dan dilaksanakan, parameternya boleh dikira, sangat sesuai untuk keperluan perdagangan kuantitatif.

Kod sumber strategi
/*backtest
start: 2024-01-04 00:00:00
end: 2024-02-03 00:00:00
period: 4h
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/
// © Astorhsu

//@version=5
strategy("Astor SMA20/60", overlay=true)
backtest_year = input(2018, title='backtest_year') //回測開始年分
backtest_month = input.int(01, title='backtest_month', minval=1, maxval=12) //回測開始月份
backtest_day = input.int(01, title='backtest_day', minval=1, maxval=31)  //回測開始日期
start_time = timestamp(backtest_year, backtest_month, backtest_day, 00, 00)  //回測開始的時間函數

//Indicators
sma10 = ta.sma(close,10)
sma20 = ta.sma(close,20)
sma60 = ta.sma(close,60)
plot(sma20, color=color.green, title="sma(20)")
plot(sma60, color=color.red, title="sma(60)")

//進場條件
// trend1 = sma60 > sma20 //假設目前趨勢為60>20
longCondition = ta.crossover(close, ta.sma(close, 20))
if (longCondition) 
    strategy.entry("open long20", strategy.long, qty=1, comment="站上m20做多")


shortCondition = ta.crossunder(close, ta.sma(close, 20))
if (shortCondition) 
    strategy.close("open long20",comment="跌破m20平倉", qty=1)     
    
longCondition1 = ta.crossover(close, ta.sma(close, 60))
if (longCondition1) 
    strategy.entry("open long60", strategy.long, qty=1, comment="站上m60做多")


shortCondition1 = ta.crossunder(close, ta.sma(close, 60))
if (shortCondition1) 
    strategy.close("open long60",comment="跌破m60平倉", qty=1)     
    
// longCondition2 = ta.crossover(close, ta.sma(close, 10))
// if (longCondition2) 
//     strategy.entry("open long10", strategy.long, qty=1, comment="站上m10做多")


// shortCondition2 = ta.crossunder(close, ta.sma(close, 10))
// if (shortCondition2)
//     strategy.close("open long10",comment="跌破m10平倉", qty=1)