確認された差異戦略は,より信頼性の高いエントリーポイントを決定するために,RSI指標と Awesome オシレーターからの二重差異信号を使用する.価格が新しい高値または低値を形成し,RSIおよびAO指標が高値または低値の逆転を形成すると,それは差異信号である.この戦略は,いくつかの誤った信号をフィルタリングし,エントリー効果を改善するために,同時に両方の指標からの差異を必要とする.
この戦略では,価格上昇と減少の大きさとRSIおよびAO指標の値の差に基づいて,購入・売却ポイントを判断する.具体的な判断方法は以下のとおりである.
上昇差:RSIとAOが上昇する間,価格が上昇し,RSIとAOが上昇する間,価格が下がる.これは上昇差のシグナルである.
低迷差:RSIとAOが低迷している間,価格が新高を形成する.つまりRSIとAOが下がる間,価格が上昇する.これは低迷差のシグナルである.
この戦略は,単一の指標の誤差から誤った信号を避けるために,両方の指標が同時に分散基準を満たすことを要求する.分散信号が確立されたとき,ボリンジャー帯の下または上部のレール近く,特に下部のレール上または上部のレールの下にストップ損失を設定します.
この戦略には以下の利点があります.
二重指標のフィルタリングにより信号の信頼性が向上し,単一指標からの誤差信号は避けられる.
買取・売却ポイントを決定するために指標の差異特性を利用すると,引き下げの確率は比較的低い.
差異信号は持続可能性が高く,利益の可能性も高い.
ストップ・ロスをキー・サポートやレジスタンスの近くに設定すると 個々の大きな損失の可能性が減ります
この戦略にはいくつかのリスクもあります:
ダブルフィルタリングの条件が満たされることが少なく,取引機会が失われる可能性があります.
差異は100%の信頼できる信号ではなく,個々の状況で損失が発生する可能性があります.
ボリンジャー・バンドのパラメータの設定が正しくない場合,ストップ・ロスは太りすぎたり太りすぎたりする.
この戦略は,いくつかの方法で最適化することができます:
偏差を判断するためのサイクルパラメータを調整し,偏差信号のパラメータを最適化します.
トレイリングストップやダイナミックストップ・ロスのような異なるストップ・ロスの方法をテストする.
信号の信頼性をさらに向上させるため,取引量などの他の指標によるフィルタリングを増やす.
傾向,サポート/レジスタンス,その他の要因を包括的に考慮し,差異信号の質を特定する.
確認された差異戦略は,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)