Strategi ini mengira garis purata bergerak dari pelbagai bingkai masa untuk menentukan trend dalam tempoh yang berbeza. Ia pergi panjang apabila harga melintasi purata bergerak dan pergi pendek apabila harga melintasi di bawah purata bergerak. Di samping itu, hentikan kerugian dan ambil keuntungan dimasukkan untuk mengimbangi risiko dan pulangan.
Strategi ini adalah berdasarkan perkara utama berikut:
Mengira purata bergerak mudah 21 hari, 50 hari, 100 hari dan 200 hari.
Pergi panjang apabila harga melintasi mana-mana purata bergerak, dan pergi pendek apabila ia melintasi di bawah.
Tetapkan stop loss berhampiran harga terendah bar sebelumnya selepas membuka kedudukan panjang, dan berhampiran harga tertinggi selepas membuka kedudukan pendek.
Tetapkan sasaran mengambil keuntungan di bawah harga terendah untuk panjang dan di atas harga tertinggi untuk pendek dalam julat tertentu.
Tutup kedudukan apabila harga mencapai tahap stop loss atau mengambil keuntungan.
Menghakimi trend dalam pelbagai jangka masa dapat meningkatkan kebolehpercayaan isyarat perdagangan dan membolehkan kita mengikuti trend apabila mereka agak jelas.
Kelebihan utama strategi ini ialah:
Kebolehpercayaan isyarat yang lebih baik dengan analisis jangka masa berbilang.
Hentian dinamik memudahkan kawalan risiko. Mengira hentian berdasarkan tindakan harga menyediakan julat yang munasabah untuk mengehadkan kerugian maksimum berdasarkan setiap perdagangan.
Struktur kod yang mudah dan jelas. Sintaks Pine menawarkan struktur yang boleh dibaca untuk menyesuaikan parameter dengan mudah dan mengoptimumkan.
Penggunaan praktikal yang mudah. Moving average crossovers adalah idea strategi klasik yang boleh dengan mudah dilaksanakan dalam perdagangan langsung dengan penyesuaian parameter yang betul.
Terdapat juga beberapa risiko yang perlu dipertimbangkan:
Penghakiman trend yang tidak tepat. purata bergerak boleh menghasilkan isyarat campuran dan kelewatan, yang membawa kepada isyarat perdagangan yang tidak betul.
Eksposur kerugian dalam pasaran yang tidak menentu. Stop loss boleh dipicu dengan mudah dalam jurang harga yang besar atau pembalikan, yang menimbulkan kerugian besar.
Tetapan parameter yang tidak betul meningkatkan kerugian. Hentian yang terlalu luas atau keuntungan yang ketat boleh meningkatkan kerugian maksimum setiap perdagangan.
Risiko memegang jangka panjang. Trend ini mengikut strategi tidak mempertimbangkan keuntungan jangka panjang dan boleh memakan modal yang besar dari masa ke masa.
Perbezaan dagangan sebenar. Kos dagangan, slippage dan lain-lain boleh mempengaruhi pulangan apabila digunakan dalam platform dagangan sebenar.
Penyelesaian:
Tambah pengesahan isyarat dengan penunjuk lain seperti KDJ, MACD dll.
Sesuaikan lebar henti berdasarkan keadaan pasaran untuk mengelakkan pemicu awal.
Mengoptimumkan parameter dan menilai pulangan jangka panjang dan pengeluaran.
Uji strategi dengan teliti dalam perdagangan kertas dan tambah berhenti manual.
Terdapat ruang untuk penambahbaikan lanjut:
Tambahkan peraturan kemasukan dan keluar kuantitatif. Sebagai contoh, periksa paras tertinggi dan terendah baru untuk memastikan perdagangan pada trend yang lebih jelas.
Menggabungkan saiz kedudukan dan pengurusan risiko. Dimensi dinamik kedudukan berdasarkan saiz akaun dan keadaan pasaran.
Meningkatkan pengesahan trend. Gunakan penunjuk seperti PRZ, ATR, DMI dan lain-lain untuk menapis dan memilih trend yang sesuai.
Bergantian tempoh memegang panjang dan pendek. Tetapkan hentian pada keuntungan untuk mengunci keuntungan.
Membina kumpulan stok menggunakan model pelaburan faktor. Skor dan penapis stok pada pelbagai faktor.
Tambah pembelajaran mesin untuk kawalan risiko. Gunakan LSTM, RNN dan lain-lain untuk membantu penilaian dan mencegah kesilapan manusia.
Strategi crossover purata bergerak yang mudah ini menawarkan pelaksanaan yang mudah untuk mengikuti trend. Hentian dinamik membantu mengawal risiko. Tetapi beberapa ketidaktepatan isyarat dan risiko whipsaw wujud. Pengoptimuman lebih lanjut pada parameter dan teknik tambahan boleh membawa kepada prestasi yang lebih kukuh.
/*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"}] */ //@version=5 strategy("DolarBasar by AlperDursun", shorttitle="DOLARBASAR", overlay=true) // Input for Moving Averages ma21 = ta.sma(close, 21) ma50 = ta.sma(close, 50) ma100 = ta.sma(close, 100) ma200 = ta.sma(close, 200) // Calculate the lowest point of the previous candle for stop loss lowestLow = ta.lowest(low, 2) // Calculate the highest point of the previous candle for stop loss highestHigh = ta.highest(high, 2) // Calculate take profit levels takeProfitLong = lowestLow - 3 * (lowestLow - highestHigh) takeProfitShort = highestHigh + 3 * (lowestLow - highestHigh) // Entry Conditions longCondition = ta.crossover(close, ma21) or ta.crossover(close, ma50) or ta.crossover(close, ma100) or ta.crossover(close, ma200) shortCondition = ta.crossunder(close, ma21) or ta.crossunder(close, ma50) or ta.crossunder(close, ma100) or ta.crossunder(close, ma200) // Stop Loss Levels stopLossLong = lowestLow * 0.995 stopLossShort = highestHigh * 1.005 // Exit Conditions longExitCondition = low < stopLossLong or high > takeProfitLong shortExitCondition = high > stopLossShort or low < takeProfitShort if (longCondition) strategy.entry("Long", strategy.long) if (shortCondition) strategy.entry("Short", strategy.short) if (longExitCondition) strategy.exit("Long Exit", from_entry="Long", stop=stopLossLong, limit=takeProfitLong) if (shortExitCondition) strategy.exit("Short Exit", from_entry="Short", stop=stopLossShort, limit=takeProfitShort)