Strategi ini menghasilkan isyarat perdagangan berdasarkan persilangan antara purata bergerak pantas dan perlahan. Ia menghasilkan isyarat beli apabila purata bergerak pantas melintasi di atas purata bergerak perlahan dari bawah. Ia menghasilkan isyarat jual apabila purata bergerak pantas melintasi di bawah purata bergerak perlahan dari atas.
Strategi ini menggunakan fungsi sma untuk mengira purata bergerak pantas dan perlahan. Fast_SMA adalah purata bergerak pantas dengan panjang tempoh fast_SMA_input. Slow_SMA adalah purata bergerak perlahan dengan panjang tempoh slow_SMA_input.
Strategi ini menggunakan fungsi cross dan crossunder untuk menentukan persilangan antara purata bergerak pantas dan perlahan. Apabila purata bergerak pantas melintasi di atas purata bergerak perlahan, pembolehubah LONG adalah benar dan isyarat beli dihasilkan. Apabila purata bergerak pantas melintasi di bawah purata bergerak perlahan, pembolehubah SHORT adalah benar dan isyarat jual dihasilkan.
Strategi ini mempunyai kelebihan berikut:
Strategi ini juga mempunyai risiko berikut:
Pengurusan Risiko:
Strategi ini boleh dioptimumkan dari aspek berikut:
Strategi ini secara berkesan menjana isyarat perdagangan dengan memanfaatkan kelebihan purata bergerak. Walaupun terdapat beberapa risiko, mereka boleh ditingkatkan dengan pengoptimuman parameter, menambah penapis dll. Strategi crossover purata bergerak bernilai penyelidikan dan penerapan lanjut.
/*backtest start: 2023-10-01 00:00:00 end: 2023-10-13 00:00:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@author Jacques Grobler // // SIMPLE CROSS OVER BOT // ===================== // // This is a simple example of how to set up a strategy to go long or short // If you make any modifications or have any suggestions, let me know // When using this script, every section marked back testing should be // uncommented in order to use for back testing, same goes for using the script portion /////////////////////////////////////////////////////////////////////////////////////// //// INTRO //// ----- // BACKTESTING //@version=4 strategy(title="SimpleCrossOver_Bot_V1_Backtester", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, pyramiding=0, commission_type=strategy.commission.percent, commission_value=0.1) // SIGNALS //study(title="SimpleCrossOver_Bot_V1_Signals", overlay = true) /////////////////////////////////////////////////////////////////////////////////////// //// INPUTS //// ------ // BACKTESTING dateSart_Year = input(2018, title="Start Year", minval=2000) dateSart_Month = input(1, title="Start Month", minval=1, maxval=12) dateSart_Day = input(1, title="Start Day", minval=1, maxval=31) dateEnd_Year = input(2019, title="End Year", minval=2000) dateEnd_Month = input(1, title="End Month", minval=1, maxval=12) dateEnd_Day = input(1, title="End Day", minval=1, maxval=31) // BACKTESTING AND SIGNALS fast_SMA_input = input(7, title="SMA Fast") slow_SMA_input = input(25, title="SMA Slow") /////////////////////////////////////////////////////////////////////////////////////// //// INDICATORS //// ---------- fast_SMA = sma(close, fast_SMA_input) slow_SMA = sma(close, slow_SMA_input) /////////////////////////////////////////////////////////////////////////////////////// //// STRATEGY //// -------- LONG = cross(fast_SMA, slow_SMA) and fast_SMA > slow_SMA stratLONG() => crossover(fast_SMA, slow_SMA) SHORT = cross(fast_SMA, slow_SMA) and fast_SMA < slow_SMA stratSHORT() => crossunder(fast_SMA, slow_SMA) /////////////////////////////////////////////////////////////////////////////////////// //// TRIGGERS //// -------- // BACKTESTING testPeriodStart = timestamp(dateSart_Year, dateSart_Month, dateSart_Day, 0, 0) testPeriodStop = timestamp(dateEnd_Year, dateEnd_Month, dateEnd_Day, 0, 0) timecondition = true strategy.entry(id="LONG", long = true, when=timecondition and stratLONG()) strategy.entry(id="SHORT", long = false, when=timecondition and stratSHORT()) // SIGNALS //alertcondition(LONG, title="LONG") //alertcondition(SHORT, title="SHORT") /////////////////////////////////////////////////////////////////////////////////////// //// PLOTS //// ----- // BACKTESTING AND SIGNALS plot(fast_SMA, color=green, linewidth=1) plot(slow_SMA, color=yellow, linewidth=1) plotshape(LONG, title="LONG", style=shape.triangleup, text="LONG", location=location.belowbar, size=size.small, color=green) plotshape(SHORT, title="SHORT", style=shape.triangledown, text="SHORT", location=location.abovebar, size=size.small, color=red)