
Strategi ini adalah sistem perdagangan trend-following yang berasaskan sokongan pasaran lembu. Ia menggunakan isyarat persilangan rata-rata bergerak sederhana 20-minggu (SMA) dan rata-rata bergerak indeks 21-minggu (EMA) untuk menentukan arah trend pasaran dan membuat keputusan perdagangan.
Logik teras strategi ini adalah untuk menilai trend pasaran dengan memantau hubungan kedudukan relatif antara dua garis rata 20 minggu SMA dan 21 minggu EMA. Apabila garis rata-rata jangka pendek ((20 minggu SMA) dari bawah menembusi garis rata-rata jangka panjang ((21 minggu EMA), menunjukkan bahawa pasaran mungkin membentuk trend menaik, sistem akan membuka lebih banyak kedudukan pada masa ini; apabila garis rata-rata jangka pendek dari atas jatuh, menunjukkan bahawa trend menaik mungkin berakhir, sistem akan keluar dari kedudukan kosong pada masa ini.
Strategi perdagangan tali sokongan pasaran lembu adalah sistem pengesanan trend berdasarkan teori analisis teknikal klasik. Strategi ini menangkap peluang trend jangka panjang dan jangka panjang melalui persilangan rata-rata pada tahap garis pusingan, dengan ciri-ciri yang jelas logik dan terkawal risiko. Tetapi strategi ini tidak berfungsi dengan baik di pasaran yang bergolak, dan terdapat beberapa ketinggalan. Dengan menambah petunjuk tambahan, mengoptimumkan mekanisme penangguhan kerugian dan memperbaiki pengurusan wang, strategi ini mempunyai ruang pengoptimuman yang besar.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0
// © zkdev
//@version=6
strategy(title='Demo GPT - Bull Market Support Band',
overlay=true,
default_qty_type=strategy.percent_of_equity,
default_qty_value=100,
commission_type=strategy.commission.percent,
commission_value=0.1,
slippage=3)
// -------------------------------------------------------------------------
// Compile-time timestamp constants for default date range
// (2018-01-01 00:00:00 UTC -> 1514764800000
// 2069-12-31 23:59:59 UTC -> 3155759999000)
// -------------------------------------------------------------------------
const int defaultFromDate = 1514764800000
const int defaultToDate = 3155759999000
// -------------------------------------------------------------------------
// Inputs: date range
// -------------------------------------------------------------------------
fromDate = input(title='Start Date', defval=defaultFromDate)
toDate = input(title='End Date', defval=defaultToDate)
// -------------------------------------------------------------------------
// Indicator settings & calculations
// -------------------------------------------------------------------------
smaLength = 20
emaLength = 21
source = close
sma = ta.sma(source, smaLength)
ema = ta.ema(source, emaLength)
// -------------------------------------------------------------------------
// Fetch weekly SMA & EMA
// -------------------------------------------------------------------------
outSma = request.security(syminfo.tickerid, 'W', sma, gaps=barmerge.gaps_on, lookahead=barmerge.lookahead_off)
outEma = request.security(syminfo.tickerid, 'W', ema, gaps=barmerge.gaps_on, lookahead=barmerge.lookahead_off)
// -------------------------------------------------------------------------
// Plot visuals (20w SMA, 21w EMA, fill in between)
// -------------------------------------------------------------------------
smaPlot = plot(outSma, color=color.new(color.red, 0), title='20w SMA')
emaPlot = plot(outEma, color=color.new(color.green, 0), title='21w EMA')
fill(smaPlot, emaPlot, color=color.new(color.orange, 75), fillgaps=true)
// -------------------------------------------------------------------------
// We evaluate crossover/crossunder on *every bar* and store the result
// -------------------------------------------------------------------------
crossUp = ta.crossover(outSma, outEma)
crossDown = ta.crossunder(outSma, outEma)
// -------------------------------------------------------------------------
// Trade logic: only operate within chosen date range
// Buy when outSma crosses above outEma; Sell (close) when outSma crosses below outEma
// -------------------------------------------------------------------------
inDateRange = true
if inDateRange
// If we have a crossUp event on this bar, buy (go Long)
if crossUp
strategy.entry('Long', strategy.long)
// If we have a crossDown event on this bar, sell (close Long)
if crossDown
strategy.close('Long')