
A estratégia é um sistema de negociação completo que combina análise de múltiplos prazos, acompanhamento de tendências e gerenciamento de posições dinâmicas. A estratégia usa a EMA como o principal indicador de tendências e o MACD como um indicador de confirmação secundário, juntamente com o ATR para controle de risco e configuração de stop loss. A singularidade da estratégia é filtrar os sinais de negociação por meio da análise de preços de quantidade em um período de 8 horas e ajustar dinamicamente o tamanho da posição de acordo com a força da tendência.
A estratégia usa uma concepção de estratificação, que inclui os seguintes componentes principais:
A estratégia, através da análise de múltiplos quadros temporais e gestão de posições dinâmicas, constrói um sistema de negociação de acompanhamento de tendências completo. A vantagem da estratégia reside na sua concepção sistematizada e no seu mecanismo de controle de risco perfeito, mas também precisa prestar atenção à adaptabilidade ao ambiente de mercado e à otimização de parâmetros.
/*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)