Strategi ini adalah strategi crossover purata bergerak SMA yang mudah. Ia menggunakan dua purata bergerak mudah (SMA) dengan panjang yang berbeza. Apabila MA pantas melintasi di atas MA perlahan, ia memasuki kedudukan panjang. Apabila MA pantas melintasi di bawah MA perlahan, ia menutup kedudukan panjang. Panjang kedua MA boleh disesuaikan, serta tarikh permulaan dan akhir untuk backtesting.
Idea utama strategi ini adalah untuk menggunakan ciri-ciri trend purata bergerak dan ciri-ciri isyarat persilangan MA untuk perdagangan. Apabila MA pantas di atas MA perlahan, ia menunjukkan trend menaik dan kedudukan panjang harus dipegang. Apabila MA pantas di bawah MA perlahan, ia menunjukkan trend menurun dan tidak ada kedudukan yang harus dipegang.
Strategi crossover purata bergerak SMA adalah strategi trend berikut yang mudah, mudah difahami, klasik dan praktikal yang sesuai untuk dipelajari dan digunakan oleh pemula. Ia menggunakan ciri-ciri trend purata bergerak dan ciri-ciri isyarat crossover MA untuk dengan cepat menangkap perubahan dalam trend pasaran. Walau bagaimanapun, strategi ini juga mempunyai beberapa batasan dan risiko, seperti lag, perdagangan yang kerap, dan kekurangan stop-loss. Oleh itu, dalam aplikasi praktikal, ia perlu dioptimumkan dan ditingkatkan dengan sewajarnya mengikut keadaan tertentu untuk meningkatkan kestabilan dan keuntungan strategi.
/*backtest start: 2023-03-22 00:00:00 end: 2024-03-27 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © j0secyn //@version=5 strategy("MA Cross", overlay=true, margin_long=100, margin_short=100, default_qty_value=100, default_qty_type=strategy.percent_of_equity, initial_capital=10000) // === INPUT BACKTEST RANGE === fromDay = input.int(defval = 1, title = "From Day", minval = 1, maxval = 31) fromMonth = input.int(defval = 1, title = "From Month", minval = 1, maxval = 12) fromYear = input.int(defval = 2018,title = "From Year", minval = 1970) thruDay = input.int(defval = 30, title = "Thru Day", minval = 1, maxval = 31) thruMonth = input.int(defval = 9, title = "Thru Month", minval = 1, maxval = 12) thruYear = input.int(defval = 2024, title = "Thru Year", minval = 1970) slow_ma_length = input.int(defval = 100, title = "Slow MA lenght") fast_ma_length = input.int(defval = 30, title = "Fast MA lenght") // === FUNCTION EXAMPLE === start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window window() => true // === LOGIC === crossOv = ta.crossover(ta.sma(close, fast_ma_length), ta.sma(close, slow_ma_length)) crossUn = ta.crossunder(ta.sma(close, fast_ma_length), ta.sma(close, slow_ma_length)) // === EXECUTION === // strategy.entry("L", strategy.long, when = window() and crossOv) // enter long when "within window of time" AND crossover // strategy.close("L", when = window() and crossUn) // exits long when "within window of time" AND crossunder strategy.entry("L", strategy.long, when = window() and crossOv) // enter long when "within window of time" AND crossover strategy.close("L", when = window() and crossUn) // exits long when "within window of time" AND crossunder