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

2つのタイムフレームダイナミックサポート取引システム

作者: リン・ハーンチャオチャン開催日:2024年12月5日 16時44分56秒
タグ:SMAエイマ

img

概要

この戦略は,2つのタイムフレームのダイナミックサポートトレーディングシステムで,週日間のタイムフレームでSMAとEMAのクロスオーバー信号を組み合わせます.このシステムは,市場のトレンドと取引機会を識別するために移動平均値の間に形成されたサポートバンドを利用し,異なる2つのタイムフレームからのシグナル確認を通じて取引精度を向上させます.この戦略はパーセントベースのポジション管理を採用し,取引コストとスリップを考慮します.

戦略の原則

基本原理は,移動平均のクロスオーバーと2つのタイムフレームにおける相対位置のモニタリングを中心としています.

  1. 長い時間枠 (週) は20週間のSMAと21週間のEMAを使用し,短い時間枠 (毎日) は50日間のSMAと51日間のEMAを使用します.
  2. 長時間枠では,EMAがSMAを横切ると長信号が生成され,下向きの横断ではポジションが閉じる.
  3. 短時間枠では,EMAがSMAを横切り,短期EMAが長期EMAを横切ると,長期EMAが発生します.
  4. 短いタイムフレームが短いシグナルを生成したり,長いタイムフレームが下向きのクロスを示すとき,すべてのロングポジションは閉鎖されます.
  5. 戦略は,指定された時間帯内で動作し,これらの範囲外では自動的にポジションを閉じる

戦略 の 利点

  1. 多重確認メカニズム: 双重タイムフレームの確認によって誤った信号を減らす
  2. 動的サポート帯: 移動平均間のサポート帯は市場の変化に適応する.
  3. 総合的なリスク管理: 取引コストとスリップを考慮し,割合に基づくポジションサイズを考慮する
  4. 強い適応性: サポート帯は市場の変動に自動的に調整されます.
  5. 明確な運用規則: 明確な入出条件,実行しやすいバックテスト

戦略リスク

  1. 市場変動リスク: 横向市場では頻繁に誤った信号を生む可能性があります.
  2. 遅延リスク: 移動平均値には固有の遅延があり,最適なエントリーポイントが欠けている可能性があります.
  3. パラメータ敏感性: 戦略の業績は移動平均期間の選択に大きく依存する
  4. 市場環境依存: 傾向のある市場ではより良いパフォーマンスを発揮するが,非常に不安定な状況では苦労する可能性がある.
  5. ポジションサイズのリスク: 固定パーセントのポジショニングは,特定の市場条件で過度のリスクをもたらす可能性があります.

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

  1. 変動指標を組み込む: 動的ポジションサイズ化のために ATR を追加することを検討する
  2. パラメータ選択を最適化:システムのパフォーマンスを最適化するために,異なる移動平均期間のバックテスト
  3. 市場環境フィルターを追加する:不適切な市場条件をフィルターするためにトレンド強度指標を実装する
  4. ストップ・ロスのメカニズムの強化: リスク管理の改善のために,トラッキングまたは固定ストップを追加することを検討する
  5. ポジション管理を改善する: 信号強さと市場の変動に基づいてポジションサイズを動的に調整する

結論

この戦略は,異なるタイムフレームからの移動平均クロスオーバー信号を組み合わせて,比較的堅牢な取引システムを構築する.サポートバンドコンセプトを通じて市場動向を特定し,取引精度を向上させるために複数の確認メカニズムを使用する.戦略設計は,取引コスト,スリップ,時間管理を含むさまざまな実践的な取引要因を考慮する.固有のリスクが存在するものの,提案された最適化方向は戦略の安定性と収益性をさらに高めることができる.


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

//@version=5
strategy("Demo GPT - Bull Market Support Band", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_value=0.1, slippage=3)

start_date = input(timestamp("2018-01-01 00:00 +0000"), title="Start Date")
end_date = input(timestamp("2069-12-31 00:00 +0000"), title="End Date")

lsmaLength = input.int(20, title="Long SMA Length", minval=1)
lemaLength = input.int(21, title="Long EMA Length", minval=1)
customLongTimeframe = input.timeframe("W", title="Long Timeframe")  // Khung thời gian dài
ssmaLength = input.int(50, title="Short SMA Length", minval=1)
semaLength = input.int(51, title="Short EMA Length", minval=1)
customShortTimeframe = input.timeframe("D", title="Short Timeframe")  // Khung thời gian ngắn

source = close

// Tính toán SMA và EMA cho khung thời gian dài
smaLong = ta.sma(source, lsmaLength)
emaLong = ta.ema(source, lemaLength)
outSmaLong = request.security(syminfo.tickerid, customLongTimeframe, smaLong)
outEmaLong = request.security(syminfo.tickerid, customLongTimeframe, emaLong)

// Tính toán SMA và EMA cho khung thời gian ngắn
smaShort = ta.sma(source, ssmaLength)
emaShort = ta.ema(source, semaLength)
outSmaShort = request.security(syminfo.tickerid, customShortTimeframe, smaShort)
outEmaShort = request.security(syminfo.tickerid, customShortTimeframe, emaShort)

// Plot các chỉ báo trên biểu đồ
smaPlotLong = plot(outSmaLong, color=color.new(color.red, 0), title='20w SMA (Long)')
emaPlotLong = plot(outEmaLong, color=color.new(color.green, 0), title='21w EMA (Long)')
smaPlotShort = plot(outSmaShort, color=color.new(color.red, 0), title='20d SMA (Short)')
emaPlotShort = plot(outEmaShort, color=color.new(color.green, 0), title='21d EMA (Short)')

// Fill vùng giữa các đường SMA và EMA
fill(smaPlotLong, emaPlotLong, color=color.new(color.orange, 75), fillgaps=true)
fill(smaPlotShort, emaPlotShort, color=color.new(color.orange, 75), fillgaps=true)

// Điều kiện long và short cho khung thời gian dài
longConditionLong = ta.crossover(outEmaLong, outSmaLong)
shortConditionLong = ta.crossunder(outEmaLong, outSmaLong)

// Điều kiện long và short cho khung thời gian ngắn
longConditionShort = ta.crossover(outEmaShort, outSmaShort) and (outEmaShort > outEmaLong)
shortConditionShort = ta.crossunder(outEmaShort, outSmaShort) and (outEmaShort > outEmaLong) // Điều kiện short khi EMA ngắn hạn cắt xuống dưới SMA ngắn hạn và EMA ngắn hạn cao hơn EMA dài hạn

// Kiểm tra điều kiện trong khoảng thời gian được chỉ định
inDateRange = true

// Nếu khung ngắn hạn xuất hiện tín hiệu short, ưu tiên đóng tất cả các lệnh Long
if shortConditionShort and inDateRange
    strategy.close_all()

// Nếu khung dài có tín hiệu short, đóng tất cả các lệnh Long
if shortConditionLong and inDateRange
    strategy.close_all()

// Nếu khung ngắn hạn có tín hiệu long và không có tín hiệu short từ khung dài, vào lệnh Long
if longConditionShort and not shortConditionLong and not shortConditionShort and inDateRange
    strategy.entry("Long", strategy.long)

// Đóng tất cả các lệnh khi không trong khoảng thời gian được chọn
if not inDateRange
    strategy.close_all()


関連性

もっと