ウェルズ・ワイルダーのトレンドバランスポイントシステム

作者: リン・ハーンチャオチャン, 日時: 2023-09-23 15:30:58
タグ:

概要

これは,ウェルズ・ワイルダーが1978年に作成したオリジナルのトレンドバランスポイントシステムで,技術取引システムにおける新しい概念 (New Concepts in Technical Trading Systems) という本に記載されているルールです.トレンドとモメンタムを識別し,強力なトレンドフォローシステムを形成するために構造化された方法でストップ/ターゲットを設定します.

戦略の論理

主要な構成要素と規則は次のとおりです.

  1. モメント インディケーター: N 期間の価格変化を計算し,トレンドを決定します.

  2. 長期状態: 動力が現在の期間の上と前2期間の上を上昇する.

  3. 短期状態: 動力が過去2期と現在2期にわたって低下する.

  4. ストップ損失:前日の平均価格 ±前日の範囲

  5. 2 *前日の平均価格 - 前日の低値 (長値) または高値 (短値).

  6. 出口は入口後 止まるか ターゲット

戦略は,トレンドの特定のために直接モメンタムと,リスクを制御し,強力なトレンドフォローシステムを形成するための構造化されたストップ/ターゲットのアプローチを使用します.

利点

他のトレンドフォロー戦略と比較して,主な利点は以下の通りです.

  1. 簡単な運動量計算で 簡単に実行できます

  2. 多期コンボフィルター 騒音

  3. ストップ・ターゲットの構造は 堅牢だ

  4. 取引ごとに損失を制限する.

  5. 引き上げは制御できる 利益は取れる

  6. 柔軟に操作しやすい

  7. 調整可能なパラメータ

  8. 直感的でシンプルな論理です

  9. 全体的に安定性やリスク管理が良好です

リスク

しかしリスクは次のとおりです

  1. モメント遅延は キーターンを見逃すかもしれない

  2. パラメータ調整による性能です

  3. 音量フィルタがないので 閉じ込められる危険です

  4. ストップ/ターゲットの設定は硬い 実践的には失敗する可能性があります

  5. 制限されたバックテスト期間で 長期的に安定性を確認する必要がある

  6. 固定サイズには動的調整がない.

  7. 制限された最適化空間,不確実なアルファ.

  8. 報酬/リスクの比率と曲線フィッティングを監視する必要があります

改良

分析を考慮して,改善には以下の要素が含まれる可能性があります.

  1. 異なる運動量計算をテストする

  2. 音量確認を追加します.

  3. 停止/標的パラメータを最適化

  4. 機械学習を ダイナミック信号に導入する

  5. 製品と時間枠の間の強度評価

  6. ダイナミックな位置サイズモデルの構築

  7. 最大許容可能な抽出制限を設定する

  8. リスク管理戦略の最適化

  9. オーバーフィッティングを防ぐため 継続的なバックテスト

結論

概要すると,これは比較的シンプルで直接的なトレンドフォローシステムである.しかし,継続的な最適化と強度テストは,適応性を維持するための戦略の鍵である.体系的な努力によって,戦略のパフォーマンスと安定性が向上することができる.


/*backtest
start: 2023-09-15 00:00:00
end: 2023-09-22 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © 2020 X-Trader.net

//@version=3
strategy("Trend Balance Point System by Welles Wilder", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital = 10000)

MomPer = input(2, "Momentum Period")

isLong = strategy.position_size > 0
isShort = strategy.position_size < 0

longTrigger = mom(close, MomPer)[1] > mom(close, MomPer)[2] and mom(close, MomPer)[1] > mom(close, MomPer)[3]
shortTrigger = mom(close, MomPer)[1] < mom(close, MomPer)[2] and mom(close, MomPer)[1] < mom(close, MomPer)[3]

longEntry = (not isLong) and longTrigger 
shortEntry = (not isShort) and shortTrigger

longStop = valuewhen(longEntry, ((high[1]+low[1]+close[1])/3 - (high[1]-low[1])), 0)
longTP = valuewhen(longEntry, (2*(high[1]+low[1]+close[1])/3 - low[1]), 0)
shortStop = valuewhen(shortEntry, ((high[1]+low[1]+close[1])/3 + (high[1]-low[1])), 0)
shortTP = valuewhen(shortEntry, (2*(high[1]+low[1]+close[1])/3 - high[1]), 0)

strategy.entry(id = "Long", long = true, when = longEntry)
strategy.exit("Exit Long", "Long", profit = longTP, loss = longStop, when = isLong) 

strategy.entry(id = "Short", long = false, when = shortEntry)
strategy.exit("Exit Short", "Short", profit = shortTP, loss = shortStop, when = isShort) 



もっと