この戦略は,キーサポート/レジスタンス・ポイントの反転戦略と,比較的強い指数 (RSI) の指標を組み合わせて,サポート/レジスタンス・ポイントの形成時にRSIの指標信号をチェックし,潜在的なトレンド反転の機会を検出します.
この戦略は,まず,鍵となるサポート・レジスタンスレベルを計算し,すなわち,左側と左端のいくつかのK線を見て,最高価格のサポートと最低価格のレジスタンスレベルを取得する. サポート・レジスタンスレベルが形成されると,RSI指標値がオーバーバイ・オーバーセルの条件に適合するかどうかをさらにチェックする.
コード詳細は以下の通りです.
この戦略の利点は以下の通りです.
RSIは偽のブレイクをフィルターして,一時的な調整で誤った入場を防ぐことができます.
リスク管理: リスク管理に有利な,重要なサポート抵抗の近くでのストップ・ローズ設定
汎用性:異なる品種と時間周期に適用される
実行しやすい:指標とパラメータの設定が少なく,実行しやすい
低データ需要:OHLCのみが利用可能で,データ品質への要求は低い
この戦略には以下のリスクもあります.
サポートレジスタンス値の失敗リスク:市場が急激に変化する時には,元のサポートレジスタンスが突破され,戦略の失敗につながる可能性があります.このリスクを,パラメータを適切に拡張したサポートレジスタンス値の範囲を調整することによって軽減することができます.
RSIの散布リスク: 振動的な状況では,RSIが散布され,超買い超売は失効と判断されます.RSIのパラメータを適切に調整したり,RSI信号を検証するために追加の条件を追加したりできます.
ストップ・ロスは,リスクでカバーされる:トレンドの実行では,ストップ・ロスは破られ,損失が拡大する可能性がある。ストップ・ロスの距離を適切に緩めることができる。しかし,トレンドの利益とリスク管理のバランスを取る必要がある。
撤回リスク:この戦略は,一筆ずつ実行され,トレンドの逆転がうまくいかない場合,一定撤回が発生することがあります. リスク管理によって撤回を制御することができます.
この戦略は以下の点で最適化できます.
サポート抵抗位計算パラメータを最適化し,位置精度を改善する.異なる左右看数や条件フィルターを追加するなどテストすることができる.
RSIパラメータを最適化し,超買超売判断の精度を改善する.異なるRSI長さをテストし,超買超売ラインの位置をテストすることができます.
余分な検証条件を追加し,震動の状況で被套を避ける.例えば,波動率指標と組み合わせるなど.
トレーリングストップのようなダイナミックなストップ方式を導入することができる.
統計分析に基づくストップを導入し,歴史データに基づく計算によってストップ範囲を決定する.
複数のタイムサイクルを組み合わせて検証し,複数のサイクル相互確認を利用して勝利率を上げます.
この順序は,RSI戦略の統合のために,サポートレジスタンスとRSI指標を,潜在的なトレンドの逆転点を識別するために使用し,重要なポイントの位置で優越したエントリータイムを見つけます. この戦略は,サポートレジスタンスまたはRSIなどの技術指標を単独で使用するよりも,システム性と安定性を向上させることができます. パラメータとフィルタリング条件を継続的に最適化することによって,この戦略は,勝利率と収益の引き戻し比率をさらに向上させることができます. 全体的に,この戦略は,短期間のトレンドの逆転を追跡する実用的なシステムです.
/*backtest
start: 2023-09-30 00:00:00
end: 2023-10-07 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Pivot Point Reversal + RSI Strategy", shorttitle = 'PP + RSI Strategy', overlay=true)
////////////
// Inputs //
leftBars = input(3, title = 'PP - Left Bars')
rightBars = input(3, title = 'PP - Right Bars')
rsi_length = input(14, title = "RSI - Length")
rsi_long = input(70, title = "RSI - Overbought level")
rsi_short = input(30, title = "RSI - Overold level")
//////////////////
// Calculations //
// Pivot Points
swh = pivothigh(leftBars, rightBars)
swl = pivotlow(leftBars, rightBars)
// Pivot High
swh_cond = not na(swh)
hprice = 0.0
hprice := swh_cond ? swh : hprice[1]
le = false
le := swh_cond ? true : (le[1] and high > hprice ? false : le[1])
// Pivot Low
swl_cond = not na(swl)
lprice = 0.0
lprice := swl_cond ? swl : lprice[1]
se = false
se := swl_cond ? true : (se[1] and low < lprice ? false : se[1])
// RSI
rsi = rsi(close, 14)
//////////////
// STRATEGY //
if (le and rsi[rightBars] < rsi_long )
strategy.entry("PivRevLE", strategy.long, comment = "PivRSI Long", stop = hprice + syminfo.mintick)
if (se and rsi[rightBars] > rsi_short)
strategy.entry("PivRevSE", strategy.short, comment = "PivRSI Short", stop = lprice - syminfo.mintick)