
この戦略は,移動平均の集散指数 ((MACD) と相対的な強さ指数 ((RSI) の2つの強さ指数を統合して,株価の逆転の機会を捉えるために,買入と販売条件を設定します.
快線,慢線,シグナル線を含むMACD指標を計算する. 快線と慢線が交差すると,買入シグナルとなる.
RSI指標を計算し,超買区と超売区の値を設定する. RSI指標は,超買超売状況を判断する.
MACDの金叉のデッドフォーク信号とRSIの超買超売区判断を組み合わせて,買入と売却の条件を設定します.
購入条件:MACD快線で緩やかな線を貫通して金叉を形成し,RSI指標は超売り区域から戻ったばかりで,反転信号がある.
販売条件:MACD快線の下の慢線を貫通して死叉を形成し,同時にRSI指標は超買い領域に入ると,反転信号を有する.
MACD指標は,株価の傾向と買い買いのタイミングを判断する.RSI指標は,超買い超売りの状況を判断する.この2つを組み合わせると,買い買いの精度を高めることができる.
同時に2つの指標のフィルタリング信号を使用することで,単一の指標によって発生する偽信号を避けることができます.
MACDはRSIと結合し,逆転の機会を捉えるため,逆転点の前に買い,逆転点後に売ることができます.
この戦略は,トレンドを追跡し,逆転を捕捉し,柔軟に適用できる,適度な頻度で動作します.
MACD指標は振動状況で偽信号を生じやすい.RSI指標のパラメータ設定を最適化する必要がある.そうでなければ偽信号も発生する.
株価は短期的に急激に波動し,策略を破るストップ・ロスの損失が発生する.
RSIとMACDのパラメータ設定を最適化する必要があります.そうでなければ,過剰な信号または不十分な信号が発生する可能性があります.
リアルタイムの取引は,資金管理とリスク管理を厳格に管理する必要があります.
MACDパラメータの速慢平均線設定を最適化して,最適なパラメータの組み合わせを探します.
RSIの超買超売の値を最適化して,偽信号の発生を防止する.
単一損失を抑えるために, Stop Loss メカニズムに加入する.
ブリン帯,KDJなどの他の指標を追加することも検討できます.
市場を動かすための戦略を試すことができます.
この戦略は,MACDとRSIの2つの強さ指標を同時に使用し,逆転点で買い売りし,強力な実用価値を持っています.しかし,継続的にパラメータ設定を最適化し,資金管理を厳格に行う必要があります.
/*backtest
start: 2022-11-13 00:00:00
end: 2023-11-19 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
// © sabirt
strategy(title='MACD and RSI', overlay=true, shorttitle='MACD&RSI')
//MACD Settings
fastMA = input.int(title='Fast moving average', defval=12, minval=1)
slowMA = input.int(title='Slow moving average', defval=26, minval=1)
signalLength = input.int(9, minval=1)
//RSI settings
RSIOverSold = input.int(35, minval=1)
RSIOverBought = input.int(80, minval=1)
src = close
len = input.int(14, minval=1, title='Length')
up = ta.rma(math.max(ta.change(src), 0), len)
down = ta.rma(-math.min(ta.change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - 100 / (1 + up / down)
wasOversold = rsi[0] <= RSIOverSold or rsi[1] <= RSIOverSold or rsi[2] <= RSIOverSold or rsi[3] <= RSIOverSold or rsi[4] <= RSIOverSold or rsi[5] <= RSIOverSold
wasOverbought = rsi[0] >= RSIOverBought or rsi[1] >= RSIOverBought or rsi[2] >= RSIOverBought or rsi[3] >= RSIOverBought or rsi[4] >= RSIOverBought or rsi[5] >= RSIOverBought
[currMacd, _, _] = ta.macd(close[0], fastMA, slowMA, signalLength)
[prevMacd, _, _] = ta.macd(close[1], fastMA, slowMA, signalLength)
signal = ta.ema(currMacd, signalLength)
avg_1 = math.avg(currMacd, signal)
crossoverBear = ta.cross(currMacd, signal) and currMacd < signal ? avg_1 : na
avg_2 = math.avg(currMacd, signal)
crossoverBull = ta.cross(currMacd, signal) and currMacd > signal ? avg_2 : na
strategy.entry('buy', strategy.long, when=crossoverBull and wasOversold)
strategy.close('buy', when=crossoverBear and wasOverbought)