この戦略は,市場への入出のタイミングを決定するために,異なるタイムフレームの移動平均値 (MA) とRSI指標のクロスオーバーパターンを利用し,長期保有を目的としています. この戦略はパラメータチューニングを通じてリアルタイム最適化が可能で,主要なインデックスへの長期投資に適しています.
この戦略の主なメカニズムは,EMA線の黄金十字と死十字を通って入口と出口点を特定することである.また,過剰購入と過剰販売条件を決定するためのRSI指標も組み込む.
購入シグナルロジックは,価格がEMA20以下とEMA50以上を横断し,黄金十字を形成し,単一EMAシステムと比較して傾向逆転をより正確に特定するのに役立ちます. 閉じる価格がオープン値と前日の低値よりも低いという追加の基準は,誤ったブレイクをさらにフィルターします.
上記の購入基準は,異なるEMA期間と量に対応する4つの購入規則を形成するために,さまざまなパラメータで構成されています.これは,トランチ購入を通じてポジションを段階的に構築し,平均コストダウンを達成することを可能にします.
出口では,戦略は,過剰購入のRSI信号を持つEMA10以上の死亡クロス;または過剰販売のRSI信号を持つEMA10以下の死亡クロスをチェックする.特定のリターンパーセントに基づいた利益採取規則も実装されている.RSIとEMAクロスオーバーを組み合わせることで,誤った信号のリスクが軽減される.
この戦略の最大の強みは,EMAのクロスでトレンド逆転点を特定し,トレンドをフォローすることを可能にする有効性にある.単一EMAシステムと比較して,ダブルEMAクロスオーバーは誤った信号を排除するのに役立ちます.さらに,RSIの使用は,過剰購入/過剰販売ゾーンに入る前に確認を追加し,取引リスクをさらに低下させます.
また,ピラミッド化と平均コスト下落の実施も利点である.このようなトランチ購入は,異なる価格レベルで量を分配し,トレンドが再開すると最大利益を確保する.また,単一の大きなエントリーポジションからリスクを分散させる.
この戦略に関連した主なリスクは以下のとおりです.
EMAの遅滞性により,急激な価格変動に反応が遅いため,ポジションを間に合うように退場することができません.ストップロスのメカニズムを追加することで,そのようなリスクを軽減するのに役立ちます.
買い入りの時間枠に制限がないことが,早期入場を招き,市場統合に巻き込まれることがあります.これは買い入りの領域を制限することによって対処できます.
ピラミッド型購入オーダーは,一方向的なブレイクリスクに対する脆弱性を作り出すために,過剰なポジションを引き起こす可能性があります. 水位パラメータを調整し,リスク制御を導入することで,そのようなリスクを軽減することができます.
この戦略は,次の分野においてさらに最適化できます.
ダウンサイドで主要なサポートレベルが破られたときに損失を削減するためにストップロスのルールを組み込む.ダウンサイドリスクを制御する.
トレーディング検証モジュールを追加して,主要なトレンド方向を確認し,全体的なトレンドが上向きに指向するときにのみトレードを入力し,反トレンドリスクを回避します.
確認前に早急なピラミッド入りを 防ぐために 買い区間の制限を厳しくする
マシン学習アルゴリズムと多因子分析を使用して 入力精度と勝利率を向上させる.
概要として,この記事は,効率を最大化するためにトランチポジション構築によってサポートされる,エントリーと出口のシグナルのためにデュアルEMAクロスオーバーとRSI指標を使用する長期的定量戦略を詳細に説明しています.論理とパラメータは,市場全体のインデックスと株式に調整され,長期的なトレンドフォローのための汎用的な戦略になります.リスク分析と強化の機会は,さらなる最適化のための参照も提供します.戦略がより洗練されたものになると,ライブ取引環境での長期保有のための堅牢なシステムとして機能すると信じています.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("EMA_zorba1", shorttitle="3 NIFTY RSI EMA", overlay=true) // Input parameters qt1 = input.int(1, title="Quantity 1", minval=1) qt2 = input.int(2, title="Quantity 2", minval=1) qt3 = input.int(3, title="Quantity 3", minval=1) qt4 = input.int(4, title="Quantity 4", minval=1) ema10 = ta.ema(close, 10) ema20 = ta.ema(close, 20) ema50 = ta.ema(close, 50) ema100 = ta.ema(close, 100) ema200 = ta.ema(close, 200) // RSI(14) condition rsi_threshold = 65 rsi_crossed_above_70 = ta.rsi(close, 14) > rsi_threshold rsi_crossed_above_70_two_days_ago = ta.rsi(close[5], 14) > rsi_threshold or ta.rsi(close[4], 14) > rsi_threshold or ta.rsi(close[3], 14) > rsi_threshold rsi_crossed_above_70_yesterday = ta.rsi(close[1], 14) > rsi_threshold // Date range filter start_date = timestamp(year=2021, month=1, day=1) end_date = timestamp(year=2024, month=1, day=1) in_date_range = true // Profit condition profit_percentage = input(1, title="Profit Percentage") // Adjust this value as needed // Pyramiding setting pyramiding = input.int(1, title="Pyramiding", minval=1, maxval=10) // Buy conditions buy_condition_1 = in_date_range and close < ema20 and close > ema50 and close < open and close < low[1] buy_condition_2 = in_date_range and close < ema50 and close > ema100 and close < open and close < low[1] buy_condition_3 = in_date_range and close < ema100 and close > ema200 and close < open and close < low[1] buy_condition_4 = in_date_range and close < ema200 and close < open and close < low[1] // Exit conditions profit_condition = strategy.position_avg_price * (1 + profit_percentage / 100) <= close exit_condition_1 = in_date_range and ((close > ema10 and ema10 > ema20 and ema10 > ema50 and ema10 > ema100 and ema10 > ema200 and close < open) and rsi_crossed_above_70_two_days_ago) and profit_condition and close < low[1] and close < low[2] exit_condition_2 = in_date_range and ((close < ema10 and close[1] > ema10 and close < close[1] and ema10 > ema20 and ema10 > ema50 and ema10 > ema100 and ema10 > ema200 and close < open) and rsi_crossed_above_70_yesterday) and profit_condition and close < low[1] and close < low[2] // Strategy logic strategy.entry("Buy1", strategy.long, qty=qt1 * pyramiding, when=buy_condition_1) strategy.entry("Buy2", strategy.long, qty=qt2 * pyramiding, when=buy_condition_2) strategy.entry("Buy3", strategy.long, qty=qt3 * pyramiding, when=buy_condition_3) strategy.entry("Buy4", strategy.long, qty=qt4 * pyramiding, when=buy_condition_4) strategy.close("Buy1", when=exit_condition_1 or exit_condition_2) strategy.close("Buy2", when=exit_condition_1 or exit_condition_2) strategy.close("Buy3", when=exit_condition_1 or exit_condition_2) strategy.close("Buy4", when=exit_condition_1 or exit_condition_2)