確認散布戦略は,RSI指標とAwesome Oscillator指標の二重散布信号を使用して,より信頼性の高い入場時間を決定します.価格が新しい高または新しい低を形成し,RSIとAO指標が逆の高点または低点を形成すると,散布信号を発信します.この戦略は,2つの指標を同時に散布するように要求し,それによって部分的な偽信号をフィルターして,入場効果を向上します.
この戦略は,価格の上昇とRSIとAOの指標値の間の散乱に基づいて売り買い点を判断する.具体的判断方法は以下の通りである.
多毛散乱:価格が最近の新低値を形成し,RSIとAOが最近の新高値を形成します.つまり,価格が下がり,RSIとAOが上昇し,多毛散乱信号を形成します.
空頭散乱:価格が最近の新高を形成し,RSIとAOが最近の新低を形成し,価格が上昇し,RSIとAOが低下し,空頭散乱信号を形成する.
策略は,2つの指標が同時に散乱条件を満たすように要求し,単一の指標の假散乱によってもたらされる誤信号を避ける.散乱信号が成立すると,ブリン带下軌または上軌の近くでストップダストを設定し,具体的なストップダストは下軌の上または上軌の下にある.
この戦略の利点は以下の通りです.
双指数フィルタリングは信号の信頼性を高め,単一指数の偽発散信号を回避する.
価格の変動を判断する指標の分散特性を利用し,取り戻しの可能性は低い.
散発信号は持続性があり,利益の余地がある.
重要なサポートやレジスタンス近くでストップを設定し,個々の大きな損失の可能性を減らす.
この戦略にはいくつかのリスクがあります.
ダブルフィルタリング条件が同時に成立する時間が短くなり,一部の取引機会を逃す可能性があります.
散布は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)