極端な逆転設定戦略

作者: リン・ハーンチャオチャン開催日: 2024-02-21 14:08:09
タグ:

img

概要

極端な逆転設定戦略は,極端なK線逆転を利用する戦略である. 最新のK線と平均値のエンティティサイズに基づいて判断し,エンティティサイズが平均値よりも大きくなり逆転が発生すると取引信号を生成する.

戦略原則

この戦略は,主に現在のKラインのエンティティサイズと,Kラインの全体的なサイズを判断します.

最新Kラインのエンティティサイズ (オープンと閉鎖の差) とKラインの全体サイズ (最高と最低の差) を記録します.

次に,最後の20のK線の平均エンティティサイズとK線サイズを計算するために,平均真の範囲移動平均 (RMA) を使用します.

最新のK線が上昇し,エンティティサイズは平均エンティティサイズより大きく,全体的なKラインサイズは平均Kラインサイズの2倍以上になると,長い信号が生成されます.

逆に,最新のK線が落ちて,エンティティサイズも上記の条件を満たす場合,ショート信号が生成されます.

つまり,極端なK線が逆転すると,平均値で判断することで,取引信号が生成されます.

利点分析

この戦略の主な利点は以下の通りです.

  1. 簡単な逆転のために極端なK線特性を使用
  2. 異常値を見つけるために,エンティティサイズと全体的なKラインサイズの極端値を比較する
  3. 市場変化に適応可能な動的平均値を計算するためにRMAを使用する
  4. より信頼性の高い信号のために逆転パターンと組み合わせる

リスク分析

この戦略にはいくつかのリスクもあります:

  1. 極端なK線は必ずしも逆行しないが,実行を続けることができる
  2. パラメータの設定が正しくない場合,過度に敏感または鈍くなる可能性があります.
  3. サポートするために十分な市場の変動が必要であり,統合に適さない
  4. 頻繁に取引信号を生成し,取引コストとスリップリスクを増やす可能性があります.

リスクを減らすために,パラメータを適切に調整したり,ストップロスを制御損失に追加したりできます.

オプティマイゼーションの方向性

この戦略は,次の側面で最適化できます.

  1. 偽のブレイクを避けるために音量フィルターを追加します
  2. パラメータ設定を動的に最適化するために変動指標を使用
  3. トレンドインジケーターを組み合わせて,リバース・ロングとショートを回避する
  4. K線逆転確率を判断するための機械学習モデルを追加する
  5. ストップ損失メカニズムを追加する

概要

極端な逆転設定戦略は,最新のKラインの極端な状況を判断することによって逆転が発生すると取引信号を生成する.例外的な極端なKライン機能を使用する利点もあるが,いくつかのリスクもある.パラメータ最適化とリスク管理措置によりより良い戦略パフォーマンスを獲得することができる.


/*backtest
start: 2024-02-13 00:00:00
end: 2024-02-20 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Extreme Reversal Setup", overlay=true)

bodySize = input(defval=0.75)
barsBack = input(title="Lookback Period", type=input.integer, defval=20, minval=0)
bodyMultiplier = input(title="Bar ATR Multiplier", type=input.float, defval=2.0, minval=0)

myBodySize = abs(close - open)
averageBody = rma(myBodySize, barsBack)
myCandleSize = abs(high - low)
averageCandle = rma(myCandleSize, barsBack)

signal_long = open[1]-close[1] >= bodySize*(high[1]-low[1]) and 
   high[1]-low[1] > averageCandle*bodyMultiplier and 
   open[1]-close[1] > averageBody and close > open
signal_short = close[1]-open[1] >= bodySize*(high[1]-low[1]) and 
   high[1]-low[1] > averageCandle*bodyMultiplier and 
   close[1]-open[1] > averageBody and open > close

plotshape(signal_long, "LONG", shape.triangleup, location.belowbar, size=size.normal)
plotshape(signal_short, "SHORT", shape.triangledown, location.belowbar, size=size.normal)

strategy.entry("LONG", strategy.long, when=signal_long)
strategy.entry("SHORT", strategy.short, when=signal_short)

もっと