二重移動平均RSIインジケーターの組み合わせ反転戦略


作成日: 2023-11-10 18:01:09 最終変更日: 2023-11-10 18:01:09
コピー: 0 クリック数: 770
1
フォロー
1617
フォロワー

二重移動平均RSIインジケーターの組み合わせ反転戦略

概要

この戦略は,双均線,相対的に強い指標 ((RSI) とパラパラ線指標 ((PSAR) を組み合わせて,価格逆転点の判断を実現し,逆転点が発生したときに買入と売却の操作を行う.これは逆転取引戦略に属します.

原則

この戦略は,主に以下の技術的な指標によって価格逆転点を判断します.

  1. 二重均線: 急速移動平均線 ((MA快線) とゆっくり移動平均線 ((MA慢線) を計算する. 速線上をゆっくり移動線で通るときは多頭市場と判断し,多行する. 速線下をゆっくり移動線で通るときは空頭市場と判断し,空行する.

  2. RSI指標:RSIは,一時期の平均クローズアップと平均クローズアップの平均を計算することによって,超買い超売り状態を判断する. RSIが70より大きいときは超買い区,30より小さい時は超売り区である.

  3. PSAR指数:パラパラ線SAR指数はトレンドの判断方向である.SAR点の下は多頭市場,上は空頭市場である.

  4. ADX指標:ADXは,価格変化の方向的な強さを計算することによって,トレンドの強さを判断する.ADX値が20以上は,トレンドの状態を示し,20未満は,収束を示している.

上記の指標から判断すると,買入と売却の合図の論理は以下の通りです.

買取信号:快線でスローラインを横断し,RSIが30以下で (超売り区),SARポイントが価格上,ADXが20以上で,買取信号を発する.

売出シグナル:速線下を通過し,RSIが70より大きい (超買区),SARポイントが価格の下にあり,ADXが20より大きいと,売出シグナルを発する.

買入と売却のシグナルが発生すると,それぞれ10%のポジションで多ポジションと空ポジションを確立する.反転シグナルが効かなくなったとき,平ポジションを時宜停止する.

利点

  • 双均線を用いて大トレンドの方向を判断し,RSIやSARなどの指標を加え,誤った信号を除することで,逆転点を比較的に正確に判断することができる.

  • 複数の指標の組み合わせで判断し,単一の技術指標による誤信号を避ける.

  • ストップ・ロスの条件を設定して,リスクを効果的にコントロールできます.

  • 戦略操作はシンプルでわかりやすく,実行しやすい.

  • この戦略は,市場の変動に対応する様々な手法があり,様々な状況に適用できます.

リスクと解決

  • 双均線が空頭信号を生成するときは,行情が偽破裂が発生する可能性があり,他の指標と組み合わせて判断する必要がある.均線周期を適切に延長するか,ブリン帯の指標を加えれば,突破の真偽を判断することができる.

  • RSI指標は,パラメータが正しく設定されていないため,誤ったシグナルが生じることがあります. RSIパラメータを適切に調整すると同時に,RSI信号を確認する他の指標を追加する必要があります.

  • ADX値が20を下回ると,無方向市場での反転取引を避けるために取引を一時停止するか,ADXの周期パラメータを適切に低下させるべきである.

  • SetStringryのストップポイントが小さすぎると,無意味なストップが発生する可能性があります.市場の変動程度に応じて合理的にストップポイントを設定する必要があります.

  • 取引頻度は高すぎると考えられるが,適正に二均線周期を調整して取引頻度を低下させることができる.

最適化の方向

  • 異なる長さの周期の均線組合せをテストし,最適なパラメータを探します.

  • RSIの異なるパラメータ設定をテストし,超買超売判断を最適化します.

  • 買入信号の判断論理を豊かにするために,ブリン帯,KDJなどの他の指標を加えよう.

  • 異なる品種と市場の状況に応じて動的な止損機構を設定する.

  • ポジション管理戦略を追加し,収益がトレンドを把握できるようにする.

  • 異なるADXパラメータをテストして,トレンドの強さを最もよく判定する数値を見つけます.

  • 自動ストップモジュールが追加され,戦略が自動ストップできるようになりました.

要約する

この戦略は,二重均等線によって大方向を判断し,RSI,SARなどの指標と組み合わせて反転シグナルをフィルターし,最適化パラメータを設定した後,価格の反転点を効果的に判断し,反転前後のトレンドを捕捉することができます. リスク管理に注意し,合理的なストップ・ロスの条件を設定し,戦略をより安定させ,利益を増やすためにパラメータを最適化し続けます. 全体的に,この戦略は,交差指数と組み合わせて使用され,考え方が明確で操作が容易で,信頼性の高い反転取引戦略です.

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

//@version=2
//Based on Senpai BO 3
strategy(title="Senpai_Strat_3", shorttitle="Senpai_Strat_3", overlay=false, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
src = close

//psar
start = input(0.02)
increment = input(0.02)
maximum = input(0.2)
psar = sar(start, increment, maximum)


//ADX Init
adxlen = input(30, title="ADX Smoothing")	
dilen = input(30, title="DI Length")	
dirmov(len) =>	
	up = change(high)
	down = -change(low)
	truerange = rma(tr, len)
	plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, len) / truerange)
	minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, len) / truerange)
	[plus, minus]
	
adx(dilen, adxlen) => 	
	[plus, minus] = dirmov(dilen)
	sum = plus + minus
	adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
	[adx, plus, minus]
	
[sig, up, down] = adx(dilen, adxlen)	


// BB Init
source = close
length = input(50, minval=1)
mult = input(0.5, title="Mult Factor", minval=0.001, maxval=50)
alertLevel=input(0.1)
impulseLevel=input(0.75)
showRange = input(false, type=bool)


//RSI CODE
up1 = rma(max(change(src), 0), 14)
down1 = rma(-min(change(src), 0), 14)
rsi = down1 == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up1 / down1))


//BB CODE
basis = sma(source, length)
dev = mult * stdev(source, length)
upper = basis + dev
lower = basis - dev
bbr = source>upper?(((source-upper)/(upper-lower))/10): source<lower?(((source-lower)/(upper-lower))/10) : 0.05
bbi = bbr - nz(bbr[1]) 

//////////////////// Algo

//if (rsi>50 and n1>n2)
   //strategy.exit("Close", "Short")
  // strategy.entry("Long", strategy.long)
//if (rsi<50 and n2>n1)
   //strategy.exit("Close", "Long")
//   strategy.entry("Short", strategy.short)

//col = ma30 > ma50 > ma200 and rsi <=53?lime: ma50 < ma200  and rsi >= 60?red : silver
//short1 =  sig<18.5 and high>=upper and rsi>=70 and psar<close = 100%
//long1 = sig<18.5 and low<=lower and rsi<=30 and psar>close = 100%
short1 =  sig<18.5 and high>=upper and rsi>=70 and psar<close
long1 = sig<18.5 and low<=lower and rsi<=30 and psar>close

//Entry

long = long1[1] == 0 and long1 == 1
short = short1[1] == 0 and short1 == 1
longclose = long[3] == 1
shortclose = short[3] == 1
strategy.entry("short", strategy.short,qty = 10, when=short)
strategy.entry("long", strategy.long,qty=10, when=long)
strategy.close("long",when=longclose)
strategy.close("short",when=shortclose)



/////////////////////
///PLOT

plot(long,"long",color=green,linewidth=1)
plot(short,"short",color=red,linewidth=1)
plot(longclose,"close",color=blue,linewidth=1)
plot(shortclose,"close",color=orange,linewidth=1)


//plot(short,"short",color=red,linewidth=1)
//

//strategy.exit(id="long",qty = 100000,when=longclose)
//strategy.exit(id="short",qty = 100000,when=shortclose)

//strategy.exit(id="Stop", profit = 20, loss = 100)