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

多期超トレンド 動的トレンド取引アルゴリズム

作者: リン・ハーンチャオチャン, 日付: 2025-01-06 16:38:12
タグ:ATRMTFについてエイマRSI

img

概要

この戦略は,マルチタイムフレームスーパートレンド指標に基づいた適応型トレンドフォローシステムです. 総合的なトレンド識別フレームワークを構築するために,15分,5分,2分タイムフレームからのスーパートレンド信号を統合します. 戦略は,最も活発な取引セッションでのみ動作を確保するために時間フィルターを採用し,一夜間のリスクを避けるため,1日の終わりに自動的にポジションを閉じる.

戦略の原則

基本メカニズムは,複数のタイムフレームにわたるトレンド一貫性に依存し,取引シグナルを確認します.特に:

  1. 超トレンドラインをATR期間と各タイムフレームの倍数因数を使用して計算する.
  2. トリガーシグナルは,すべての3つのタイムフレーム (スーパートレンドラインの上の価格) で上昇傾向が一致するときに購入します.
  3. 開始者は,価格が5分間のスーパートレンドラインを下回り,または取引日の終わりに達するとシグナルを販売します.
  4. タイムゾーン設定とセッションフィルター (デフォルト 09:30-15:30) を通して取引時間を制御します.

戦略 の 利点

  1. 多次元的なトレンド確認は信号の信頼性を高め 誤ったブレイクリスクを軽減します
  2. 適応性のあるスーパートレンドパラメータは,異なる市場の変動環境に戦略調整を可能にします.
  3. 厳格な時間管理メカニズムは,非効率な取引期間による干渉を排除します.
  4. 明確な視覚化インターフェイスは すべてのタイムフレームでトレンドの状態を表示します
  5. 柔軟なポジション管理システムで,パーセントベースの設定がサポートされます.

戦略リスク

  1. 取引コストを増加させるため,様々な市場で過剰な取引信号を生む可能性があります.
  2. 複数のフィルタリング条件が 利益をもたらす機会を逃す可能性があります
  3. パラメータ最適化の依存性は,異なる市場環境に調整する必要があります.
  4. 高計算複雑性は実行効率の問題につながる可能性があります.

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

  1. 超トレンドパラメータを動的に調整するための変動適応メカニズムを導入する.
  2. トレンド判断の正確性を向上させるため,ボリューム確認指標を追加します.
  3. 最適な取引セッションを自動的に識別するための 知的時間フィルタリングアルゴリズムを開発する
  4. ポジション管理アルゴリズムを最適化して より正確なリスク管理を
  5. 市場環境分類モジュールを追加し,さまざまな市場特性を対象とした差別化された戦略を実施する.

概要

この戦略は,マルチタイムフレームのトレンド分析と厳格なリスク管理メカニズムを通じて堅牢な取引システムを構築する.最適化のための余地がある一方で,そのコアロジックは堅牢で,さらなる開発とライブ取引アプリケーションに適しています.モジュール式デザインは将来の拡張のための強力な基盤を提供します.


/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-04 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Multi-Timeframe Supertrend Strategy", 
         overlay=true, 
         shorttitle="MTF Supertrend TF", 
         default_qty_type=strategy.percent_of_equity, 
         default_qty_value=100, 
         initial_capital=50000, 
         currency=currency.USD)

// === Input Parameters === //
atrPeriod = input.int(title="ATR Period", defval=10, minval=1)
factor = input.float(title="Factor", defval=3.0, step=0.1)

// === Time Filter Parameters === //
// Define the trading session using input.session
// Format: "HHMM-HHMM", e.g., "0930-1530"
sessionInput = input("0930-1530", title="Trading Session")

// Specify the timezone (e.g., "Europe/Istanbul")
// Refer to the list of supported timezones: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
timezoneInput = input.string("Europe/Istanbul", title="Timezone", tooltip="Specify a valid IANA timezone (e.g., 'Europe/Istanbul', 'America/New_York').")

// === Calculate Supertrend for Different Timeframes === //
symbol = syminfo.tickerid

// 15-Minute Supertrend
[st_15m, dir_15m] = request.security(symbol, "15", ta.supertrend(factor, atrPeriod), lookahead=barmerge.lookahead_off)

// 5-Minute Supertrend
[st_5m, dir_5m] = request.security(symbol, "5", ta.supertrend(factor, atrPeriod), lookahead=barmerge.lookahead_off)

// 2-Minute Supertrend
[st_2m, dir_2m] = request.security(symbol, "2", ta.supertrend(factor, atrPeriod), lookahead=barmerge.lookahead_off)

// === Current Timeframe Supertrend === //
[st_current, dir_current] = ta.supertrend(factor, atrPeriod)

// === Time Filter: Check if Current Bar is Within the Trading Session === //
in_session = true

// === Define Trend Directions Based on Supertrend === //
is_up_15m = close > st_15m
is_up_5m  = close > st_5m
is_up_2m  = close > st_2m
is_up_current = close > st_current

// === Buy Condition === //
buyCondition = is_up_15m and is_up_5m and is_up_2m and is_up_current and in_session and strategy.position_size == 0

// === Sell Conditions === //
// 1. Price falls below the 5-minute Supertrend during trading session
sellCondition1 = close < st_5m

// 2. End of Trading Day: Sell at the close of the trading session
is_new_day = ta.change(time("D"))
sellCondition2 = not in_session and is_new_day

// Combined Sell Condition: Only if in Position
sellSignal = (sellCondition1 and in_session) or sellCondition2
sellCondition = sellSignal and strategy.position_size > 0

// === Execute Trades === //
if (buyCondition)
    strategy.entry("Buy", strategy.long)

if (sellCondition)
    strategy.close("Buy")

// === Plot Supertrend Lines === //
// Plotting current timeframe Supertrend
plot(st_current, title="Current TF Supertrend", color=is_up_current ? color.green : color.red, linewidth=2, style=plot.style_line)

// Plotting higher timeframe Supertrend lines
plot(st_15m, title="15m Supertrend", color=is_up_15m ? color.green : color.red, linewidth=1, style=plot.style_line)
plot(st_5m, title="5m Supertrend", color=is_up_5m ? color.green : color.red, linewidth=1, style=plot.style_line)
plot(st_2m, title="2m Supertrend", color=is_up_2m ? color.green : color.red, linewidth=1, style=plot.style_line)

// === Plot Buy and Sell Signals === //
plotshape(series=buyCondition, title="Buy Signal", location=location.belowbar, 
          color=color.green, style=shape.labelup, text="BUY", size=size.small)

plotshape(series=sellCondition, title="Sell Signal", location=location.abovebar, 
          color=color.red, style=shape.labeldown, text="SELL", size=size.small)

// === Optional: Background Color to Indicate Position === //
bgcolor(strategy.position_size > 0 ? color.new(color.green, 90) : na, title="In Position Background")

// === Alerts === //
// Create alerts for Buy and Sell signals
alertcondition(buyCondition, title="Buy Alert", message="Buy signal generated by MTF Supertrend Strategy with Time Filter.")
alertcondition(sellCondition, title="Sell Alert", message="Sell signal generated by MTF Supertrend Strategy with Time Filter.")


関連性

もっと