RSI移動平均クロスオーバー戦略


作成日: 2023-10-25 11:46:49 最終変更日: 2023-10-25 11:46:49
コピー: 2 クリック数: 1164
1
フォロー
1617
フォロワー

RSI移動平均クロスオーバー戦略

概要

この戦略は,均線交差の原理を用い,RSI指標と組み合わせて,トレンドの方向を判断し,買入と売却の操作を行う.

戦略原則

この戦略は,3つの異なる周期のEMA平均線,すなわち快線,中線,および慢線を使用する. 快線上での中線通過は買入信号として判断され,快線下での中線通過は売出信号として判断される.

同時に,この戦略は,RSI指標を同時に使用して,超買超売り状況を判断する. RSIは,周期内の平均上昇と平均減少の比率によって,資産の相対的な強さを示す. RSIが設定された超買線を超えると,超買状態であると考えられる.

この戦略の条件は以下の通りです.

  1. 価格の上昇は 速線,中線,遅線で
  2. RSIで設定された超売り線

販売条件は以下の通りです.

  1. 中間線を抜ける
  2. RSIの下を通過する中線

平均線によって大トレンドの方向を判断し,RSIと組み合わせて短期的な超買い超売りの機会を検出する.この戦略は,トレンド取引と逆転取引の戦略を総合的に使用する.

優位分析

この戦略は,均線交差とRSIの指標を組み合わせて,トレンドとオーバーバイとオーバーセールを判断し,偽の突破によるいくつかのノイズ取引をフィルターすることができます. 三つの均線を使用して,トレンドの状態を比較的に明確に判断できます.

RSI指標の設定は,この戦略が,超買い超売り領域で優越した入場と出場のタイミングを掴むことを可能にします.

この戦略は,取引コストも考慮し,価格が3つの平均線を突破したときにのみ入場することで,を避けることができます.

リスク分析

この戦略は,過度に適合した再測のリスクが残ります. 市場環境の変化により,新しい市場状況にパラメータが適応しなくなる可能性があります.

この戦略は,地震の際に誤信号を発生し,損失を招く可能性があります.

RSIのパラメータの設定は,異なる市場に応じて調整する必要があります.パラメータの設定が不適切であれば,見逃したチャンスや偽の信号を生成する可能性があります.

最適化の方向

  1. 短期市場騒音による干渉を避けるために,より長い時間周期のグラフで信号を再検証することを考えることができます.

  2. 市場に入る前に,突破を待つか,均線に戻り,さらに信号を検証するために試すことができる.

  3. MACD,ブリン帯などの他の指標と組み合わせて,複数の指標の信号を組み合わせて,Entryの死亡率を向上させることができる.

  4. 機械学習アルゴリズムを使用して,最適化パラメータを補助して,戦略をより適応的にすることができます.

  5. トレンドが不確実なときに,タイムリーでストップするストップ・ストラトジーを追加することも考えられます.

要約する

この戦略は均線交差とRSI指標を統合し,トレンドを判断しながら,短期トレンド反転の機会を発見する.これは,トレンド取引と反転取引の利点を有効に活用し,長期にわたって好ましい方向に持っていながら,ショートラインの機会を捕捉することができる.この戦略には,一定の最適化余地があり,信号のさらなる検証,最適化パラメータ,ストップの追加などの手段によって,戦略をより安定して信頼性のあるものにすることができる.しかし,再測量されたフィットメントの問題に注意する必要がある.実況環境は戦略の弾力性をテストする.総合的に,この戦略は学習型戦略として一定の参照価値を有しているが,実況効果はさらに検証する必要がある.

ストラテジーソースコード
/*backtest
start: 2023-09-24 00:00:00
end: 2023-10-24 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/
// © chadsadachai

//@version=5
strategy("EMA Cross V1", overlay= true)

//rsi
length = input.int(title = "Rsi Lenght" , defval=26 , minval=1, maxval=50)
overS = input.int(title = "Rsi OVS line" , defval=30 , minval=1, maxval=40)
overB = input.int(title = "Rsi OVB line" , defval=70 , minval=1, maxval=100)
mLine = input.int(title = "Rsi Medium line" , defval=42 , minval=1, maxval=60)
price = close
vrsi = ta.rsi(price, length)
co = vrsi >= mLine and vrsi < overB 
cu = ta.crossunder(vrsi, overB)
//ema
F = input.int(title = "EMA Fast" , defval=17 , minval=1, maxval=50)
M = input.int(title = "EMA Medium" , defval=35, minval=1, maxval=100)
S = input.int(title = "EMA Slow" , defval=142, minval=1, maxval=200)
emaF = ta.ema(price , F)
emaM = ta.ema(price , M)
emaS = ta.ema(price , S)

//plot
plot(emaF , color = color.green , linewidth=1)
plot(emaM , color = color.yellow , linewidth=1)
plot(emaS , color = color.red , linewidth=1)

//Time Stamp
start = timestamp(input.int(title = "Start Year" , defval=2011 , minval=2011, maxval=2025), input.int(title = "Start Month" , defval=1 , minval=1, maxval=12), input.int(title = "Start Day" , defval=1 , minval=1, maxval=31), 0, 0)
end = timestamp(input.int(title = "End Year" , defval=2025 , minval=2011, maxval=2025), input.int(title = "End Month" , defval=1 , minval=1, maxval=12), input.int(title = "End Day" , defval=1 , minval=1, maxval=31), 0, 0)
// years = input.int(title = "Year" , defval=2018 , minval=2011, maxval=2025)
// months = input.int(title = "Month" , defval=1 , minval=1, maxval=12)
// days = input.int(title = "Day" , defval=1 , minval=1, maxval=31)

//longCondition Default
// longCondition1 = EMA_Fast >= EMA_Slow and EMA_Fast >= EMA_Medium//ta.crossover(EMA_Fast, EMA_Slow)  EMA_Fast > EMA_Slow and EMA_Medium > EMA_Slow
// longCondition3 = price >= EMA_Medium and price > EMA_Slow
// longCondition2 = vrsi >= overSold and vrsi <= overBought 

//longCondition & shortCondition ETHUSD
// 1.price > emaF > emaM > emaS
// 2.rsi overcross overS
longC1 = price > emaF and price > emaM and price > emaS 
// longC1 = ta.crossover(emaF, emaM)
longC2 = if longC1
    co
// shortC1 = EMA_Fast < EMA_Medium //and EMA_Fast < EMA_Slow and EMA_Medium < EMA_Slow //and cu
// shortC2 = overBought > vrsi //and vrsi < overBought //overSold < vrsi and vrsi < mediumLine

// exitLong Condition
// 1.price < emaF < emaM < emaS
// 2.rsi overcross mediumLine
exitLong1 = ta.crossunder(emaF, emaM) //or emaF < emaM//and price < emaM and price < emaF
exitLong2 = ta.crossunder(vrsi,mLine)
//exitLong3 = price < emaM
//strategy.entry
if time >=start and time <=end
    strategy.entry("Buy", strategy.long , when = longC1 and longC2)

// if(exitLong1 or exitLong2)
strategy.close("Buy" , when = exitLong1 or exitLong2)
    
// exitShort1 = EMA_Fast > EMA_Medium
// //exitShort2 = ta.crossover(vrsi , mediumLine) 
// exitShort2 = ta.crossunder (vrsi,mediumLine)
// strategy.close("Short" , when = exitShort1 or exitShort2)
// //shortCondition = cu


// //if (shortCondition1 and shortCondition2)
//     //strategy.entry("My Short Entry Id", strategy.short)