Strategi crossover rata-rata bergerak adalah strategi perdagangan yang didasarkan pada rata-rata bergerak. Ini menggunakan persilangan rata-rata bergerak cepat dan rata-rata bergerak lambat sebagai sinyal beli dan jual. Ketika MA cepat melintasi di atas MA lambat dari bawah, sinyal beli dihasilkan. Ketika MA cepat melintasi di bawah MA lambat dari atas, sinyal jual dihasilkan.
Strategi ini menggunakan fungsi sma untuk menghitung rata-rata bergerak sederhana dari periode tertentu sebagai MA cepat dan MA lambat.
Ketika MA cepat melintasi di atas MA lambat dari bawah, fungsi crossunder mendeteksi sinyal crossover dan menghasilkan sinyal beli.
Strategi ini mewujudkan perdagangan otomatis melalui sinyal trek dan sinyal keluar. entri panjang dipicu ketika MA cepat melintasi di atas MA lambat, dan entri pendek dipicu ketika MA cepat melintasi di bawah MA lambat.
Strategi MA crossover adalah strategi klasik dan sederhana yang mengikuti tren. Strategi ini terutama menggunakan MA crossover sebagai sinyal perdagangan dengan logika dan implementasi yang mudah. Strategi ini dapat disesuaikan melalui penyesuaian parameter. Namun, strategi ini juga memiliki kelemahan seperti kerentanan terhadap osilasi dan pembalikan tren, frekuensi sinyal yang tinggi, dll. Ini dapat ditingkatkan melalui filter, parameter dinamis, stop loss, dll. Strategi ini memiliki ruang dan arah optimasi yang luas, dan merupakan salah satu strategi perdagangan kuantitatif mendasar.
/*backtest start: 2023-11-15 00:00:00 end: 2023-11-17 04:00:00 period: 30m basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title = "MA Close Strategy", shorttitle = "MA Close",calc_on_order_fills=true,calc_on_every_tick =true, initial_capital=21000,commission_value=.25,overlay = true,default_qty_type = strategy.percent_of_equity, default_qty_value = 100) MASource = input(defval = open, title = "MA Source") MaLength = input(defval = 18, title = "MA Period", minval = 1) StartYear = input(2018, "Backtest Start Year") StartMonth = input(1, "Backtest Start Month") StartDay = input(1, "Backtest Start Day") UseStopLoss = input(true,"UseStopLoss") stopLoss = input(50, title = "Stop loss percentage(0.1%)") window() => time >= timestamp(StartYear, StartMonth, StartDay,00,00) ? true : false MA = sma(MASource,MaLength) plot(MA, title = "Fast MA", color = green, linewidth = 2, style = line, transp = 50) long = crossunder(MA, close) short = crossover(MA, close) if (long) strategy.entry("LongId", strategy.long, when = long) strategy.exit("ExitLong", from_entry = "LongId", when = short) if (short) strategy.entry("ShortId", strategy.short, when = short) strategy.exit("ExitShort", from_entry = "ShortId", when = long) if (UseStopLoss) strategy.exit("StopLoss", "LongId", loss = close * stopLoss / 1000 / syminfo.mintick) strategy.exit("StopLoss", "ShortId", loss = close * stopLoss / 1000 / syminfo.mintick)