Strategi perdagangan kuantitatif berdasarkan purata bergerak


Tarikh penciptaan: 2024-01-26 16:29:23 Akhirnya diubah suai: 2024-01-26 16:29:23
Salin: 0 Bilangan klik: 555
1
fokus pada
1617
Pengikut

Strategi perdagangan kuantitatif berdasarkan purata bergerak

Gambaran keseluruhan

Strategi persilangan purata bergerak adalah strategi perdagangan kuantitatif berdasarkan purata bergerak. Strategi ini menghasilkan isyarat perdagangan dengan mengira harga purata sekuriti dalam jangka masa tertentu, menggunakan persilangan purata bergerak harga, dan menghasilkan keuntungan.

Prinsip Strategi

Strategi ini terutamanya menggunakan persilangan purata bergerak cepat dan purata bergerak perlahan untuk menentukan trend harga dan menghasilkan isyarat perdagangan. Khususnya, menggunakan purata bergerak dengan dua panjang tempoh yang berbeza, seperti garis 10 hari dan garis 20 hari.

Apabila rata-rata bergerak cepat dari arah bawah menembusi rata-rata bergerak perlahan, dianggap bahawa pasaran berubah dari turun ke bawah, menghasilkan isyarat beli. Apabila rata-rata bergerak cepat dari arah atas jatuh dari rata-rata bergerak perlahan, dianggap bahawa pasaran berubah dari turun ke bawah, menghasilkan isyarat jual.

Dengan menangkap titik-titik perubahan dalam trend harga, strategi ini boleh membeli apabila keadaan berubah, dan menjual apabila keadaan berubah, dan menghasilkan keuntungan.

Analisis kelebihan

Strategi ini mempunyai kelebihan berikut:

  1. Konsep mudah, mudah difahami dan dilaksanakan
  2. Parameter yang sangat disesuaikan, seperti kitaran purata bergerak
  3. Hasil pengesanan yang lebih baik, terutama untuk keadaan trend
  4. Ia boleh diintegrasikan ke dalam logik Stop Loss dan mengawal risiko.

Analisis risiko

Strategi ini juga mempunyai risiko:

  1. Kemungkinan untuk memberi isyarat yang salah dan terlalu banyak perdagangan dalam proses pemulihan
  2. Parameter yang perlu di-debug, kombinasi parameter yang berbeza akan memberi kesan yang berbeza
  3. Tanpa mengambil kira kos transaksi dan titik slippage, kesan cakera mungkin lebih lemah daripada pengesanan semula
  4. Terdapat kelewatan masa yang boleh menyebabkan harga kehilangan peluang untuk berbalik dengan cepat.

Risiko ini boleh dikurangkan dengan pengoptimuman yang sesuai.

Arah pengoptimuman

Strategi ini boleh dioptimumkan dalam beberapa arah:

  1. Bersama-sama dengan isyarat penapis indikator lain, seperti indikator tenaga kuantitatif, indikator getaran, dan lain-lain, untuk mengelakkan perdagangan yang salah dalam penyusunan
  2. Menambah purata bergerak yang beradaptasi untuk membolehkan parameter kitaran berubah secara dinamik dan lebih baik untuk mengesan harga
  3. Mengoptimumkan parameter kitaran purata bergerak untuk mencari kombinasi parameter terbaik
  4. Menetapkan syarat kemasukan semula untuk mengelakkan dagangan yang kerap
  5. Mengambil kira kos sebenar dan titik slippage, menyesuaikan titik hentian

Dengan mengoptimumkan strategi ini, anda dapat meningkatkan keberkesanan strategi anda.

ringkaskan

Strategi persilangan purata bergerak secara keseluruhannya adalah strategi perdagangan kuantitatif yang mudah dipelajari dan dilaksanakan. Ia menggunakan prinsip persilangan purata harga untuk menilai pergerakan pasaran dan menghasilkan isyarat perdagangan dengan mudah dan intuitif.

Kod sumber strategi
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
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/
// © HPotter
//  Simple SMA strategy
//
// WARNING:
//      - For purpose educate only
//      - This script to change bars colors
//@version=4
strategy(title="Simple SMA Strategy Backtest", shorttitle="SMA Backtest", precision=6, overlay=true)
Resolution = input(title="Resolution", type=input.resolution, defval="D")
Source = input(title="Source", type=input.source, defval=close)
xSeries = security(syminfo.tickerid, Resolution, Source)
Length = input(title="Length", type=input.integer, defval=14, minval=2)
TriggerPrice = input(title="Trigger Price", type=input.source, defval=close)
TakeProfit = input(50, title="Take Profit", step=0.01)
StopLoss = input(20, title="Stop Loss", step=0.01)
UseTPSL = input(title="Use Take\Stop", type=input.bool, defval=false)
BarColors = input(title="Painting bars", type=input.bool, defval=true)
ShowLine = input(title="Show Line", type=input.bool, defval=true)
UseAlerts = input(title="Use Alerts", type=input.bool, defval=false)
reverse = input(title="Trade Reverse", type=input.bool, defval=false)
pos = 0
xSMA = sma(xSeries, Length)
pos := iff(TriggerPrice > xSMA, 1,
         iff(TriggerPrice < xSMA, -1, nz(pos[1], 0)))
nRes = ShowLine ? xSMA : na
alertcondition(UseAlerts == true and pos != pos[1] and pos == 1, title='Signal Buy', message='Strategy to change to BUY')
alertcondition(UseAlerts == true and pos != pos[1] and pos == -1, title='Signal Sell', message='Strategy to change to SELL')
alertcondition(UseAlerts == true and pos != pos[1] and pos == 0, title='FLAT', message='Strategy get out from position')
possig =iff(pos[1] != pos,
         iff(reverse and pos == 1, -1,
           iff(reverse and pos == -1, 1, pos)), 0)
if (possig == 1)
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)
    
if (UseTPSL)    
    strategy.close("Long", when = high > strategy.position_avg_price + TakeProfit, comment = "close buy take profit")
    strategy.close("Long", when = low < strategy.position_avg_price - StopLoss, comment = "close buy stop loss")
    strategy.close("Short", when = low < strategy.position_avg_price - TakeProfit, comment = "close buy take profit")
    strategy.close("Short", when = high > strategy.position_avg_price + StopLoss, comment = "close buy stop loss")
nColor = BarColors ? strategy.position_avg_price != 0  and pos == 1 ? color.green :strategy.position_avg_price != 0 and pos == -1 ? color.red : color.blue : na
barcolor(nColor)
plot(nRes, title='SMA', color=#00ffaa, linewidth=2, style=plot.style_line)