この記事では,主に"ダイナミック・トレーリング・テイク・プロフィート・トレーディング・ストラテジー"と呼ばれる定量的な取引戦略を紹介しています.この戦略は,ATR指標に基づいて動的テイク・プロフィートラインを設定し,急激な利好的な価格動きの後,1〜2キャンドル以内に迅速な利益を上げ,価格が再び回転すると損失を回避します.
この戦略の取引ロジックは非常にシンプルで明確です.具体的には,次のステップを含みます:
14期SMAと28期SMAのクロスオーバーを,ロングとショートのための信号として使用する. 14期SMAが28期SMAを超えると,ロング. 14期SMAが28期SMAを下回ると,ショート.
ATR指標を計算し,それを因数で掛けると,動的取利益ポジションが得られます.例えば,ATRの長さを7に設定し,倍数を1.5にします.
ポジション方向が長ければ,高い価格とダイナミック・テイク・プロフィート・チャネル幅を足し,ロング・テイク・プロフィート・ラインを得る.ポジション方向が短ければ,ダイナミック・テイク・プロフィート・チャネル幅を低価格から引いて,ショート・テイク・プロフィート・ラインを得る.
価格がこのダイナミック・テイク・プロフィートラインを超えると,すぐに脱出するためにプロフィートをテイクします.これは突然の強い価格動きの後,1〜2バー以内に利益を得ることができます.
上記のステップを通じて,この戦略は,利益を追跡し,迅速な利益を取ることのシンプルでも効率的な効果を達成する.ATRチャネルは,利益を取りのラインのダイナミックな調整能力を提供し,新たに追加された1バー条件は,急激な有利な市場状況下でのみ利益を取りのラインが起動することを保証する.これは,利益を取ることによる早期出口を効果的に減らすことができます.
このアイデアはシンプルで明快で,理解し実行するのが簡単で,初心者が学ぶのに適しています.
ダイナミックなATRの取利益は 自動的に利益を追跡し 利益をテーブルに置くのを避けることができます
1バーの高低条件を追加すると 小さい動きで引き金を引く利益を得ることができません
ATRの長さと倍数は,利益を得る程度を調整するために調整できます.
利便性のある価格動きを捕捉するために迅速に退場することができます.
この枠組みに基づいた他のストップ・ロース/テイク・プロフィート戦略を簡単に実行できます.
この戦略にはいくつかのリスクもあります:
ATRの急激な拡大は,早期に利益を引き出す可能性があります.
市場の騒音を効果的にフィルターできないので 誤った信号が 発生する傾向があります
意思決定においてSMAクロスオーバーのみに頼る.複雑な市場状況では効果がない.
損失を効果的に制限するストップ・ロスのメカニズムがない
デフォルトパラメータはすべての製品に適合しない可能性があります.最適化が必要です.
上記のリスクを減らすために,次の側面から最適化することができます:
誤った信号を除去するために,他の指標に基づくフィルタールールを追加します.
ストップロスの戦略を追加して,取引ごとに損失を厳格に制御します.
ウォーク・フォワード・アナリティスを使ってパラメータを最適化します
異なる製品のパラメータを個別に最適化します
機械学習モデルを増やして よりスマートな意思決定をします
リスク分析に基づいて,最適化方向は主に以下の通りです.
シグナルフィルターを追加信号の後には,MACD,ボリンジャー帯などなどの指標に基づくフィルタールールを追加してノイズを避ける.
ストップ損失線を追加ストップ・ロストラインをATRまたはトレーリング・ストップに基づいて,トレード・ロスト毎のコントロールに追加します.
パラメータ最適化機械学習を使って ATR 長さや ATR マルチプリキュアなどのパラメータを最適化します
リスク調整: 異なる製品に基づくリスクパラメータを調整する
融合モデル: この戦略を機械学習と 神経ネットワークと組み合わせて 精度を向上させてください
手動による介入: 重要な瞬間に利得/ストップ損失レベルを手動でオーバーライドすることを許可する.
上記の方向での最適化により,戦略の収益性と安定性が大幅に向上することができます.
ダイナミック・テイリング・プロフィート・トレーディング・ストラテジー (Dynamic Trailing Take Profit Trading Strategy) は,非常に実用的で効率的なテイク・プロフィート・トレーディング・ストラテジーである.明確な考え方があり,わかりやすい.ダイナミック・テイク・プロフィートを通じて,強いトレンドの間,自動的に利益を追跡し,迅速に脱出することができる.一方,この戦略にはいくつかのリスクもあります.より複雑な市場環境に適応するために,シグナルフィルター,ストップ損失,パラメータの最適化などを追加することで改善することができます.全体的に,この戦略は,さらなる研究と適用に値する非常に良い枠組みを提供します.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Peter_O //@version=5 strategy("TrailingTakeProfit example", overlay=true, margin_long=100, margin_short=100, default_qty_value = 1, initial_capital = 100) longCondition = ta.crossover(ta.sma(close, 14), ta.sma(close, 28)) shortCondition = ta.crossunder(ta.sma(close, 14), ta.sma(close, 28)) if longCondition strategy.entry("Long", strategy.long, comment="long", alert_message="long") if shortCondition strategy.entry("Short", strategy.short, comment="short", alert_message="short") atr_length=input.int(7, title="ATR Length") atr_multiplier = input.float(1.5, title="ATR Multiplier") atr_multiplied = atr_multiplier * ta.atr(atr_length) ttp_top_bracket = strategy.position_size>0 ? high[1]+atr_multiplied : na ttp_bottom_bracket = strategy.position_size<0 ? low[1]-atr_multiplied : na plot(ttp_top_bracket, title="ttp_top_bracket", color=color.lime, style=plot.style_linebr, offset=1) plot(ttp_bottom_bracket, title="ttp_bottom_bracket", color=color.red, style=plot.style_linebr, offset=1) strategy.exit("closelong", from_entry="Long", limit=ttp_top_bracket, alert_message = "closelong") strategy.exit("closeshort", from_entry="Short", limit=ttp_bottom_bracket, alert_message = "closeshort") // var table alertsDisplayTable = table.new(position.top_right, 1, 5, color.black) // if barstate.islastconfirmedhistory // table.cell(alertsDisplayTable, 0, 0, "TradingConnector-compatible alerts sent", text_color=color.white) // table.cell(alertsDisplayTable, 0, 1, "at Long Entry: long", text_color=color.white) // table.cell(alertsDisplayTable, 0, 2, "at Short Entry: short", text_color=color.white) // table.cell(alertsDisplayTable, 0, 3, "at Long Exit: closelong", text_color=color.white) // table.cell(alertsDisplayTable, 0, 4, "at Short Exit: closeshort", text_color=color.white)