この戦略は,ブルマーケットサポートバンドをベースとしたトレンドフォローする取引システムである.主に,20週間のシンプルムービング・平均値 (SMA) と21週間の指数関数移動平均値 (EMA) の間のクロスオーバー信号を使用して,市場のトレンド方向を決定し,取引決定を行う.この戦略は,移動平均値が上向きに交差するときに長信号を生成し,下向きに交差するときに退出し,中長期のトレンド機会を把握することを目的としている.
この戦略の基本論理は,市場動向を判断するために,20週間のSMAと21週間のEMAの相対位置を監視することである.短期間の平均 (20週間のSMA) が長期間の平均 (21週間のEMA) を破ると,潜在的な上昇傾向を示し,長期のポジションエントリを誘発する.短期間の平均が長期間の平均を下回ると,上昇傾向の潜在的な終焉をシグナルし,ポジション閉鎖を誘発する.この戦略は,%_of_equityのポジション管理を使用し,取引手数料は0.1%で,スライプは3ベースポイントである.
ブルマーケットサポートバンド (Bull Market Support Band) は,古典的な技術分析理論に基づくトレンドフォローシステムである. 明確な論理と制御可能なリスクを備えた,週間のタイムフレーム移動平均クロスオーバーを通じて中長期間のトレンド機会を把握する. しかし,この戦略は市場範囲で不良なパフォーマンスを示し,いくつかの遅れを示している. 補助指標,ストップ損失最適化,および改善された資本管理の追加により,この戦略は最適化のための大きな余地がある. 十分な資本とリスク耐性を持つ投資家に適している.
/*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')