サポートとレジスタンスのレベルに基づいたダイナミックな価格帯のブレイクスルー取引戦略定量システム


作成日: 2024-12-11 15:03:50 最終変更日: 2024-12-11 15:03:50
コピー: 3 クリック数: 378
1
フォロー
1617
フォロワー

サポートとレジスタンスのレベルに基づいたダイナミックな価格帯のブレイクスルー取引戦略定量システム

概要

この戦略は,価格区間突破に基づく量的な取引システムである. それは,価格区間の上下を動的に設定し,価格がこれらの重要なレベルを突破したときに取引する. この戦略の核心思想は,市場が確立された価格区間を突破したときにトレンドの機会を捉え,価格区間を動的に調整して市場の変化に適応することです.

戦略原則

戦略の動作は,次の核心機構に基づいています. まず,異なる取引品種の特徴に応じて,相応のステップを設定します. このステップは,品種価格の約1.5%に基づいて設定されます. システムは,現在の価格の上下それぞれに1つの価格区間を設定し,価格が上限を突破すると,複数の信号を触発し,下限を突破すると,空の信号を触発します.

戦略的優位性

  1. ダイナミックな適応性: 価格区間は市場の変化に合わせて自動的に調整され,戦略が異なる市場環境に適応できるようにします.
  2. トレンド・トラッキング能力が顕著である:同方向の加仓を許すことで,戦略は強いトレンドを十分に把握することができる.
  3. リスク管理が完ぺき: 明確なストップ・ロスの条件が設定され,価格が区画を下回ると自動的に平仓する.
  4. 適用幅広: 異なる取引品種に相応のステップ長パラメータを設定することにより,戦略は複数の市場に適用できます.
  5. 高計算効率: 変数の持続と高効率の計算方法が採用され,戦略がスムーズに動作することを保証する.

戦略リスク

  1. 振動市場のリスク:区間振動の市場では,しばしば偽ブレークを誘発し,連続したストップ損失を引き起こす可能性があります.
  2. 資金管理リスク:同方向の加仓は,ポジションを過度に集中させる可能性があり,単一方向のリスクの隙間を合理的に制御する必要がある.
  3. スライドポイントリスク: 激しい波動の時には,大きなスライドポイントに直面し,戦略のパフォーマンスを影響する可能性があります.
  4. パラメータの感受性: ステップ長設定の合理性は,戦略の効果に直接影響し,十分にテストする必要があります.

戦略最適化の方向性

  1. 波動率指標の導入:市場の波動率の動向に合わせてステップを調整し,戦略の適応性を向上させる.
  2. フィルタリングの強化:トレンド確認の指標を追加し,偽突破による損失を減らす.
  3. ポジション管理の改善:より細かいポジション制御メカニズムを設計し,利益とリスクをバランスさせる.
  4. オーダー実行の最適化: スマートオーダールーティングを追加し,滑り点の影響を軽減します.
  5. 時間の次元を増やす:市場の時間特性を考慮し,異なる時間帯で戦略パラメータを調整する.

要約する

これは合理的で論理的に明確なトレンド追跡戦略を設計したものです. ダイナミックな価格区間の設定と調整と柔軟なポジション管理を組み合わせることで,戦略は市場トレンドの機会を効果的に捉えることができます.

ストラテジーソースコード
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-09 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// @version=5
// 每个图表上画对应间隔的横线,自己手画吧
// 同方向追加20单,订单成交后重新计算,每个tick重新计算,变量保存1000个周期,k线结束后再处理一次订单,按照代码顺序来绘制plot
strategy("Price Level Breakout Strategy", overlay=true, pyramiding=200, calc_on_order_fills=true, calc_on_every_tick=true, max_bars_back=1000, process_orders_on_close=true, explicit_plot_zorder=true)
// var创建持久性变量,:=是更新变量,不重新声明
// 这个是全局变量
// a = array.new<string>(200)
// array.push(a, "a")
// plot(close, color = array.get(a, close > open ? 1 : 0))
string ticker = syminfo.ticker
var float step_size = 1000
// label.new(x=bar_index, y=close, text="当前品种代码: " + ticker)
// 根据定值画1.5的平行线
if ticker == "000300"
    step_size := 4000 * 0.015
if ticker == "XAUUSD"
    step_size := 3000 * 0.016
if ticker == "BTCUSD"
    step_size := 60000 * 0.015
if ticker == "SILVER"
    step_size := 50 * 0.015
if ticker == "UKOIL"
    step_size := 150 * 0.015
if ticker == "GBPUSD"
    step_size := 1.6 * 0.015
if ticker == "EURUSD"
    step_size := 1.1 * 0.015
    // 从0开始画200条间隔线
if ticker == "USDJPY"
    step_size := 100 * 0.015
var float start_value = close
var float up_number = close + step_size
var float low_number = close - step_size
// hline(3.14, title='Pi', color=color.blue, linestyle=hline.style_dotted, linewidth=2)
// plot(1)
// 当价格突破上限,产生买入信号
if close > up_number
    // 生成买入信号
    strategy.entry(id = "Buy", direction = strategy.long)
    // 更新新的价格区间
    start_value := start_value + step_size
    up_number := start_value + step_size
    low_number := start_value - step_size
    strategy.close(id = "Sell")
// 当价格跌破下限,产生卖出信号
if close < low_number
    // 生成卖出信号
    strategy.entry("Sell", strategy.short)
    // 更新新的价格区间
    start_value := start_value - step_size
    up_number := start_value + step_size
    low_number := start_value - step_size
    strategy.close(id = "Buy")