
Strategi persilangan purata bergerak yang serba boleh adalah sistem perdagangan pengesanan trend yang fleksibel untuk mengenal pasti peluang perdagangan dengan menggunakan persilangan harga dengan jenis purata bergerak yang dipilih. Strategi ini membolehkan peniaga memilih jenis purata bergerak yang sesuai dari purata bergerak sederhana (SMA), purata bergerak indeks (EMA), purata bergerak rata (SMMA / RMA), purata bergerak berat (WMA) dan purata bergerak berat (VWMA). Dengan menyesuaikan jenis dan tempoh purata bergerak, peniaga dapat mengoptimumkan prestasi strategi mengikut gaya pasaran dan perdagangan yang berbeza.
Inti strategi ini adalah untuk mengesan persilangan antara harga dan rata-rata bergerak yang dipilih. Strategi ini menghasilkan isyarat beli apabila harga menembusi rata-rata bergerak dari bawah; strategi ini menghasilkan isyarat jual apabila harga jatuh dari atas. Pendekatan yang mudah dan berkesan ini membolehkan strategi untuk menangkap trend pasaran, dan juga menyediakan titik masuk dan keluar yang jelas.
Strategi ini juga mengandungi fungsi tetapan jangka masa yang boleh digunakan untuk menilai prestasi strategi dalam tempoh sejarah tertentu. Fungsi ini sangat berharga untuk pengoptimuman dan pengesahan strategi dan dapat membantu pedagang memahami bagaimana strategi berfungsi dalam keadaan pasaran yang berbeza.
Pengiraan purata bergerak: Strategi pertama mengira purata bergerak berdasarkan jenis dan kitaran purata bergerak yang dipilih oleh pengguna. Jenis yang disokong termasuk SMA, EMA, SMMA, RMA, WMA, dan VWMA. Setiap jenis mempunyai kaedah pengiraan tertentu, seperti EMA memberikan berat yang lebih tinggi kepada data terkini.
Kajian silang: Strategi menggunakan fungsi ta.crossover () dan ta.crossunder () untuk mengesan persilangan antara harga penutupan dan purata bergerak. Apabila harga penutupan menembusi purata bergerak dari bawah, ta.crossover () akan mengembalikan nilai sebenar untuk isyarat pembelian; apabila harga penutupan menembusi purata bergerak dari atas, ta.crossunder () akan mengembalikan nilai sebenar untuk isyarat penjualan.
Pengurusan lokasi: Strategi menggunakan pembolehubah yang dipanggil kedudukan untuk mengesan keadaan dagangan semasa. Apabila isyarat membeli dikesan, kedudukan ditetapkan sebagai 1; apabila isyarat menjual dikesan, kedudukan ditetapkan sebagai -1.
Pelaksanaan transaksi: Berdasarkan nilai pembolehubah kedudukan, strategi menggunakan fungsi strategy.entry () untuk melakukan pembelian dan strategi menggunakan fungsi strategy.close () untuk melakukan penjualan. Ini memastikan strategi hanya berdagang pada masa yang sesuai.
Penapis Julat Tarikh: Strategi ini menggunakan fungsi date () untuk menyaring julat tarikh pengembalian. Strategi hanya akan menghasilkan isyarat perdagangan dan melaksanakan perdagangan dalam julat tarikh yang ditetapkan.
Untuk dilihat: Strategi ini memetakan purata bergerak yang dipilih di atas carta, yang dilaksanakan menggunakan fungsi plot (). Ini memberikan rujukan visual yang intuitif kepada peniaga, yang membantu memahami bagaimana strategi berfungsi.
Kelayakan: Strategi ini menyokong pelbagai jenis purata bergerak, termasuk SMA, EMA, SMMA, RMA, WMA dan VWMA. Fleksibiliti ini membolehkan peniaga memilih jenis purata bergerak yang paling sesuai mengikut keadaan pasaran yang berbeza dan keutamaan peribadi.
Kemudahan penyesuaian: Pengguna bebas menyesuaikan kitaran purata bergerak, yang membolehkan strategi menyesuaikan diri dengan gaya perdagangan dan kitaran pasaran yang berbeza. Pedagang jangka pendek boleh memilih kitaran yang lebih pendek, sementara pelabur jangka panjang boleh memilih kitaran yang lebih lama.
Pengesanan trend: Strategi ini dapat menangkap trend pasaran dengan berkesan dengan menggunakan persilangan purata bergerak sebagai isyarat. Ini membolehkan peniaga masuk pada awal trend dan keluar pada akhir trend.
Isyarat yang jelas: Strategi ini memberikan isyarat pembelian dan penjualan yang jelas, mengurangkan keperluan untuk penilaian subjektif. Ini sangat membantu bagi peniaga pemula kerana ia menyediakan rangka kerja perdagangan yang objektif.
Fungsi pengesanan: Fungsi penapisan julat tarikh yang terbina dalam membolehkan pengguna mengkaji semula strategi dalam tempoh sejarah tertentu. Ini sangat berharga untuk pengoptimuman dan pengesahan strategi, yang dapat membantu pedagang memahami bagaimana strategi berfungsi dalam keadaan pasaran yang berbeza.
Sokongan visual: Strategi ini memetakan purata bergerak pada carta, memberikan rujukan visual yang intuitif kepada peniaga. Ini membantu memahami bagaimana strategi berfungsi dan boleh membantu analisis manual.
Pengurusan Risiko: Dengan menggunakan strategi.percent_of_equity untuk menetapkan saiz perdagangan, strategi ini mencapai tahap pengurusan risiko. Ini memastikan bahawa setiap perdagangan menggunakan peratusan tetap nilai akaun, yang membantu mengawal risiko.
Penyelesaian: Pertimbangkan untuk menggabungkannya dengan petunjuk teknikal lain, seperti indeks momentum atau indeks kadar turun naik, untuk memberikan wawasan pasaran yang lebih tepat pada masanya.
Penyelesaian: Pengenalan penapis, seperti pengesahan jumlah transaksi atau pengurangan nilai turun naik harga, untuk mengurangkan kesan isyarat palsu.
Penyelesaian: Pertimbangkan untuk mengintegrasikan petunjuk teknikal atau analisis asas yang lain untuk memberikan pandangan pasaran yang lebih menyeluruh.
Penyelesaian: Melakukan pengoptimuman parameter yang luas dan pengujian ketahanan untuk mencari parameter yang berfungsi dengan baik dalam pelbagai keadaan pasaran.
Penyelesaian: melaksanakan strategi hentikan kerugian, seperti hentikan tetap, hentikan pelacakan atau hentikan berdasarkan kadar turun naik, untuk mengehadkan potensi kerugian.
Penyelesaian: Pilih dengan teliti kitaran purata bergerak yang sesuai dengan pasaran sasaran dan gaya perdagangan, dan pertimbangkan untuk memperkenalkan had frekuensi perdagangan.
Penyelesaian: Tentukan dan sesuaikan strategi secara berkala, pertimbangkan penggunaan parameter penyesuaian atau teknologi pembelajaran mesin untuk menyesuaikan diri dengan keadaan pasaran yang berbeza.
Bagaimana ia boleh dilaksanakan: menggunakan fungsi keselamatan () untuk mendapatkan data dari pelbagai bingkai masa dan menggabungkan maklumat ini dalam logik strategi.
Kaedah pelaksanaan: Menggunakan indikator kadar turun naik (seperti ATR) untuk secara dinamik mengira purata bergerak.
Kaedah pelaksanaan: Mengira purata bergerak jumlah dagangan dan menggunakannya sebagai syarat pengesahan isyarat tambahan.
Cara pelaksanaan: Tetapkan sasaran stop loss dan profit menggunakan fungsi strategy.exit () dan sesuaikan nilai-nilai ini mengikut dinamik ATR.
Kaedah pelaksanaan: Mengira ADX dan menjadikannya sebagai syarat tambahan.
Kaedah pelaksanaan: Mengira petunjuk teknikal tambahan dan mengintegrasikannya ke dalam logik perdagangan.
Kaedah pelaksanaan: Menggunakan kaedah statistik atau algoritma pembelajaran mesin untuk mengesan rejim pasaran dan menyesuaikan parameter strategi.
Cara pelaksanaan: Menggunakan fungsi tersuai untuk mengira peratusan dana untuk setiap urus niaga dan menghantarnya ke fungsi strategi.entry ().
Strategi silang rata-rata bergerak yang beradaptasi adalah sistem pengesanan trend yang fleksibel dan disesuaikan yang sesuai untuk pelbagai pasaran dan gaya perdagangan. Kelebihan utamanya adalah kesederhanaan dan penyesuaian, yang membolehkan peniaga mengoptimumkan prestasi strategi dengan memilih pelbagai jenis dan kitaran rata-rata bergerak.
Walau bagaimanapun, seperti semua strategi perdagangan, ia juga menghadapi beberapa risiko dan batasan. Cabaran utama termasuk keterbelakangan yang wujud dalam purata bergerak, isyarat palsu yang mungkin dihasilkan dalam pasaran yang bergolak, dan ketergantungan pada satu indikator. Untuk menangani cabaran ini, kami telah mengemukakan beberapa arah pengoptimuman, termasuk analisis pelbagai jangka masa, penyesuaian parameter dinamik, pengesahan jumlah perdagangan, mekanisme pengurusan risiko yang lebih baik.
Dengan melaksanakan pengoptimuman ini, peniaga dapat meningkatkan ketangguhan dan kebolehsesuaian strategi secara signifikan. Sebagai contoh, pengenalan analisis pelbagai jangka masa dapat memberikan pandangan pasaran yang lebih menyeluruh dan mengurangkan isyarat palsu; penyesuaian parameter dinamik dapat membuat strategi lebih sesuai dengan keadaan pasaran yang berbeza; dan mekanisme pengurusan risiko yang lebih baik dapat mengoptimumkan ciri-ciri risiko dan pulangan strategi.
Secara keseluruhannya, strategi penyambung rata-rata bergerak yang beradaptasi memberikan pedagang asas yang kukuh untuk menyesuaikan dan mengoptimumkan lebih lanjut mengikut keperluan individu dan keadaan pasaran. Dengan pemantauan, penilaian dan penambahbaikan yang berterusan, pedagang dapat mengembangkan sistem perdagangan yang stabil dan fleksibel yang dapat bersaing dalam pelbagai keadaan pasaran.
/*backtest
start: 2023-07-23 00:00:00
end: 2024-07-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("MA Cross Over Strategy", overlay=true, initial_capital=10000, process_orders_on_close=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// 参数:EMA的周期
ema_length = input.int(120, title="MA Length")
typeMA = input(title = "Method", defval = "SMA", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="Smoothing")
ma(source, length, type) =>
switch type
"SMA" => ta.sma(source, length)
"EMA" => ta.ema(source, length)
"SMMA (RMA)" => ta.rma(source, length)
"WMA" => ta.wma(source, length)
"VWMA" => ta.vwma(source, length)
// 计算EMA
ma_value = ma(close, ema_length, typeMA)
// === INPUT BACKTEST RANGE ===
// i_from = input.time(defval = timestamp("01 Jan 2020 00:00 +0000"), title = "From")
// i_thru = input.time(defval = timestamp("01 Aug 2024 00:00 +0000"), title = "Thru")
// === INPUT SHOW PLOT ===
i_show = input (defval = true, title = "Show Date Range")
// === FUNCTION EXAMPLE ===
date() => true
// 生成交易信号
var int position = na
cv = ta.crossover(close, ma_value)
cu = ta.crossunder(close, ma_value)
if date() and cv
position := 1
else if date() and cu
position := -1
// 显示MA
plot(ma_value, title='MA', color=color.blue, linewidth=2)
// 策略实现
if (position == 1)
strategy.entry("Buy", strategy.long)
if (position == -1)
strategy.close("Buy")