
Strategi ini menggunakan dua purata bergerak untuk menilai trend dan penembusan harga. Buat kosong apabila harga naik ke atas dan lebih banyak apabila harga turun ke bawah. Tetapkan stop loss exits untuk mengawal risiko.
Strategi ini mempunyai kelebihan berikut:
Strategi ini juga mempunyai risiko:
Strategi ini boleh dioptimumkan dalam beberapa aspek:
Strategi ini adalah strategi yang jelas dan mudah difahami, menggunakan sistem dua hala untuk mengenal pasti trend, menilai masa masuk harga, menyaring kebisingan untuk mencapai keuntungan yang stabil, dan terdapat ruang untuk beberapa penambahbaikan dan pengoptimuman. Secara keseluruhannya, ini adalah strategi perdagangan kuantitatif yang dapat diulang dengan nilai pertempuran sebenar.
/*backtest
start: 2023-11-13 00:00:00
end: 2023-11-20 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2018
//@version=3
strategy(title = "Noro's Shift MA Strategy v1.0", shorttitle = "Shift MA str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)
//Settings
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
per = input(3, defval = 1, minval = 1, maxval = 1000, title = "Length")
src = input(ohlc4, title = "Source")
buylevel = input(-5.0, defval = -5.0, minval = -100, maxval = 0, title = "Buy line (lime)")
selllevel = input(0.0, defval = 0.0, minval = -100, maxval = 100, title = "Sell line (red)")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")
//SMAs
sma = sma(src, per)
buy = sma * ((100 + buylevel) / 100)
sell = sma * ((100 + selllevel) / 100)
plot(buy, linewidth = 2, color = lime, title = "Buy line")
plot(sell, linewidth = 2, color = red, title = "Sell line")
//Trading
size = strategy.position_size
lot = 0.0
lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1]
if (not na(close[per])) and size == 0
strategy.entry("L", strategy.long, lot, limit = buy)
if (not na(close[per]))
strategy.entry("Close", strategy.short, 0, limit = sell)
if time > timestamp(toyear, tomonth, today, 23, 59)
strategy.close_all()