
高低点突破戦略は,高低点識別に基づく長期変動戦略である.この戦略は,戦略の方向参数方向で,最近の一定の窓口期間の最高値突破時に多し,最近の一定の窓口期間の最低値突破時に空しを行う.
この戦略は,入力パラメータの設定によって,最も近のN根K線の最高価格と最低価格,つまり波動の高低点を参照し,方向パラメータに基づいて戦略の方向を判断する. 過剰にすると,価格が最も近のN根K線内の最高値を突破すると,ストップウィン方式で市場に出入し,価格が最も近のN根K線内の最低値を下回ると,ストップスロー方式で市場に出入し,空売りする.
さらに,この戦略は,ストップ・ロスを設定している. ポジションを開設すると,ストップ・ラインは最低価格の近くで,空白すると,ストップ・ラインは最高価格の近くで設定されている. これは,一方的な動きによってもたらされる巨大な損失を効果的に回避できる.
この戦略の最大の利点は,高低点の近くの重要な波動を捉えることができ,順番に,利益を上げることができるということです.また,ストップラインを設定することで,リスクを効果的に制御できます.
具体的には
戦略的思考が明確で,高低点を突破して入場と出場を判断する.
逆転の機会を探すために,スイングの高低を活用するのは,テクニカルアナリストの古典的なやり方です.
リスクのコントロールを目的とした Stop Loss 設定により,一方的な行動による大きな損失を回避できます.
コード構造は明確で,理解し,修正しやすい.
戦略を最適化するために異なるパラメータを入力できます.例えば,最高最低点周期数を調整します.
この戦略の主なリスクは,高低点を判断し,不正な取引を許さないことにある. 具体的リスクには,以下のものがある.
最低限点では,誤った突破が起こり,誤った入場が発生する可能性があります.
突破点の近くで,大きなストップダメージが引き起こされる可能性があります.
トレンド品種は高低を決めるのに莫大な費用がかかります.
パラメータの設定を間違えた場合も, 策略のパフォーマンスに影響する.
解決策は以下の通りです.
最適化パラメータ,最高最低点判断を調整する周期数。
ストップ・ローズを拡大する
品種特性を区別し,トレンド品種の使用を避ける.
機械学習による動的最適化パラメータ.
この戦略は以下の方向から最適化できます.
最高最低点周期数最適化:現在の固定周期数,固定モードによる過最適化を避けるために動的最適化に変えることができる.
ストップ・ストップの最適化:ATR,波動率などの指標に基づいてストップ・ストップの幅を動的に調整できます.
複数のタイムサイクルを組み合わせて:より高いタイムサイクルでトレンドを決定し,低いタイムサイクルで入場を決定する.
機械学習の強化: 潜在的高低点突破確率を予測し,効果を高めるため,神経ネットワークなどの方法を使用する.
停止損失アルゴリズムを最適化: 停止損失を保証する前提で無効な停止損失が引き起こされる状況を最小限に抑えるようにアルゴリズムを改良する.
高低点突破戦略は,全体として,非常に実用的な長線量化戦略である.高低点の近くでの反転の機会を捕獲して利益を得,止損を設定してリスクを制御し,その結果,収益を保証しながらも撤退を制御する.この戦略のパラメータ設定は柔軟で,考え方が明確で,推奨される戦略の考え方である.後には,動的最適化,機械学習などの方法を導入することで,この戦略をさらに完善することができる.
/*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)