スウィングポイントブレイアウト戦略は,スウィングハイとスウィングローの識別に基づいた長期的トレンド変動戦略である.この戦略は,価格が入力パラメータによって指定された最も最近の期間の最高価格を突破するとロングポジションに入り,価格が最も最近の期間の最低価格を突破するとショートポジションに入る.
この戦略は,入力パラメータを通じて,最新のNバー
さらに,ストップ・ロスはセットされます.ロングポジションを開いた後,ストップ・ロスは最近の最低価格に近い値に設定されます.ショートポジションを開いた後,ストップ・ロスは最新の最高価格に近い値に設定されます.これはトレンド市場での大きな損失を効果的に回避します.
この戦略の最大の利点は,スウィング・ハイ・ローの周りの主要な変動と相応の利益を把握することです.ストップ・ロスを設定することでリスクも効果的に制御できます.
具体的には以下のような利点があります
戦略の論理は明確で 入口と出口はスイング・ハイ/ロー・ブレイクに基づいています
逆転の機会を特定するためにスイング・ハイ/ローを活用する.これは典型的な技術分析手法である.
リスクをコントロールし,トレンド市場の大きな損失を回避するためにストップ・ロスは設定されています.
このコードには明確な構造があり 分かりやすく 変更も容易です
ストラテジーを最適化するためにパラメータを調整できます スイング高低期を調整するなどです
この戦略の主なリスクは,不正な取引につながる,スイング高/低の不正確な識別から生じる.
スウィング・ハイ/ローの誤ったブレイクで誤ったエントリが
突破点の近くで 大きなストップ・ロスを打った
トレンドシンボルは,スイングポイントを決定するのに 大きなコストが必要になります.
パラメーターの調節が不適切であることも 戦略のパフォーマンスに影響します
解決策としては,
スイング高低期のようなパラメータを最適化します
ストップ・ロスト距離を増加させる
トレンドシンボルには使わない
機械学習を導入して パラメータを動的に最適化します
戦略は以下の方向で最適化できる:
固定値の代わりにスイング高低期を動的に最適化してオーバーフィッティングを避ける.
動的ストップ・ロスト/取利益導入 ATRと波動性に基づいて
複数のタイムフレームを組み合わせ,トレンドを定義するために高いTFを使用し,エントリーのために低いTFを使用します.
機械学習モデルを組み込み 潜在的なスイングポイントを予測し パフォーマンスを向上させる
ストップ・ロスのアルゴリズムを最適化して,不必要なヒットを避けるのに有効なストップ・ロスを維持する.
スウィングポイントブレイアウト戦略は,全体的に実践的な長期的定量戦略である.スウィングポイントの周りの逆転機会を捕獲し,リスクを制御するためにストップ損失を設定することで,引き下げを制御しながら利益を確保する.柔軟なパラメータチューニングと明確な論理により,利用に値する推奨戦略パラダイムである.ダイナミック最適化と機械学習を導入することでさらなる改善が可能である.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 4h basePeriod: 15m 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/ // © tweakerID // Long term strategy for managing a Crypto investment with Swing Trades of more than 1 day. The strategy buys with a // stop order at the Swing High price (green line) and sells with a stop order at the Swing Low price (red line). // The direction of the strategy can be adjusted in the Inputs panel. //@version=4 strategy("Swing Points Breakouts", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=10000, commission_value=0.04) direction = input(0, title = "Strategy Direction", type=input.integer, minval=-1, maxval=1) strategy.risk.allow_entry_in(direction == 0 ? strategy.direction.all : (direction < 0 ? strategy.direction.short : strategy.direction.long)) //Inputss i_SL=input(true, title="Use Swing Lo/Hi Stop Loss & Take Profit") i_SwingLow=input(10, title="Swing Low Lookback") i_SwingHigh=input(10, title="Swing High Lookback") i_reverse=input(false, "Reverse Trades") i_SLExpander=input(defval=0, step=1, title="SL Expander") //Strategy Calculations SwingLow=lowest(i_SwingLow) SwingHigh=highest(i_SwingHigh) //SL & TP Calculations bought=strategy.position_size != strategy.position_size[1] LSL=valuewhen(bought, SwingLow, 0)-((valuewhen(bought, atr(14), 0)/5)*i_SLExpander) SSL=valuewhen(bought, SwingHigh, 0)+((valuewhen(bought, atr(14), 0)/5)*i_SLExpander) islong=strategy.position_size > 0 isshort=strategy.position_size < 0 SL= islong ? LSL : isshort ? SSL : na //Entries and Exits strategy.entry("long", true, stop=i_reverse?na:SwingHigh, limit=i_reverse?SwingLow:na) strategy.entry("short", false, stop=i_reverse?na:SwingLow, limit=i_reverse?SwingHigh:na) if i_SL strategy.exit("longexit", "long", stop=LSL) strategy.exit("shortexit", "short", stop=SSL) //Plots plot(i_SL ? SL : na, color=color.red, style=plot.style_cross, title="SL") plot(SwingLow, color=color.red) plot(SwingHigh, color=color.green)