超トレンド逆転戦略

作者: リン・ハーンチャオチャン開催日:2023年12月28日15時50分35秒
タグ:

img

概要

スーパートレンド逆転戦略は,スーパートレンド指標とRSI指標を組み合わせた逆転取引戦略である.この戦略は,スーパートレンドを使用して市場のトレンドの方向性を決定し,その後,RSI指標と組み合わせて逆転機会を特定し,トレンド逆転点で取引を行う.

戦略原則

スーパートレンド逆転戦略は2つの主要部分で構成されています.

  1. 市場動向を判断するためのスーパートレンド指標

    スーパートレンド指標は,トレンド方向を決定するために,現在の価格と一定の期間の平均的な真の範囲に基づいて価格帯を計算します.価格が上部レールを破ると,それは上昇傾向であり,価格が下部レールを破ると,それは下落傾向です.

  2. 逆転を特定するRSI指標

    RSI インディケーターは,特定の期間における上下日の数を比較して,現在過買い・過売されているかどうかを判断する.スーパートレンドインディケーターと組み合わせると,トレンド逆転の機会を検出することができます.

    この戦略では,特定の変換によって,処理された RSI 曲線を得て,値線を設定します. RSI 曲線が対応する値を突破すると,買い売り信号が生成されます.

利点分析

スーパートレンド逆転戦略は,トレンドと逆転指標を組み合わせて,トレンド強度と過買い/過売現象を包括的に考慮し,より良い戦略収益を得るために,比較的良い場所でのポジションを開閉することができます.

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

  1. トレンドと逆転を組み合わせ,逆転点での取引
  2. 制御可能な抽出,よりよいリスク管理
  3. 市場に応じて調整できる大きなパラメータ最適化空間

リスク分析

スーパートレンド逆転戦略には,主に以下のようなリスクもあります.

  1. 逆転失敗リスク

    逆転信号は誤った信号であり,失敗して逆転し,損失を増やす可能性があります.

  2. パラメータ最適化リスク

    パラメータの最適化が不適切である場合,戦略が過剰に適合し,市場の変化に適応できない可能性があります.

  3. 技術指標の遅延

    すべてのテクニカルインジケーターには遅延があり 最良のエントリーポジションが欠けている可能性があります

これらのリスクに対処するために,他の指標を組み合わせ,パラメータ最適化方法を調整などにより最適化や改善することができます.

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

スーパートレンドの逆転戦略は,市場とニーズに応じて次の次元で最適化できます.

  1. スーパートレンドのパラメータを最適化し,異なる市場に適応する
  2. RSIの逆転トリガーロジックを最適化または改善する
  3. 単一の損失を制御するストップ損失戦略を追加
  4. 逆転の信頼性を決定するために他の指標を組み合わせる
  5. 偽ブレイクを避けるために取引量指標を追加する

概要

スーパートレンド逆転戦略は,トレンド取引と逆転取引の利点を組み合わせ,逆転点でポジションを開く間にトレンドに沿うことを可能にします.パラメータを継続的にテストし最適化し,リスクを適切に制御することで,この戦略は安定した戦略リターンを得ることができます.その最適化空間も非常に大きく,実際の市場状況に基づいて調整できます.


/*backtest
start: 2022-12-21 00:00:00
end: 2023-12-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3

strategy(title = "Super-Trend-reverse Strategy", overlay = true)

// Super Trend Strategy
Factor=input(2,type =float, minval=1,maxval = 100)
Pd=10 //input(10,minval=1,maxval = 100)

// ST1

UP=hlc3-(Factor*atr(Pd))

DOWN=hlc3+(Factor*atr(Pd))

// ST1.2

TrendUp=na
TrendUp:=close[1]>TrendUp[1]? max(UP,TrendUp[1]) : UP

TrendDown=na
TrendDown:=close[1]<TrendDown[1]? min(DOWN,TrendDown[1]) : UP


Trend = na
Tsl = na


Trend := close[1] > TrendDown[1] ? 1: close[1] < TrendUp[1]? -1: nz(Trend[1],1)
Tsl := Trend==1 ? TrendUp: TrendDown


/////////////// Functions for Reverse //////////////////////////////

IF(input) => (exp(2*input)-1) / (exp(2*input)+1)

//////////////////////// RSI REVERSE /////////////////////

RSI_main = input(14, title="RSI Main Period")
RSI_smooth = input(5, title="RSI Smooth Period")

//Functions
RVS(input) => (exp(2*input)-1) / (exp(2*input)+1)

//RSI Calculation
raw_RSI=0.1*(rsi(close,RSI_main)-50)
wma_RSI=wma(raw_RSI,RSI_smooth)
RVS_RSI = RVS(wma_RSI)


threshold1 = RVS_RSI < 0.8? 1 : 0
threshold2 = -0.8




RSIbuy = (RVS_RSI<threshold2)
RSIsell = (RVS_RSI > threshold1)



////////////////////// RSI REVERSE ///////////////////////

// Conditions



longCond = na
shortCond = na
longCond :=  RSIbuy and crossover(close, Tsl)  
shortCond :=  RSIsell and crossunder(close, Tsl) 


yearfrom = input(2018)
yearuntil =input(2039)
monthfrom =input(6)
monthuntil =input(12)
dayfrom=input(1)
dayuntil=input(31)



if (  longCond  and   year >= yearfrom and year <= yearuntil and month>=monthfrom and month <=monthuntil and dayofmonth>=dayfrom and dayofmonth < dayuntil) 
    strategy.entry("BUY", strategy.long, stop=close, oca_name="TREND",  comment="BUY")
    
else
    strategy.cancel(id="BUY")


if ( shortCond and  year >= yearfrom and year <= yearuntil and month>=monthfrom and month <=monthuntil and dayofmonth>=dayfrom and dayofmonth < dayuntil ) 

    strategy.close("BUY")







もっと