Strategi Penembusan Purata Bergerak

Penulis:ChaoZhang, Tarikh: 2023-11-28 13:50:49
Tag:

img

Ringkasan

Ini adalah strategi perdagangan pecah berdasarkan purata bergerak. Ia mengira harga purata dalam tempoh tertentu sebagai purata bergerak. Apabila harga memecahkan purata bergerak, isyarat perdagangan dihasilkan.

Logika Strategi

Strategi ini terutamanya berdasarkan kepada penunjuk purata bergerak. Ia menggunakan fungsi sma untuk mengira harga penutupan purata dalam tempoh untuk mendapatkan purata bergerak. Apabila harga penutupan terkini memecahkan purata bergerak ke atas, isyarat beli dihasilkan. Apabila harga penutupan terkini memecahkan purata bergerak ke bawah, isyarat jual dihasilkan.

Secara khusus, ia menentukan sumber (harga penutupan baru-baru ini) dan panjang purata bergerak dalam strategi untuk mendapatkan urutan data purata bergerak. Kemudian ia menetapkan dua syarat: membuat pesanan panjang apabila harga melintasi di atas purata bergerak; membuat pesanan pendek apabila harga melintasi di bawah purata bergerak. Selepas membuat pesanan, ia juga menetapkan mengambil keuntungan dan menghentikan kerugian: ia menutup sebahagian kedudukan apabila pesanan mencapai nisbah keuntungan yang ditetapkan, dan menutup keseluruhan kedudukan apabila pesanan mencapai harga mengambil keuntungan atau berhenti kerugian yang ditetapkan.

Analisis Kelebihan

Ini adalah trend yang mudah dan praktikal mengikut strategi.

  1. Logiknya jelas dan mudah difahami dan menyesuaikan parameter.
  2. Purata bergerak adalah penunjuk teknikal yang biasa digunakan dan boleh dipercayai yang dapat menapis bunyi pasaran dan mengenal pasti trend.
  3. Menetapkan mengambil keuntungan dan menghentikan kerugian pada masa yang sama boleh mengunci beberapa keuntungan dan mengawal risiko.
  4. Ia boleh berjalan dengan parameter mudah sahaja, sesuai untuk quant entry level.

Analisis Risiko

Walaupun strategi ini mempunyai banyak kelebihan, masih ada beberapa risiko:

  1. Purata bergerak cenderung tertinggal dan mungkin terlepas pembalikan jangka pendek.
  2. Ia tidak mengambil kira persekitaran pasaran secara keseluruhan dan cenderung untuk terperangkap.
  3. Tiada pengoptimuman parameter boleh mempengaruhi prestasi strategi.
  4. Ia mungkin mempunyai beberapa isyarat palsu kerana tiada penunjuk lain digunakan untuk penapisan.

Untuk mengawal risiko ini, kita boleh mengoptimumkan dengan menggabungkan petunjuk lain untuk penapisan, memperkenalkan penilaian trend pasaran jangka pendek, atau menggunakan kaedah pembelajaran mesin untuk mencari kombinasi parameter yang optimum.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan dalam aspek berikut:

  1. Tambah penunjuk teknikal lain untuk penilaian untuk membina sistem perdagangan dan meningkatkan kadar kemenangan.

  2. Tambahkan mekanisme stop loss. Gunakan stop loss yang tertinggal atau stop loss berdasarkan masa untuk mengunci keuntungan dan mengelakkan kerugian yang lebih besar.

  3. Melakukan pengoptimuman parameter. Ubah parameter tempoh purata bergerak untuk mencari kombinasi terbaik. Pelbagai jenis purata bergerak juga boleh diuji.

  4. Meningkatkan penilaian pembelajaran mesin. Gunakan algoritma seperti hutan rawak dan LSTM digabungkan dengan pelbagai faktor untuk menentukan arah trend.

  5. Mengoptimumkan logik masuk dan keluar. Tetapkan keadaan penapisan trend untuk mengelakkan perdagangan terhadap trend yang hampir berakhir. Pertimbangkan untuk menggunakan logik keluar bertahap.

Ringkasan

Secara keseluruhan, strategi breakout purata bergerak ini sangat sesuai sebagai strategi perdagangan kuant pemula. Ia mempunyai logik yang mudah, mudah difahami dan dioperasikan, dengan beberapa kesan praktikal. Pada masa yang sama, ia meninggalkan banyak ruang untuk ujian dan pengoptimuman lanjut.


/*backtest
start: 2023-11-20 00:00:00
end: 2023-11-22 08:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//  |-- Initialize Strategy Parameters:
strategy( 
     // |-- Strategy Title.
     title='[Tutorial][RS]Working with orders', 
     // |-- if shorttitle is specified, it will overwrite the name on the chart window.
     shorttitle='WwO', 
     // |-- if true it overlays current chart window, otherwise it creates a drawer to display plotting outputs.
     overlay=true, 
     // |-- Strategy unit type for default quantity, possible arguments: (strategy.cash, strategy.fixed, strategy.percent_of_equity)
     default_qty_type=strategy.cash, 
     // |-- Value to use for default trade size
     default_qty_value=1000, 
     // |-- Default Account size 
     initial_capital=100000, 
     // |-- Account Currency parameter
     currency=currency.USD
     )

//  |-- Strategy Profit/loss parameters:
profit = input(defval=5000, title='Take Profit')
loss = input(defval=5000, title='Stop Loss')
ratio = input(defval=2.0, title='Ratio at wich to take out a percentage off the table (take profit / ratio).')
percent = input(defval=50.0, title='Percentage of position to take profit.')
//  |-- Signal Parameters:
//  |
//  |-- Moving Average input source and length parameters.
src = input(defval=close)
length = input(defval=100)
//  |-- Moving Average Data series.
ma = sma(src, length)

//  |-- Condition for triggering a buy(long) order(trade).
if crossover(src, ma)
    //  |-- Create the order.
    strategy.order(id='Buy', long=true)
    //  |-- Issue a exit order to close a percentage of the trade when a specified ratio(take profit / ratio) is reached.
    strategy.exit(id='Buy Half Exit', from_entry='Buy', qty_percent=percent, profit=profit/ratio)
    //  |-- Issue a exit order to close the full position, when take profit or stop loss's are reached.
    strategy.exit(id='Buy Full Exit', from_entry='Buy', qty_percent=100, profit=profit, loss=loss)
if crossunder(src, ma)
    //  |-- Create the order.
    strategy.order(id='Sell', long=false)
    //  |-- Issue a exit order to close a percentage of the trade when a specified ratio(take profit / ratio) is reached.
    strategy.exit(id='Sell Half Exit', from_entry='Sell', qty_percent=percent, profit=profit/ratio)
    //  |-- Issue a exit order to close the full position, when take profit or stop loss's are reached.
    strategy.exit(id='Sell Full Exit', from_entry='Sell Half Exit', qty_percent=100, profit=profit, loss=loss)

//  |-- Output Functions.
plot(series=ma, title='MA', color=black)


Lebih lanjut