二重指数移動平均RSI取引戦略


作成日: 2024-01-30 15:44:11 最終変更日: 2024-01-30 15:44:11
コピー: 0 クリック数: 721
1
フォロー
1617
フォロワー

二重指数移動平均RSI取引戦略

概要

この戦略は,双指数移動平均RSI取引戦略と呼ばれる.この戦略は,双指数移動平均 ((Double EMA) と相対的に強い指数 ((RSI) を主要な取引指標として使用し,機械化取引を実現する.

戦略原則

この戦略は,最初に価格の二指数移動平均 (((MA) を計算し,その後MAに基づいてRSIを計算し,その後RSIの指数移動平均 (((Smooth)) を計算する. RSIが移動平均を突破すると買入シグナルを生成し,RSIが移動平均を突破すると売り出シグナルを生成する. 選択的に,この戦略は,最大日取引回数,取引資本額,取引期間,ストップ・ロース・ストップポイント,数値追跡ストップ・ロース・ポイントなどのパラメータをリスク管理するために設定します.

戦略的優位性

  1. 双指数移動平均を用いて,価格の変化により迅速に反応し,一部のノイズをフィルターします.
  2. 移動平均をベースにRSIを計算し,それをより安定させ,誤った取引を避ける.
  3. RSIの移動平均は,偽のブレイクをフィルターする取引信号の確認に役立ちます.
  4. 取引の最大回数を設定することで,毎日のリスクをコントロールできます.
  5. 取引資金の割合を設定し,単一の損失を過大にしないようにしてください.
  6. 取引の時間帯を設定し,重要な時間帯を回避し,流動性のリスクを制御する.
  7. ストップ・ロスのストップ・ポイントを設定して,単一の損失を制限する.
  8. ストップポイントの追跡は,浮動を固定し,撤回を減らすのに役立ちます.

戦略リスク

  1. 双指数移動平均は市場突発に反応し遅いため,ショートラインの取引機会を逃す可能性があります.
  2. RSIはデッドフォークとゴールドクロスに誘発されやすい.他の指標と組み合わせて慎重に取引する必要があります.
  3. 固定取引資金の比率は,市場の変動に対応できないため,資金活用率の不足のリスクがある.
  4. 固定式止損は,品種や市場状況によって適応するのが困難であり,早めに止損または止損するリスクがある.
  5. 追跡停止は,地震の時に頻繁に発生する可能性があります.

対策として

  1. 移動平均の周期を適切に短縮し,感度を増やす.
  2. 交差量フィルタリング信号などの他の指標と組み合わせる.
  3. 動的に調整する取引資金比率
  4. 市場変動や変化に応じてストップ・ストップの幅を調整する.
  5. ストロップ・ポイントの追跡を適正に緩和する.

戦略最適化の方向性

  1. 異なる長短周期の二次指数移動平均の組み合わせをテストし,最適なパラメータを見つけます.
  2. RSIの計算周期パラメータをテストし,金/デッドフォーク信号の信頼性を向上させる.
  3. 取引量,ブリン帯などの指標をフィルタリングする信号ノイズを追加します.
  4. 当日の終盤価格,波動率などの動的調整取引資金比率とストップ・ロスの上昇率を組み合わせた.
  5. 異なる品種特性と市場環境の最適化による追跡ストップ・メカニズム

要約する

この戦略の整体 mechanic 規則は明確で,信頼性が高く,中長線トレンド品種に適用されます.最適化すると,トレンドを追跡する機械取引戦略の基礎となり,リスクは制御可能であり,現場で効果をさらに評価する価値があります.

ストラテジーソースコード
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title='[STRATEGY][RS]DemaRSI V0', shorttitle='D', overlay=false, initial_capital=100000, currency=currency.USD)
src = input(close)
ma_length = input(21)
rsi_length = input(4)
rsi_smooth = input(4)

ma = ema(ema(src, ma_length), ma_length)
marsi = rsi(ma, rsi_length)
smooth = ema(marsi, rsi_smooth)
plot(title='M', series=marsi, color=black)
plot(title='S', series=smooth, color=red)
hline(0)
hline(50)
hline(100)

max_order_per_day = input(6)
// strategy.risk.max_intraday_filled_orders(max_order_per_day)
trade_size_as_equity_factor = input(false)
trade_size = input(type=float, defval=10000.00) * (trade_size_as_equity_factor ? strategy.equity : 1)
take_profit_in_points = input(100000)
stop_loss_in_points = input(100000)
trail_in_points = input(150)

USE_SESSION = input(true)
trade_session = input(title='Trade Session:', defval='0400-1500', confirm=false)
istradingsession = not USE_SESSION ? true : not na(time('1', trade_session))

buy_entry = istradingsession and crossover(marsi, smooth)
sel_entry = istradingsession and crossunder(marsi, smooth)

strategy.entry('buy', long=true, qty=1, when=buy_entry)
strategy.entry('sel', long=false, qty=1, when=sel_entry)

strategy.exit('buy.Exit', from_entry='buy', profit=take_profit_in_points, loss=stop_loss_in_points, trail_points=trail_in_points, trail_offset=trail_in_points)
strategy.exit('sel.Exit', from_entry='sel', profit=take_profit_in_points, loss=stop_loss_in_points, trail_points=trail_in_points, trail_offset=trail_in_points)
strategy.close_all(when=not istradingsession)