Strategi crossover purata bergerak adalah strategi perdagangan berdasarkan purata bergerak. Ia menggunakan persilangan purata bergerak pantas dan purata bergerak perlahan sebagai isyarat beli dan jual. Apabila MA pantas melintasi di atas MA perlahan dari bawah, isyarat beli dihasilkan. Apabila MA pantas melintasi di bawah MA perlahan dari atas, isyarat jual dihasilkan.
Strategi ini menggunakan fungsi sma untuk mengira purata bergerak mudah untuk tempoh tertentu seperti MA pantas dan MA perlahan. Tempoh MA pantas lalai adalah 18 hari, yang boleh diselaraskan melalui parameter.
Apabila MA pantas melintasi di atas MA perlahan dari bawah, fungsi crossunder mengesan isyarat crossover dan menghasilkan isyarat beli. Apabila MA pantas melintasi di bawah MA perlahan dari atas, fungsi crossover mengesan isyarat crossover dan menghasilkan isyarat jual.
Strategi ini merealisasikan perdagangan automatik melalui isyarat trek dan isyarat keluar. Masuk panjang mencetuskan apabila MA pantas melintasi di atas MA perlahan, dan masuk pendek mencetuskan apabila MA pantas melintasi di bawah MA perlahan. Isyarat keluar yang sepadan juga dihasilkan pada persimpangan terbalik.
Strategi crossover MA adalah strategi trend-mengikuti klasik dan mudah. Ia terutamanya menggunakan crossover MA sebagai isyarat perdagangan dengan logik dan pelaksanaan yang mudah. Ia boleh disesuaikan melalui penyesuaian parameter. Tetapi ia juga mempunyai kelemahan seperti kerentanan terhadap turun naik dan pembalikan trend, kekerapan isyarat yang tinggi dan lain-lain. Ini boleh dipertingkatkan melalui penapis, parameter dinamik, stop loss dan lain-lain. Strategi ini mempunyai ruang pengoptimuman dan arah yang luas, dan merupakan salah satu strategi perdagangan kuantitatif asas.
/*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)