
Strategi ini berdasarkan kepada prinsip silang antara purata bergerak pantas dan purata bergerak perlahan untuk menghasilkan isyarat perdagangan. Isyarat beli dihasilkan apabila purata bergerak pantas melintasi purata bergerak perlahan dari bawah; isyarat jual dihasilkan apabila purata bergerak pantas melintasi purata bergerak perlahan dari atas ke bawah.
Strategi ini menggunakan fungsi sma untuk mengira purata bergerak cepat dan purata bergerak perlahan. Di mana fast_SMA adalah purata bergerak cepat dengan panjang kitaran fast_SMA_input; slow_SMA adalah purata bergerak perlahan dengan panjang kitaran slow_SMA_input.
Strategi menggunakan fungsi cross dan crossunder untuk menentukan persilangan purata bergerak cepat dan purata bergerak perlahan. Apabila bergerak cepat melalui purata bergerak perlahan, pembolehubah LONG adalah benar, menghasilkan isyarat beli; apabila bergerak perlahan melalui purata bergerak cepat, pembolehubah SHORT adalah benar, menghasilkan isyarat jual.
Strategi ini mempunyai kelebihan berikut:
Strategi ini juga mempunyai risiko:
Kaedah untuk mengawal risiko:
Strategi ini boleh dioptimumkan dengan:
Strategi ini menggunakan kelebihan purata bergerak untuk menghasilkan isyarat perdagangan dengan mudah dan berkesan. Walaupun terdapat beberapa risiko, ia boleh diperbaiki dengan cara mengoptimumkan parameter, menambah syarat penapisan dan sebagainya.
/*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)