この戦略は,RSIおよびZigZag指標に基づく15分間の暗号トレンド追跡戦略と呼ばれる. ETHUSD/TおよびBTCUSD/Tのような15分間の暗号市場のために特別に設計されている.この戦略は,過剰購入/過剰販売レベルを判断するためのRSI指標と価格のピークを検出するためのZigZag指標を組み合わせてトレンド方向を決定する.これは典型的なトレンドフォロー戦略に属している.
この戦略の主な論理は,RSIとZigZagインジケーターの両方を利用して価格トレンドを決定することである.特に,RSIインジケーターは価格が過買いか過売れているかどうかを判断する.ZigZagインジケーターは価格が有意な百分比のピークを持っているかどうかを検出する.両方のインジケーターが同時に取引信号を出すとき,我々はカウンターポジションのトレンド逆転があることを決定する.
RSI インディケーターでは,オーバーバイドラインを75で,オーバーセールラインを25で設定します. RSI が25以下から25以上に上昇すると,オーバーセールからブイシスへの逆転と考えられます. RSI が75以上から75以下に下がると,ブイシスからブイシスへの逆転を示します.
ZigZag インディケーターでは,価格のピークスロージルを百分比変化の1%に設定します.価格が幅の1%を超えるピークをすると,ZigZag 線が信号を出すでしょう.トレンド判断と組み合わせると,トレンド逆転を特定することができます.
両方の指標がシグナルを出すとき,前回のトレンドが上昇し,RSIが急上昇し,ZigZagが価格のピークを示している場合,価格はトップになっていることを決定し,ショートセールを検討することがあります.逆に,前回のトレンドが下落し,RSIが急上昇し,ZigZagが価格のピークを示している場合,価格は底を下回り,憧れを考慮することがあります.この論理を通じて,我々はトレンドに従うことができます.
この戦略の最大の利点は,2つの指標を組み合わせることで信号の質が向上することです.単一の指標は多くの偽信号を与える傾向があります.しかし,この戦略は検証のためにRSIとZigZagを使用し,多くの偽信号をフィルタリングし,勝利率を改善します.
また,柔軟なパラメータ調節も強みである.RSIとZigZagパラメータは,最良の結果を得るために異なる市場状況に応じてカスタマイズできる.これは戦略に大きな適応性をもたらします.
主なリスクは,指標からの誤った信号である.ダブルインジケーター検証にもかかわらず,高い波動性中に失敗が起こり,取引の誤りにつながる可能性がある.不適切なパラメータ設定も戦略のパフォーマンスに影響を与える.
リスクを軽減するために,適切なストップロスを確保するためにポジション保持期間を短縮することがあります. 市場特性を考慮してパラメータ最適化も非常に重要です. 異常な市場状況に直面したときに手動介入が必要かもしれません.
戦略は以下の側面から改善できます.
さらにシグナルをフィルタリングするために,KDJやMACDなどの指標を追加します.
自動パラメータ最適化のための機械学習アルゴリズムを導入し,市場の変化に適応する.
市場変動に基づいて動的保護を伴う適応性のあるストップ・ロスのメカニズムを構築する.
傾向の強みに基づいて ポジションのサイズを最適化します
代替戦略を設定して 不慣れな市場で自動的に切り替える
概要すると,これは典型的なトレンドフォロー戦略である. 基本的なアイデアは,RSIとZigZagインジケーターを組み合わせてトレンド逆転を特定することです. 利点は二重インジケーターフィルタリングを通じて信号品質の向上にあります. インジケーターの失敗のリスクは完全に考慮され,パラメータチューニング,ストップ損失最適化,ポジションサイズ化などを通じて戦略を継続的に改善する必要があります. 全体的に,これは暗号市場のための効果的なトレンド追跡ソリューションを提供します.
/*backtest start: 2024-01-22 00:00:00 end: 2024-02-21 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © SoftKill21 //@version=4 strategy("Crypto ZigZag RSI strategy 15min",overlay=true) length =input(5, title="RSI Length") overSold = input(25) overBought= input(75) p =close vrsi = rsi(p, length) var bool long = na var bool short = na long :=crossover(vrsi,overSold) short := crossunder(vrsi,overBought) var float last_open_long = na var float last_open_short = na last_open_long := long ? close : nz(last_open_long[1]) last_open_short := short ? close : nz(last_open_short[1]) entry_value =last_open_long entry_value1=last_open_short // ZZPercent = input(1, title="Minimum % Change", type=input.float) r1Level=entry_value s1Level=entry_value1 trend = 0 trend := na(trend[1]) ? 1 : trend[1] LL = 0.0 LL := na(LL[1]) ? s1Level : LL[1] HH = 0.0 HH := na(HH[1]) ?r1Level : HH[1] Pi = ZZPercent * 0.01 zigzag = float(na) if trend > 0 if r1Level >= HH HH := r1Level HH else if s1Level < HH * (1 - Pi) zigzag :=r1Level[1] trend := -1 LL := s1Level LL else if s1Level <= LL LL := s1Level LL else if r1Level > LL * (1 + Pi) zigzag := s1Level[1] trend := 1 HH := s1Level HH shortc=crossunder(trend,0) longc=crossover(trend,0) longa =input(true) shorta=input(false) if(longa) strategy.entry("long",1,when=longc) strategy.close("long",when=shortc) if(shorta) strategy.entry("short",0,when=shortc) strategy.close("long",when=longc)