
Strategi ini mengikuti trend harga saham dengan mengira saluran rata-rata, membina kedudukan overhead atau kosong apabila harga menembusi saluran rata-rata.
Strategi ini mulakan dengan mengira rata-rata titik tinggi 20 hari sebagai saluran atas, rata-rata titik rendah 20 hari sebagai saluran bawah, dan mengira garis tengah saluran. Garis tengah saluran mewakili trend harga purata terkini.
Strategi ini secara keseluruhannya lebih mudah dan langsung, untuk menilai trend harga saham melalui saluran harga asas, dan merupakan jenis strategi yang mengikuti trend. Kelebihannya adalah mudah beroperasi, memanfaatkan peluang pelaburan yang dibawa oleh trend harga, untuk mengelakkan dana dikunci. Kelemahannya adalah parameter yang tidak betul mungkin mempengaruhi kesannya, dan terdapat risiko ujian penyesuaian tertentu. Dengan pengoptimuman yang munasabah, anda boleh meningkatkan kestabilan strategi dan meningkatkan prestasi saham sebenar.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
//future strategy
//strategy(title = "stub", default_qty_type = strategy.fixed, default_qty_value = 1, overlay = true, commission_type=strategy.commission.cash_per_contract,commission_value=2)
//stock strategy
strategy(title = "dc", default_qty_type = strategy.percent_of_equity, default_qty_value = 20, overlay = true, commission_type=strategy.commission.cash_per_contract,commission_value=.005)
//forex strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 20, overlay = true)
//crypto strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 20, overlay = true, commission_type=strategy.commission.percent,commission_value=.25,default_qty_value=20)
testStartYear = input(2000, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testEndYear = input(2019, "Backtest Start Year")
testEndMonth = input(3)
testEndDay = input(31, "Backtest Start Day")
testPeriodEnd = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testPeriod() =>
true
//time >= testPeriodStart ? true : false
dcPeriod = 20
dcUpper = highest(close, dcPeriod)[1]
dcLower = lowest(close, dcPeriod)[1]
dcAverage = (dcUpper + dcLower) / 2
plot(dcLower, style=line, linewidth=3, color=red, offset=1)
plot(dcUpper, style=line, linewidth=3, color=aqua, offset=1)
plot(dcAverage, color=black, style=line, linewidth=3, title="Mid-Line Average")
strategy.entry("simpleBuy", strategy.long, when=close > dcAverage)
strategy.close("simpleBuy",when=close < dcLower)
strategy.entry("simpleSell", strategy.short,when=close < dcAverage)
strategy.close("simpleSell",when=close > dcAverage)