
Стратегия представляет собой полную торговую систему, которая сочетает в себе анализ нескольких временных рамок, отслеживание тенденций и управление динамическими позициями. Стратегия использует EMA в качестве основного индикатора тенденций, MACD в качестве второстепенного подтверждающего индикатора, а также в сочетании с ATR для управления риском и установки стоп-лосс. Уникальность стратегии заключается в фильтрации торговых сигналов с помощью количественного анализа цены на 8-часовой временной рамке и динамической корректировке размеров позиций в зависимости от силы тенденции.
Стратегия использует многоуровневый дизайн и включает в себя следующие ключевые компоненты:
Стратегия использует анализ нескольких временных рамок и динамическое управление позициями для создания целостной системы торговли с отслеживанием тенденций. Преимущества стратегии заключаются в ее систематизированном дизайне и совершенных механизмах контроля риска, но в то же время следует обратить внимание на адаптацию к рыночной среде и оптимизацию параметров.
/*backtest
start: 2024-02-22 00:00:00
end: 2025-02-19 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/
//@version=6
strategy('Optimized Trend Strategy', overlay = true, initial_capital = 10000, default_qty_type = strategy.cash, default_qty_value = 50, commission_value = 0.1)
// 🟢 核心指標
ema7 = ta.ema(close, 7)
ema90 = ta.ema(close, 90)
atr = ta.atr(14)
[macdLine, signalLine, _] = ta.macd(close, 12, 26, 9)
// 🟢 8 小時多時間框架確認
h8Close = request.security(syminfo.tickerid, '480', close)
h8Volume = request.security(syminfo.tickerid, '480', volume)
h8Ema7 = ta.ema(h8Close, 7)
h8Signal = h8Close > h8Ema7 and h8Volume > ta.sma(h8Volume, 50)
// 🟢 動態風控
stopLoss = close - 1.5 * atr
takeProfit = close + 3 * atr
// 🟢 交易信號
longCondition = close > ema7 and ema7 > ema90 and ta.crossover(macdLine, signalLine) and h8Signal
shortCondition = close < ema7 and ema7 < ema90 and ta.crossunder(macdLine, signalLine) and h8Signal
// 🟢 倉位管理(根據趨勢強度)
trendStrength = (ema7 - ema90) / (atr / close)
var float positionSize = na
if trendStrength > 2
positionSize := strategy.equity * 0.7 / close
positionSize
else if trendStrength < 0.5
positionSize := strategy.equity * 0.3 / close
positionSize
else
positionSize := strategy.equity * 0.5 / close
positionSize
// 🟢 訂單執行
if longCondition
strategy.entry('Long', strategy.long, qty = positionSize)
strategy.exit('Long Exit', from_entry = 'Long', stop = stopLoss, limit = takeProfit)
if shortCondition
strategy.entry('Short', strategy.short, qty = positionSize)
strategy.exit('Short Exit', from_entry = 'Short', stop = stopLoss, limit = takeProfit)