Strategi Persilangan Purata Bergerak

SMA MA
Tarikh penciptaan: 2024-06-14 15:48:32 Akhirnya diubah suai: 2024-06-14 15:48:32
Salin: 3 Bilangan klik: 621
1
fokus pada
1617
Pengikut

Strategi Persilangan Purata Bergerak

Gambaran keseluruhan

Strategi ini adalah strategi perdagangan kuantitatif yang berasaskan persilangan purata bergerak. Ia menghasilkan isyarat beli apabila garis cepat melintasi garis perlahan dari bawah ke atas, dan isyarat jual apabila garis cepat melintasi garis perlahan dari atas ke bawah. Ia juga memperkenalkan konsep pengurusan kedudukan dinamik, menyesuaikan saiz kedudukan setiap dagangan secara dinamik mengikut kerugian akaun, untuk mengawal risiko.

Prinsip Strategi

  1. Hitung purata bergerak mudah (SMA) untuk dua kitaran yang berbeza, iaitu 9 dan 21.
  2. Apabila garis cepat ((9 kitaran) dari bawah ke atas melintasi garis perlahan ((21 kitaran), menghasilkan isyarat beli; apabila garis cepat dari atas ke bawah melintasi garis perlahan, menghasilkan isyarat jual.
  3. Jumlah risiko untuk setiap transaksi dikira berdasarkan 1% daripada baki akaun, kemudian jumlah saham yang perlu dibeli berdasarkan jumlah risiko dan julat harga semasa (harga tertinggi - harga terendah).
  4. Jika strategi semasa berada dalam keadaan menguntungkan, kedudukan perdagangan seterusnya akan ditingkatkan sebanyak 10%; jika dalam keadaan rugi, kedudukan perdagangan seterusnya akan dikurangkan sebanyak 10%.
  5. Melakukan operasi beli apabila isyarat beli muncul, melakukan operasi jual apabila isyarat menjual muncul.

Kelebihan Strategik

  1. Mudah difahami: Strategi ini berdasarkan kepada prinsip klasik penyambungan purata bergerak, logiknya jelas, mudah difahami dan dilaksanakan.
  2. Pengesanan trend: Menggunakan purata bergerak dari dua tempoh yang berbeza, ia dapat menangkap trend harga jangka menengah dan jangka panjang dengan berkesan.
  3. Pengurusan kedudukan dinamik: menyesuaikan saiz kedudukan secara dinamik mengikut keadaan keuntungan dan kerugian, meningkatkan kedudukan kedudukan yang sesuai apabila keuntungan, mengurangkan kedudukan kedudukan yang sesuai apabila kerugian, membantu mengawal risiko dan meningkatkan keuntungan.
  4. Kebolehgunaan yang meluas: Strategi ini boleh digunakan dalam pelbagai pasaran kewangan dan jenis perdagangan, seperti saham, niaga hadapan, mata wang asing dan lain-lain.

Risiko Strategik

  1. Perdagangan yang kerap: Strategi ini mungkin menyebabkan perdagangan yang kerap, meningkatkan kos perdagangan dan risiko slippage kerana ia berdasarkan pada isyarat silang purata bergerak jangka pendek.
  2. Performa buruk dalam pasaran goyah: Strategi ini mungkin menghasilkan lebih banyak isyarat palsu yang menyebabkan kerugian dalam pasaran harga goyah dan bukan trend.
  3. Risiko pengoptimuman parameter: prestasi strategi bergantung pada pilihan kitaran purata bergerak, parameter yang berbeza boleh menyebabkan hasil yang berbeza, terdapat risiko overfit optimum parameter.

Arah pengoptimuman strategi

  1. Pengenalan penunjuk pengesahan trend: Berdasarkan isyarat persilangan purata bergerak, pengenalan penunjuk pengesahan trend lain, seperti MACD, ADX, dan lain-lain, untuk menapis beberapa isyarat palsu dan meningkatkan kualiti isyarat.
  2. Optimumkan peraturan pengurusan kedudukan: Peraturan pengurusan kedudukan yang sedia ada adalah lebih mudah, dan algoritma pengurusan kedudukan yang lebih kompleks seperti formula Kelly, pengurusan dana peratusan tetap dan sebagainya boleh dipertimbangkan untuk meningkatkan pendapatan yang disesuaikan dengan risiko.
  3. Menambahkan mekanisme henti rugi: Menambahkan peraturan henti rugi dan henti dalam strategi untuk mengawal kerugian maksimum dan keuntungan maksimum dalam satu perdagangan, meningkatkan nisbah risiko keuntungan strategi.
  4. Optimasi penyesuaian parameter: Memperkenalkan mekanisme pengoptimuman parameter penyesuaian, menyesuaikan parameter strategi secara automatik mengikut perubahan keadaan pasaran, meningkatkan kestabilan dan penyesuaian strategi.

ringkaskan

Strategi persilangan rata-rata bergerak adalah strategi perdagangan kuantitatif yang mudah dan praktikal untuk menangkap trend harga melalui sinyal persilangan rata-rata bergerak dua kitaran yang berbeza, sambil memperkenalkan peraturan pengurusan kedudukan dinamik untuk mengawal risiko. Logik strategi ini jelas, mudah dilaksanakan, dan aplikasi yang luas. Tetapi dalam aplikasi praktikal, perhatian perlu diberikan kepada risiko yang berpotensi seperti perdagangan yang kerap, prestasi pasaran yang bergolak dan pengoptimuman parameter, dan strategi perlu dioptimumkan dan diperbaiki mengikut keperluan, seperti memperkenalkan indikator pengiktirafan trend, pengoptimuman peraturan kedudukan, pengurusan stop loss, dan pengoptimuman parameter.

Kod sumber strategi
/*backtest
start: 2024-06-06 00:00:00
end: 2024-06-13 00:00:00
period: 5m
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/
// © okolienicholas

//@version=5
strategy("Moving Average Crossover Strategy", overlay=true)

// Input parameters
fast_length = input(9, title="Fast MA Length")
slow_length = input(21, title="Slow MA Length")
source = close
account_balance = input(100, title="Account Balance") // Add your account balance here

// Calculate moving averages
fast_ma = ta.sma(source, fast_length)
slow_ma = ta.sma(source, slow_length)

// Plot moving averages
plot(fast_ma, color=color.blue, title="Fast MA")
plot(slow_ma, color=color.red, title="Slow MA")

// Generate buy/sell signals
buy_signal = ta.crossover(fast_ma, slow_ma)
sell_signal = ta.crossunder(fast_ma, slow_ma)

// Plot buy/sell signals
plotshape(buy_signal, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, title="Buy Signal")
plotshape(sell_signal, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, title="Sell Signal")

// Calculate the risk per trade
risk_per_trade = account_balance * 0.01

// Calculate the number of shares to buy
shares_to_buy = risk_per_trade / (high - low)

// Calculate the profit or loss
profit_or_loss = strategy.netprofit

// Adjust the position size based on the profit or loss
if (profit_or_loss > 0)
    shares_to_buy = shares_to_buy * 1.1 // Increase the position size by 10% when in profit
else
    shares_to_buy = shares_to_buy * 0.9 // Decrease the position size by 10% when in loss

// Execute orders
if (buy_signal)
    strategy.entry("Buy", strategy.long, qty=shares_to_buy)
    
if (sell_signal)
    strategy.entry("Sell", strategy.short, qty=shares_to_buy)