これは,ウェルズ・ワイルダーが1978年に作成したオリジナルのトレンドバランスポイントシステムで,技術取引システムにおける新しい概念 (New Concepts in Technical Trading Systems) という本に記載されているルールです.トレンドとモメンタムを識別し,強力なトレンドフォローシステムを形成するために構造化された方法でストップ/ターゲットを設定します.
主要な構成要素と規則は次のとおりです.
モメント インディケーター: N 期間の価格変化を計算し,トレンドを決定します.
長期状態: 動力が現在の期間の上と前2期間の上を上昇する.
短期状態: 動力が過去2期と現在2期にわたって低下する.
ストップ損失:前日の平均価格 ±前日の範囲
2 *前日の平均価格 - 前日の低値 (長値) または高値 (短値).
出口は入口後 止まるか ターゲット
戦略は,トレンドの特定のために直接モメンタムと,リスクを制御し,強力なトレンドフォローシステムを形成するための構造化されたストップ/ターゲットのアプローチを使用します.
他のトレンドフォロー戦略と比較して,主な利点は以下の通りです.
簡単な運動量計算で 簡単に実行できます
多期コンボフィルター 騒音
ストップ・ターゲットの構造は 堅牢だ
取引ごとに損失を制限する.
引き上げは制御できる 利益は取れる
柔軟に操作しやすい
調整可能なパラメータ
直感的でシンプルな論理です
全体的に安定性やリスク管理が良好です
しかしリスクは次のとおりです
モメント遅延は キーターンを見逃すかもしれない
パラメータ調整による性能です
音量フィルタがないので 閉じ込められる危険です
ストップ/ターゲットの設定は硬い 実践的には失敗する可能性があります
制限されたバックテスト期間で 長期的に安定性を確認する必要がある
固定サイズには動的調整がない.
制限された最適化空間,不確実なアルファ.
報酬/リスクの比率と曲線フィッティングを監視する必要があります
分析を考慮して,改善には以下の要素が含まれる可能性があります.
異なる運動量計算をテストする
音量確認を追加します.
停止/標的パラメータを最適化
機械学習を ダイナミック信号に導入する
製品と時間枠の間の強度評価
ダイナミックな位置サイズモデルの構築
最大許容可能な抽出制限を設定する
リスク管理戦略の最適化
オーバーフィッティングを防ぐため 継続的なバックテスト
概要すると,これは比較的シンプルで直接的なトレンドフォローシステムである.しかし,継続的な最適化と強度テストは,適応性を維持するための戦略の鍵である.体系的な努力によって,戦略のパフォーマンスと安定性が向上することができる.
/*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)