資源の読み込みに... 荷物...

多指標トレンドクロシング戦略: ブール市場サポートバンド取引システム

作者: リン・ハーンチャオチャン開催日:2024年12月27日14時35分53秒
タグ:SMABMSBエイマ

img

概要

この戦略は,ブルマーケットサポートバンドをベースとしたトレンドフォローする取引システムである.主に,20週間のシンプルムービング・平均値 (SMA) と21週間の指数関数移動平均値 (EMA) の間のクロスオーバー信号を使用して,市場のトレンド方向を決定し,取引決定を行う.この戦略は,移動平均値が上向きに交差するときに長信号を生成し,下向きに交差するときに退出し,中長期のトレンド機会を把握することを目的としている.

戦略の原則

この戦略の基本論理は,市場動向を判断するために,20週間のSMAと21週間のEMAの相対位置を監視することである.短期間の平均 (20週間のSMA) が長期間の平均 (21週間のEMA) を破ると,潜在的な上昇傾向を示し,長期のポジションエントリを誘発する.短期間の平均が長期間の平均を下回ると,上昇傾向の潜在的な終焉をシグナルし,ポジション閉鎖を誘発する.この戦略は,%_of_equityのポジション管理を使用し,取引手数料は0.1%で,スライプは3ベースポイントである.

戦略 の 利点

  1. 強いトレンドフォロー: 短期市場ノイズをフィルタリングし,中長期トレンド機会を把握するために,週間の移動平均クロスオーバーを使用
  2. 適正なリスク管理: 適時市場退出のために動的移動平均をストップ損失基準として使用する
  3. 科学パラメータ設定:20週および21週間のパラメータは,過度の遅延なく信号の安定性を確保する.
  4. 明確な実行論理: 入口と出口信号は明示的で,主観的な判断を排除する
  5. 柔軟な資本管理: 口座資本に基づくポジションサイズをサポートし,動的なポジション調整が可能

戦略リスク

  1. 横向市場での頻繁なクロスオーバーは,誤ったブレイクアウトと連続した損失につながる.
  2. 重要なスライプ影響: 週間のタイムフレーム取引は,実際の取引で実質的なスライプに直面する可能性があります.
  3. 遅れたエントリータイミング:移動平均クロスオーバー信号は本質的に遅れており,最適なエントリーポイントが欠けている可能性があります.
  4. ストップ・ロスの際には,移動平均のクロスオーバーのみを頼りにすると,大きなドローダウンが起こる.
  5. 高い資本要求: 週間のタイムフレーム取引にはかなりの資本と心理的な回復力が必要です

オプティマイゼーションの方向性

  1. フィルタリング インディケーターを追加:RSI,MACD などを組み込み,トレンドを確認し,信号の信頼性を向上させる
  2. ストップ・ロスのメカニズムを最適化:リスク管理を強化するためにATR指標を使用してダイナミックストップ・ロスを実施する
  3. ポジション管理を改善する: 市場の変動に基づいてポジションサイズを動的に調整する
  4. トレンドフィルタリングを追加する: 主要トレンド方向での取引に長期トレンド判断を導入する
  5. 取引の実行を強化する: スリップの影響を軽減し,戦略の安定性を向上させるために取引規則を最適化する

概要

ブルマーケットサポートバンド (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')


関連性

もっと