
これは,均線交差と比較的強い指標 ((RSI)) を組み合わせたトレンド追跡戦略である.この戦略は,短期と長期の移動平均の交差によって市場のトレンド方向を決定し,同時にRSIを動量フィルターとして使用してトレンドの強さを確認し,取引信号の信頼性を高めます.この戦略には,リスク管理のためのパーセンテージ・ストップとストップも含まれています.
戦略は9周期と21周期のSMAを主要トレンド指標として使用する.短期平均線が長期平均線を上方,RSIが50以上であるとき,システムは多信号を生成する.短期平均線が長期平均線を下方,RSIが50未満であるとき,システムは空白信号を生成する.この設計は,取引方向が市場傾向と動量と一致することを保証する.システムは,1%のストップ・ロスと2%のストップ・ストップを設定することで,各取引のリスク・リターン・レートを制御する.
これは,構造的に整った,論理的に明確なトレンド追跡戦略である. 基本的トレンド方向を均線交差で提供し,RSIは動力の確認を提供し,リスク管理機構と連携して,完全な取引システムを形成する. いくつかの固有の限界があるものの,継続的な最適化と調整によって,この戦略は,異なる市場環境で安定したパフォーマンスを維持する見込みである.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-10 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Moving Average Crossover + RSI Strategy", overlay=true, shorttitle="MA RSI Strategy")
// --- Input Parameters ---
shortMA = input.int(9, title="Short MA Period", minval=1)
longMA = input.int(21, title="Long MA Period", minval=1)
rsiLength = input.int(14, title="RSI Length", minval=1)
rsiOverbought = input.int(70, title="RSI Overbought Level", minval=50, maxval=100)
rsiOversold = input.int(30, title="RSI Oversold Level", minval=0, maxval=50)
stopLossPercent = input.float(1, title="Stop Loss Percentage", minval=0.1, maxval=10.0) / 100
takeProfitPercent = input.float(2, title="Take Profit Percentage", minval=0.1, maxval=10.0) / 100
// --- Calculate Moving Averages ---
shortMA_value = ta.sma(close, shortMA)
longMA_value = ta.sma(close, longMA)
// --- Calculate RSI ---
rsi_value = ta.rsi(close, rsiLength)
// --- Buy and Sell Conditions ---
longCondition = ta.crossover(shortMA_value, longMA_value) and rsi_value > 50
shortCondition = ta.crossunder(shortMA_value, longMA_value) and rsi_value < 50
// --- Plot Moving Averages ---
plot(shortMA_value, color=color.blue, linewidth=2, title="Short MA")
plot(longMA_value, color=color.red, linewidth=2, title="Long MA")
// --- Plot RSI (Optional) ---
hline(rsiOverbought, "Overbought", color=color.red)
hline(rsiOversold, "Oversold", color=color.green)
plot(rsi_value, color=color.purple, title="RSI")
// --- Strategy Execution ---
if (longCondition)
strategy.entry("Long", strategy.long)
if (shortCondition)
strategy.entry("Short", strategy.short)
// --- Risk Management (Stop Loss and Take Profit) ---
longStopLoss = close * (1 - stopLossPercent)
longTakeProfit = close * (1 + takeProfitPercent)
shortStopLoss = close * (1 + stopLossPercent)
shortTakeProfit = close * (1 - takeProfitPercent)
// Set the stop loss and take profit for long and short positions
strategy.exit("Long Exit", from_entry="Long", stop=longStopLoss, limit=longTakeProfit)
strategy.exit("Short Exit", from_entry="Short", stop=shortStopLoss, limit=shortTakeProfit)