Strategi ini adalah sistem dagangan trend-mengikuti berdasarkan Bull Market Support Band. Ia terutamanya menggunakan isyarat silang antara Purata Bergerak Sederhana (SMA) 20 minggu dan Purata Bergerak Eksponensial (EMA) 21 minggu untuk menentukan arah trend pasaran dan membuat keputusan dagangan. Strategi ini menghasilkan isyarat panjang apabila purata bergerak melintasi ke atas dan keluar apabila mereka melintasi ke bawah, bertujuan untuk menangkap peluang trend jangka menengah hingga panjang.
Logik teras strategi ini adalah untuk memantau kedudukan relatif SMA 20 minggu dan EMA 21 minggu untuk menilai trend pasaran. Apabila purata jangka pendek (20 minggu SMA) memecahkan di atas purata jangka panjang (21-minggu EMA), ia menunjukkan peningkatan yang berpotensi, mencetuskan kemasukan kedudukan panjang. Apabila purata jangka pendek jatuh di bawah purata jangka panjang, ia menandakan kemungkinan berakhirnya trend menaik, mencetuskan penutupan kedudukan. Strategi ini menggunakan pengurusan kedudukan peratusan_of_equity, dengan komisen dagangan 0.1% dan seluncur 3 mata asas.
Strategi perdagangan Bull Market Support Band adalah sistem mengikuti trend berdasarkan teori analisis teknikal klasik. Ia menangkap peluang trend jangka menengah hingga panjang melalui persimpangan purata bergerak jangka masa mingguan, memaparkan logik yang jelas dan risiko yang boleh dikawal. Walau bagaimanapun, strategi ini berprestasi lemah di pasaran yang berbeza dan menunjukkan beberapa kelewatan. Melalui penambahan penunjuk tambahan, pengoptimuman stop-loss, dan pengurusan modal yang lebih baik, strategi ini mempunyai ruang yang signifikan untuk pengoptimuman. Ia sesuai untuk pelabur dengan modal yang besar dan toleransi risiko.
/*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')