Strategi ini adalah sistem perdagangan automatik berdasarkan crossover Purata Bergerak Sederhana (SMA) dan penapisan jumlah. Ia menggunakan crossover SMA yang cepat dan perlahan untuk menjana isyarat kemasukan, sambil menggabungkan penunjuk jumlah untuk mengesahkan kekuatan trend. Strategi ini juga termasuk mekanisme berhenti rugi dan mengambil keuntungan yang dinamik, serta syarat keluar berdasarkan masa, yang bertujuan untuk mengoptimumkan pengurusan risiko dan meningkatkan keuntungan.
Prinsip-prinsip utama strategi ini berdasarkan komponen utama berikut:
Sinyal SMA silang:
Penapisan Volume:
Pendapatan yang ditukarkan kepada pendapatan yang ditukarkan
Keluar Berasaskan Masa:
Penetapan Tempoh Ujian Kembali:
Pengikut Trend dan Gabungan Momentum: Dengan menggabungkan crossover SMA dan penapisan jumlah, strategi ini dapat menangkap pergerakan trend yang kuat sambil mengelakkan perdagangan yang kerap di pasaran yang lemah.
Pengurusan Risiko Fleksibel: Mekanisme berhenti rugi dan mengambil keuntungan dinamik membolehkan strategi untuk menyesuaikan pendedahan risiko secara automatik berdasarkan turun naik pasaran, membantu melindungi keuntungan dan mengehadkan potensi kerugian.
Pencegahan Overholding: Had masa pegangan maksimum membantu mengelakkan strategi daripada memegang kedudukan kehilangan untuk tempoh yang panjang dalam keadaan pasaran yang tidak baik, menggalakkan penggunaan modal yang berkesan.
Kebolehsesuaian Tinggi: Pelbagai parameter yang boleh diselaraskan (seperti tempoh SMA, peratusan stop-loss dan mengambil keuntungan, masa tahan maksimum, dll.) membolehkan strategi dioptimumkan untuk pasaran dan gaya perdagangan yang berbeza.
Sokongan visual: Strategi merangka garis SMA dan isyarat perdagangan pada carta, memudahkan pemahaman dan analisis prestasi strategi secara intuitif.
Lagging Alam: Indikator SMA secara semula jadi ketinggalan, yang boleh membawa kepada kemasukan yang tertunda atau peluang yang hilang dalam pasaran yang berbalik dengan cepat.
Risiko Pelanggaran Palsu: Dalam pasaran yang berbeza, penyeberangan SMA boleh menghasilkan isyarat pecah palsu yang kerap, yang membawa kepada perdagangan berlebihan dan peningkatan kos transaksi.
Kebergantungan Volume: Kepercayaan yang berlebihan terhadap penunjuk jumlah boleh menyesatkan strategi dalam keadaan pasaran tertentu, terutamanya semasa tempoh kecairan yang rendah atau jumlah dagangan yang tidak normal.
Peratusan tetap Stop-Loss/Take-Profit: Menggunakan stop loss peratusan tetap dan mengambil keuntungan mungkin tidak sesuai untuk semua keadaan pasaran, terutamanya semasa perubahan turun naik yang dramatik.
Batasan Keluar Berasaskan Masa: Tempoh pemegangan maksimum tetap boleh menyebabkan keluar awal apabila trend yang menguntungkan belum berakhir, yang memberi kesan kepada potensi pulangan.
Penyesuaian Parameter Dinamik: Melaksanakan penyesuaian dinamik tempoh SMA, peratusan stop-loss dan mengambil keuntungan, dan masa tahan maksimum untuk menyesuaikan diri dengan kitaran pasaran dan turun naik yang berbeza.
Masukkan Penapis Tambahan: Memperkenalkan penunjuk teknikal lain (seperti RSI, MACD, dan lain-lain) sebagai syarat penapisan tambahan untuk meningkatkan ketepatan isyarat perdagangan.
Sempadan jumlah penyesuaian: Membangunkan mekanisme sempadan jumlah yang menyesuaikan secara dinamik untuk menyesuaikan diri dengan ciri-ciri jumlah dalam fasa pasaran yang berbeza.
Mekanisme Keluar yang Lebih Baik: Meneroka mekanisme keluar pintar berdasarkan struktur pasaran atau penunjuk momentum untuk menggantikan keluar masa tetap, meningkatkan kebolehsesuaian strategi.
Penyesuaian Volatiliti: Melaksanakan penyesuaian tahap stop-loss dan mengambil keuntungan yang dinamik berdasarkan turun naik pasaran untuk menguruskan risiko dan menangkap keuntungan dengan lebih baik.
Analisis Pelbagai Tempoh: Mengintegrasikan analisis data dari pelbagai kerangka masa untuk meningkatkan keupayaan strategi untuk mengenal pasti trend pasaran dan pembalikan.
Pengoptimuman pembelajaran mesin: Menggunakan algoritma pembelajaran mesin untuk mengoptimumkan parameter strategi secara dinamik, meningkatkan prestasi di pelbagai persekitaran pasaran.
/*backtest start: 2024-06-30 00:00:00 end: 2024-07-30 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Simple_CrossOver_Bot_V1_EBO", overlay=true) // INPUTS dateStart_Year = input.int(2018, title="Start Year", minval=2000) dateStart_Month = input.int(1, title="Start Month", minval=1, maxval=12) dateStart_Day = input.int(1, title="Start Day", minval=1, maxval=31) dateEnd_Year = input.int(2019, title="End Year", minval=2000) dateEnd_Month = input.int(1, title="End Month", minval=1, maxval=12) dateEnd_Day = input.int(1, title="End Day", minval=1, maxval=31) fast_SMA_input = input.int(7, title="SMA Fast") slow_SMA_input = input.int(25, title="SMA Slow") volume_SMA_input = input.int(20, title="Volume SMA") stop_loss_percent = input.float(1.0, title="Stop Loss (%)", step=0.1) / 100 take_profit_percent = input.float(2.0, title="Take Profit (%)", step=0.1) / 100 max_bars_in_trade = input.int(50, title="Max Bars in Trade", minval=1) // INDICATORS fast_SMA = ta.sma(close, fast_SMA_input) slow_SMA = ta.sma(close, slow_SMA_input) volume_SMA = ta.sma(volume, volume_SMA_input) // STRATEGY LONG = ta.crossover(fast_SMA, slow_SMA) and fast_SMA > slow_SMA and volume > volume_SMA SHORT = ta.crossunder(fast_SMA, slow_SMA) and fast_SMA < slow_SMA and volume < volume_SMA // TRIGGERS testPeriodStart = timestamp(dateStart_Year, dateStart_Month, dateStart_Day) testPeriodEnd = timestamp(dateEnd_Year, dateEnd_Month, dateEnd_Day) timecondition = true // Track bar index for entries var int long_entry_bar_index = na var int short_entry_bar_index = na if timecondition if LONG strategy.entry(id="LONG", direction=strategy.long) long_entry_bar_index := bar_index if SHORT strategy.entry(id="SHORT", direction=strategy.short) short_entry_bar_index := bar_index // Exit conditions for LONG if not na(long_entry_bar_index) and bar_index - long_entry_bar_index >= max_bars_in_trade strategy.close("LONG") long_entry_bar_index := na // Exit conditions for SHORT if not na(short_entry_bar_index) and bar_index - short_entry_bar_index >= max_bars_in_trade strategy.close("SHORT") short_entry_bar_index := na // Standard exits if LONG strategy.exit("Exit LONG", from_entry="LONG", stop=close * (1 - stop_loss_percent), limit=close * (1 + take_profit_percent)) if SHORT strategy.exit("Exit SHORT", from_entry="SHORT", stop=close * (1 + stop_loss_percent), limit=close * (1 - take_profit_percent)) // PLOTS plot(fast_SMA, color=color.green, linewidth=1, title="Fast SMA") plot(slow_SMA, color=color.yellow, linewidth=1, title="Slow SMA") plot(volume_SMA, color=color.blue, linewidth=1, title="Volume SMA") plotshape(series=LONG, location=location.belowbar, color=color.green, style=shape.labelup, text="BUY", size=size.small) plotshape(series=SHORT, location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL", size=size.small) // Uncomment the following lines for alerts // alertcondition(LONG, title="LONG") // alertcondition(SHORT, title="SHORT")