移動平均クロスオーバー長期および定量戦略


作成日: 2024-02-20 15:22:12 最終変更日: 2024-02-20 15:22:12
コピー: 0 クリック数: 582
1
フォロー
1617
フォロワー

移動平均クロスオーバー長期および定量戦略

概要

この戦略は,異なる周期の均線交差形状とRSI指標を利用して,市場の買い買いタイミングを判断することによって,長線保有モデルを実現します. この戦略は,パラメータを調整することによってリアルタイムに最適化することができ,大盤指数における長線投資に適用できます.

戦略原則

この戦略は,主にEMA平均の金叉,死叉で買入と売却のタイミングを判断する.また,RSI指標と組み合わせて,超買い超売り状態にあるかどうかを判断する.

具体的には,買入シグナルの判断論理は,価格がEMA20を下を通過し,EMA50上を通過して金叉を形成する時に買入する.そうすれば,トレンドの転換点をより効果的に判断することができる.さらに,閉盘価格が開盤価格より小さい,また前日の最低価格より低い条件を満たすことも必要です.これは,いくつかの偽の突破を排除することができます.

上記の購入条件を異なるパラメータに配分して,4つの購入規則を構成し,それぞれ異なる平均周期と数量 water_level に対応する.これは,ポジションを分量的に構築することによって,数量の平均分配を実現できる.

売り出しと退出については,判断条件は,価格の上部にEMA10が死叉を形成し,RSI指標がオーバーバイシグナルを示したときに売り出し;または価格下部にEMA10が死叉を形成し,RSI指標がオーバーセールを示したときに売り出しである.さらに,特定の利益率を満たす条件もチェックされている.このようにして利益をロックすることができ,同時にRSI指標と組み合わせることで,誤判の可能性を減らすことができる.

戦略的優位分析

この戦略の最大の利点は,均線の交差形状を判断して市場のターニングポイントを判断し,トレンドを追跡することです.単一均線システムと比較して,双均線交差法が偽信号をフィルターすることができます.さらに,この戦略は,RSI指標を導入し,超買い超売り領域を判断し,これは取引リスクを効果的に軽減することができます.

もう一つの利点は,パラメータ調節による分量保有の構築である.このピラミッド加仓方式は,コスト価格を常に下向きに移動させ,トレンドが発生したときに最大限の利益を得ることができる.同時に,数量の分散を実現し,単一の数のリスクを軽減する.

戦略的リスク分析

この戦略の主なリスクは

  1. 均線システムは,それ自体が遅滞に敏感であり,突発的な事件に対して間に合うように反応することができません.このことは,間に合うようにストップをすることができません.このリスクは,ストップポイントを追加することで軽減できます.

  2. このポリシーは,購入の時間帯に制限はありません.配置ミスがあれば,早めに購入し,そのため,集積区間に滞留する可能性があります.このリスクは,購入区間を制限することによって解決できます.

  3. この戦略の分量貯蔵方式は,ポジションが大きすぎて,一方的な突破を耐えられないリスクを引き起こす可能性があります.これは,水位パラメータの調整とリスク管理メカニズムの追加によって,この部分のリスクを軽減することができます.

戦略最適化の方向性

この戦略は,以下の方向から最適化できます.

  1. 価格がいくつかの重要なサポートレベルを下回ったときに,オフを停止するストップ・ストラトジーを追加することで,下行リスクを効果的に制御できます.

  2. 取引前の検証モジュールを追加し,大レベルのトレンドの方向を判断し,トレンドが上昇する時にのみポジションを設定することで,逆行取引のリスクを回避できます.

  3. 購入区間を制限し,特定の期間内でのみ加仓を行うこと,早めにポジションを開くのを避ける.

  4. 機械学習アルゴリズムを導入し,複数の要因を組み合わせて,購入のタイミングを判断することで,戦略の勝利率を高めることができます.

要約する

この記事では,長線量化戦略の考え方を詳細に紹介し,この戦略は,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)