
A estratégia de negociação de linha de equilíbrio de preços auto-adaptáveis é uma estratégia de negociação quantitativa baseada na média móvel de Hull (HMA). A estratégia usa o cruzamento de preços com HMA para gerar sinais de compra e venda, ao mesmo tempo em que define níveis fixos de stop loss e stop loss para gerenciar riscos e ganhos. A estratégia usa o HMA de 104 ciclos como principal indicador, combinado com o cruzamento de preços para desencadear a negociação.
O núcleo da estratégia é o uso da Hull Moving Average (HMA) como principal indicador. A HMA é uma média móvel avançada, capaz de responder rapidamente às mudanças de preço, reduzindo o atraso. A lógica da estratégia é a seguinte:
A estratégia é de garantir que as posições abertas não sejam reabertas com as posições já abertas. Quando uma transação é liquidada, o sistema reinicializa o indicador, permitindo que um novo sinal de negociação entre em vigor.
A estratégia de negociação de linha de equilíbrio cruzada de preço auto-adaptável é uma estratégia de negociação quantitativa simples e eficaz. Utilizando os benefícios da média móvel de Hull, a estratégia é capaz de capturar as tendências do mercado, enquanto protege os fundos com medidas de gerenciamento de risco fixas. Embora a estratégia tenha alguns riscos potenciais, sua performance e adaptabilidade podem ser melhoradas ainda mais com otimização e melhoria contínua.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-03-23 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("SHIESTD", overlay=true)
// Function to calculate Hull Moving Average (HMA)
hma(src, length) =>
wma1 = ta.wma(src, length)
wma2 = ta.wma(src, length / 2)
hma = ta.wma(2 * wma2 - wma1, math.round(math.sqrt(length)))
hma
// Parameters
hma_length = 104
// Calculate Hull Moving Average
hma_value = hma(close, hma_length)
// Plot HMA
plot(hma_value, title="104-period Hull Moving Average", color=color.blue, linewidth=2)
// Define SL and TP values in dollars
long_sl_amount = 1.25
long_tp_amount = 37.5
short_sl_amount = 1.25
short_tp_amount = 37.5
// Number of contracts
contracts = 2
// Function to calculate SL and TP prices based on entry price and dollar amounts
long_sl_price(entry_price) =>
entry_price - long_sl_amount
long_tp_price(entry_price) =>
entry_price + long_tp_amount
short_sl_price(entry_price) =>
entry_price + short_sl_amount
short_tp_price(entry_price) =>
entry_price - short_tp_amount
// Trading conditions
price_intersects_hma = ta.crossover(close, hma_value) or ta.crossunder(close, hma_value)
// Long and Short Conditions based on price intersecting HMA
long_condition = ta.crossover(close, hma_value)
short_condition = ta.crossunder(close, hma_value)
// Track open positions
var bool long_open = false
var bool short_open = false
// Handle Long Positions
if (long_condition and not long_open)
entry_price = close
strategy.entry("Long", strategy.long, qty=contracts)
strategy.exit("Exit Long", from_entry="Long", stop=long_sl_price(entry_price), limit=long_tp_price(entry_price))
long_open := true
// Handle Short Positions
if (short_condition and not short_open)
entry_price = close
strategy.entry("Short", strategy.short, qty=contracts)
strategy.exit("Exit Short", from_entry="Short", stop=short_sl_price(entry_price), limit=short_tp_price(entry_price))
short_open := true
// Reset flags when the position is closed
if (strategy.opentrades == 0)
long_open := false
short_open := false