
この戦略は,ウィリアム指数 (%R),移動平均トレンド指数 (MACD),指数移動平均 (EMA) に基づく複数の指標の組み合わせの戦略である.市場の過剰買い過剰売り状態を判断し,動量指数の変化傾向と均線のサポートを組み合わせて,完全なトレンド追跡取引システムを構築する.この戦略は,入場シグナルの生成だけでなく,完全なリスク管理機構も設計している.
戦略は以下の3つのコア指標の協調に基づいています.
戦略は上記の3つの条件を同時に満たす場合にのみポジションを開きます. さらに,戦略は,リスク/利益比に基づくストップ・ストップ・損失機構を組み込み,固定されたストップ・損失パーセントとリスク/利益比を設定することによって,各取引のリスクを制御します.
この戦略は,複数の技術指標の協同配合によって,より完善なトレンド追跡取引システムを構築している.戦略の主な特徴は,信号の信頼性が高く,リスク管理が明確であるが,一定の遅れやパラメータの感受性の問題もある.推奨された最適化の方向によって,戦略は,さらに向上する余地がある.实体的なアプリケーションでは,最初に,パラメータの組み合わせを十分に検証し,市場特性に合わせてターゲットに最適化することを推奨している.
/*backtest
start: 2025-02-19 00:00:00
end: 2025-02-23 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/
//@version=5
strategy("Williams %R & MACD Swing Strategy", overlay=true)
// INPUTS
length_wpr = input(14, title="Williams %R Length")
overbought = input(-20, title="Overbought Level")
oversold = input(-80, title="Oversold Level")
// MACD Inputs
fastLength = input(12, title="MACD Fast Length")
slowLength = input(26, title="MACD Slow Length")
signalSmoothing = input(9, title="MACD Signal Smoothing")
// EMA for Trend Confirmation
ema_length = input(55, title="EMA Length")
ema55 = ta.ema(close, ema_length)
// INDICATORS
wpr = ta.wpr(length_wpr)
[macdLine, signalLine, _] = ta.macd(close, fastLength, slowLength, signalSmoothing)
// LONG ENTRY CONDITIONS
longCondition = ta.crossover(wpr, oversold) and ta.crossover(macdLine, signalLine) and close > ema55
if longCondition
strategy.entry("Long", strategy.long)
// SHORT ENTRY CONDITIONS
shortCondition = ta.crossunder(wpr, overbought) and ta.crossunder(macdLine, signalLine) and close < ema55
if shortCondition
strategy.entry("Short", strategy.short)
// RISK MANAGEMENT
riskRewardRatio = input(1.5, title="Risk-Reward Ratio")
stopLossPerc = input(2, title="Stop Loss %") / 100
takeProfitPerc = stopLossPerc * riskRewardRatio
longSL = strategy.position_avg_price * (1 - stopLossPerc)
longTP = strategy.position_avg_price * (1 + takeProfitPerc)
shortSL = strategy.position_avg_price * (1 + stopLossPerc)
shortTP = strategy.position_avg_price * (1 - takeProfitPerc)
strategy.exit("Take Profit / Stop Loss", from_entry="Long", loss=longSL, profit=longTP)
strategy.exit("Take Profit / Stop Loss", from_entry="Short", loss=shortSL, profit=shortTP)