divergence 戦略の確認

作者: リン・ハーンチャオチャン,日付: 2024-01-15 15:19:56
タグ:

img

概要

確認された差異戦略は,より信頼性の高いエントリーポイントを決定するために,RSI指標と Awesome オシレーターからの二重差異信号を使用する.価格が新しい高値または低値を形成し,RSIおよびAO指標が高値または低値の逆転を形成すると,それは差異信号である.この戦略は,いくつかの誤った信号をフィルタリングし,エントリー効果を改善するために,同時に両方の指標からの差異を必要とする.

戦略原則

この戦略では,価格上昇と減少の大きさとRSIおよびAO指標の値の差に基づいて,購入・売却ポイントを判断する.具体的な判断方法は以下のとおりである.

上昇差:RSIとAOが上昇する間,価格が上昇し,RSIとAOが上昇する間,価格が下がる.これは上昇差のシグナルである.

低迷差:RSIとAOが低迷している間,価格が新高を形成する.つまりRSIとAOが下がる間,価格が上昇する.これは低迷差のシグナルである.

この戦略は,単一の指標の誤差から誤った信号を避けるために,両方の指標が同時に分散基準を満たすことを要求する.分散信号が確立されたとき,ボリンジャー帯の下または上部のレール近く,特に下部のレール上または上部のレールの下にストップ損失を設定します.

利点分析

この戦略には以下の利点があります.

  1. 二重指標のフィルタリングにより信号の信頼性が向上し,単一指標からの誤差信号は避けられる.

  2. 買取・売却ポイントを決定するために指標の差異特性を利用すると,引き下げの確率は比較的低い.

  3. 差異信号は持続可能性が高く,利益の可能性も高い.

  4. ストップ・ロスをキー・サポートやレジスタンスの近くに設定すると 個々の大きな損失の可能性が減ります

リスク分析

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

  1. ダブルフィルタリングの条件が満たされることが少なく,取引機会が失われる可能性があります.

  2. 差異は100%の信頼できる信号ではなく,個々の状況で損失が発生する可能性があります.

  3. ボリンジャー・バンドのパラメータの設定が正しくない場合,ストップ・ロスは太りすぎたり太りすぎたりする.

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

この戦略は,いくつかの方法で最適化することができます:

  1. 偏差を判断するためのサイクルパラメータを調整し,偏差信号のパラメータを最適化します.

  2. トレイリングストップやダイナミックストップ・ロスのような異なるストップ・ロスの方法をテストする.

  3. 信号の信頼性をさらに向上させるため,取引量などの他の指標によるフィルタリングを増やす.

  4. 傾向,サポート/レジスタンス,その他の要因を包括的に考慮し,差異信号の質を特定する.

概要

確認された差異戦略は,RSIとAOの二重差異信号を通じてエントリーポイントを決定する.二重フィルタリングメカニズムは,誤った信号を効果的に減少させ,収益性を高めます.戦略は,リスクを制御するための重要なレベルでストップロスを設定し,良いリスク報酬特性を有します.パラメータ最適化,シグナルフィルタリングの増加などによって,戦略の安定性と取引効果をさらに強化することができます.


/*backtest
start: 2023-12-15 00:00:00
end: 2024-01-14 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Confirmed Divergence Strategy", overlay=true)
source = close
length = input(30, minval=1)
mult = input(2.0, minval=0.001, maxval=50)
// SETTING UP VARIABLES //

src = close

// RSI //
rsiprd = input(title="RSI period",defval=14)
rv = rsi(src,rsiprd)
ob = input(title="Overbought Level",  defval=70)
os = input(title="Oversold Level",  defval=30)
lengthAO1=input(title="Awesome Short MA", defval=5, minval=1) //5 periods
lengthAO2=input(title="Awesome Long MA", defval=34, minval=1) //34 periods


//Awesome//

AO = sma((high+low)/2, lengthAO1) - sma((high+low)/2, lengthAO2)

// look back periods //
x = input(title = "short lookback period",defval=5)
z = input(title = "long lookback period",defval=25)


// END SETUP //

////////////////////////
// BULLISH DIVERGENCE //
////////////////////////

// define lower low in price //

srcLL = src > lowest(src,x) and  lowest(src,x)<lowest(src,z)[x]

// define higher low in rsi //

rsiHL = rv>lowest(rv,x) and lowest(rv,x) > lowest(rv,z)[x] and lowest(rv,z)<os

// define higher low in AO //


aoHL = AO > lowest(AO,x) and lowest(AO,x) > lowest(AO,z)[x] and lowest(AO, x) < 0



BullishDiv = srcLL and rsiHL and aoHL


////////////////////////
// BEARISH DIVERGENCE //
////////////////////////

// define higher high in price //

srcHH = src < highest(src,x) and  highest(src,x)>highest(src,z)[x]

// define lower high in RSI //

rsiLH = rv<highest(rv,x) and highest(rv,x) < highest(rv,z)[x] and highest(rv,z)>ob

// define lower high in AO //
aoLH = AO<highest(AO,x) and highest(AO,x) < highest(AO,z)[x] and highest(AO, x) > 0

BearishDiv = srcHH and rsiLH and aoLH


basis = sma(source, length)
dev = mult * stdev(source, length)

upper = basis + dev
lower = basis - dev



if (BullishDiv)
    strategy.entry("DivLE", strategy.long, stop=lower, oca_name="BullishDiv",comment="DivLE")
else
    strategy.cancel(id="DivLE")
    
if (crossover(close, lower))
    strategy.close("DivSE")
    
if (crossunder(close, upper))
    strategy.close("DivLE")

if (BearishDiv)
    strategy.entry("DivSE", strategy.short, stop=upper, oca_name="BearishDiv",comment="DivSE")
else
    strategy.cancel(id="DivSE")

//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)


もっと