
この戦略は、短期指数移動平均 (EMA) クロスオーバー信号に基づく高頻度取引システムです。適応型ボラティリティ追跡メカニズムと動的なポジション管理および厳格なリスク管理を組み合わせることで、短期的な市場変動を迅速に捉えます。この戦略は 1 分や 5 分などの短い時間枠で実行され、頻繁な取引機会を求めるアクティブなトレーダーに適しています。
この戦略のコアロジックは、高速 EMA (3 期間) と低速 EMA (8 期間) のクロスオーバー信号に基づいています。高速ラインが低速ラインを下回ると、長い信号が生成され、高速ラインが低速ラインを下回ると、短い信号が生成されます。この戦略では、ATR インジケーターを使用して市場のボラティリティを測定し、それに応じてストップロスと利益目標を動的に設定します。このシステムは、固定契約数量取引と口座エクイティに基づく動的ポジション管理の 2 つのモードをサポートしています。ダイナミックポジションモードでは、各取引のリスクは口座残高の 0.5% 以内に制御されます。この戦略では、リスク報酬比率を 1.2 倍にし、移動ストップロスの追跡距離として ATR の 1.5 倍を組み合わせます。
この戦略は、短期 EMA クロスオーバー信号と動的リスク管理を組み合わせることで、完全な高頻度取引システムを構築します。この戦略の利点は、迅速な対応と厳格なリスク管理ですが、誤ったシグナルや取引コストなどの問題にも注意する必要があります。継続的な最適化とパラメータ調整により、戦略はさまざまな市場環境に適応し、取引の効率と安定性を向上させることができます。
/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-04 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("High-Frequency EMA Scalping Strategy - Adjustable Contracts", overlay=true, default_qty_type=strategy.fixed, default_qty_value=1)
// Input parameters
fastEmaLength = input.int(3, title="Fast EMA Length", minval=1)
slowEmaLength = input.int(8, title="Slow EMA Length", minval=1)
atrLength = input.int(10, title="ATR Length", minval=1)
riskRewardRatio = input.float(1.2, title="Risk/Reward Ratio", minval=1)
useDynamicPositionSizing = input.bool(false, title="Use Dynamic Position Sizing?")
fixedContracts = input.int(1, title="Number of Contracts (if Fixed)", minval=1) // Fixed number of contracts
// Calculate EMA values
fastEma = ta.ema(close, fastEmaLength)
slowEma = ta.ema(close, slowEmaLength)
// Calculate ATR for dynamic stop-loss and take-profit
atr = ta.atr(atrLength)
// Dynamic position sizing (if enabled)
capital = strategy.equity
riskPerTrade = capital * 0.005 // Risk 0.5% per trade
dynamicTradeQty = riskPerTrade / (atr * 1.5)
// Use fixed or dynamic position sizing
tradeQty = useDynamicPositionSizing ? dynamicTradeQty : fixedContracts
// Entry conditions
longCondition = ta.crossover(fastEma, slowEma)
shortCondition = ta.crossunder(fastEma, slowEma)
// Long trade execution
if longCondition
risk = atr * 1.0
reward = risk * riskRewardRatio
strategy.entry("Long", strategy.long, qty=tradeQty)
strategy.exit("Trailing Stop Long", from_entry="Long", trail_points=atr * 1.5, trail_offset=atr * 1.0)
strategy.exit("Take Profit", from_entry="Long", limit=close + reward, stop=close - risk)
// Short trade execution
if shortCondition
risk = atr * 1.0
reward = risk * riskRewardRatio
strategy.entry("Short", strategy.short, qty=tradeQty)
strategy.exit("Trailing Stop Short", from_entry="Short", trail_points=atr * 1.5, trail_offset=atr * 1.0)
strategy.exit("Take Profit", from_entry="Short", limit=close - reward, stop=close + risk)
// Plot EMA lines for reference
plot(fastEma, color=color.blue, title="Fast EMA")
plot(slowEma, color=color.red, title="Slow EMA")