A estratégia é projetada para capturar tendências de câmbio de curto prazo, usando EMAs cruzadas e RSI como sinais de negociação, e em combinação com o filtro ADX para entrar em campo, adotando um método de stop loss de seguimento de tendências para bloquear os lucros. A estratégia é válida para todos os pares de moedas, mas é aplicada principalmente ao gráfico de 1 hora dos principais pares de moedas.
A estratégia baseia-se nos seguintes indicadores e condições para criar sinais de negociação:
A entrada de um negócio:
O que é que aconteceu?
A estratégia centraliza o uso de median crossover, RSI overbought e ADX indicadores de julgamento de tendências, formando um mecanismo de entrada mais rigoroso, que pode ser seguido após a geração de tendências, rastrear o stop loss para bloquear os lucros, para efetivamente capturar a tendência de curto prazo.
A estratégia tem as seguintes vantagens:
Usando a EMA como base para determinar a tendência, a linha rápida para cima cruza a linha lenta para entrar em uma tendência de baixa, e a linha rápida para baixo cruza a tendência de baixa para identificar a mudança de tendência.
A adição do indicador RSI pode filtrar alguns sinais falsos de ruptura. O RSI superou a área de superlotação como um sinal de ajuste de curto prazo para evitar a entrada desnecessária no mercado de turbulência.
O indicador ADX é usado para determinar a existência de uma verdadeira tendência, filtrando efetivamente parte do ruído. Os sinais de negociação são considerados apenas quando o valor do ADX é maior que 25, garantindo a existência de uma tendência clara.
Adotar um método móvel de stop loss e stop loss para maximizar os lucros, o risco de garantia de stop loss é controlado, a distância de stop loss é de 150 pontos, a distância de stop loss é de 400 pontos, e pode continuar a seguir a tendência.
Todos os dias de sexta-feira, antes do fechamento do mercado, todas as posições são liquidadas, evitando os riscos do fim de semana e mantendo a regularidade das operações.
A estratégia também apresenta os seguintes riscos:
A estratégia de cruzamento de linha média da EMA é propensa a produzir falsos sinais de ruptura. A virtualização pode trazer prejuízos. Pode-se ajustar adequadamente os parâmetros da linha média ou filtrar outros indicadores.
O indicador RSI só pode julgar o estado de sobrecompra e não pode confirmar a reversão da tendência. A visualização pode perder a tendência ou inverter a entrada. Pode ser considerado o uso ou ajuste de parâmetros em combinação com outros indicadores.
O indicador ADX apenas julga se a tendência existe ou não. O tempo de entrada pode ser impreciso, podendo ser considerado o acréscimo de outros julgamentos ou a redução das condições de filtragem do ADX.
A configuração do stop loss pode ser demasiado fixa para se adaptar às mudanças do mercado, podendo testar diferentes parâmetros ou ser ajustada por intervenção manual.
O posicionamento semanal obrigatório pode perder uma boa oportunidade de tendência, podendo ser considerado como um ajustamento para o fechamento diário ou uma modificação posterior para o posicionamento condicional.
A estratégia também pode ser melhorada nas seguintes direções:
Teste diferentes combinações de parâmetros de linha média para encontrar o melhor comprimento de linha média. A inclinação da linha média pode ser determinada.
Experimente diferentes parâmetros do RSI ou combinações com o indicador KDJ para otimizar ainda mais o seu julgamento sobre sobrevenda.
Otimizar os parâmetros ADX, encontrar condições de filtragem ADX mais adequadas e melhorar a qualidade de entrada.
Teste a combinação de pontos fixos de parada de perda móvel com a parada de rastreamento dinâmico do ATR.
Introduzir estratégias de retorno de breakout no dia, entrando em campo após a confirmação da tendência, pode ser considerado um gráfico de 5 minutos ou 15 minutos.
Adição de um módulo de gerenciamento de posições baseado na volatilidade, que ajusta dinamicamente as posições de acordo com as flutuações do mercado.
Experimente técnicas de aprendizagem de máquina para otimizar automaticamente os parâmetros e obter adaptabilidade das estratégias.
Esta estratégia é uma estratégia de acompanhamento de tendências muito simples e direta, usando a direção da tendência de julgamento de cruzamento de equilíbrio, RSI filtração de brechas falsas, ADX julgar a tendência de existência, stop loss para acompanhar a tendência de forma contínua, capturar lucros em curto prazo. A direção de otimização da estratégia é principalmente em busca de um melhor conjunto de indicadores, implementar a flexibilidade de julgamento de tendências e introduzir a gestão de posição dinâmica.
/*backtest
start: 2022-09-21 00:00:00
end: 2023-09-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("Hucklekiwi Pip - HLHB Trend-Catcher System", shorttitle="HLHB TCS", overlay=true,
default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// -----------------------------------------------------------------------------
// HLHB Trend-Catcher System as described on BabyPips.com
//
// Strategy Author: Hucklekiwi Pip
// Coded By: Backtest Rookies
// -----------------------------------------------------------------------------
//
// Refs:
// - Original System: https://www.babypips.com/trading/forex-hlhb-system-explained
// - Updated System: https://www.babypips.com/trading/forex-hlhb-system-20190311
//
//
// Description (From Hucklekiwi Pip)
//
// The HLHB System simply aims to catch short-term forex trends.
// It is patterned after the Amazing Crossover System that Robopip once backtested.
// In fact, it was one of his highest-scoring mechanical systems in 2014!
// The system can be applied to any pair, but since I’m into major pairs,
// I’m applying it to the 1-hour charts of EUR/USD and GBP/USD.
// -----------------------------------------------------------------------------
// STRATEGY REQUIREMENTS
// -----------------------------------------------------------------------------
//
// Setup
// -----
// - EUR/USD 1-hour chart
// - GBP/USD 1-hour chart
// - 5 EMA: blue line
// - 10 EMA: red line
// - RSI (10) applied to the median price (HL/2)
// - ADX (14)
//
// Entry
// -----
// - BUY when the 5 EMA crosses above the 10 EMA from underneath and the RSI
// crosses above the 50.0 mark from the bottom.
// - SELL when the 5 EMA crosses below the 10 EMA from the top and the RSI
// crosses below the 50.0 mark from the top.
// - Make sure that the RSI did cross 50.0 from the top or bottom and not just
// ranging tightly around the level.
// - ADX > 25 for Buy and Sells
//
// Exit
// ----
// - Use a 50-pip trailing stop and a 200-pip profit target. This increases the
// chances of the system riding longer trends.
// - Close the trade when a new signal materializes.
// - Close all trades by the end of the week.
//
// -----------------------------------------------------------------------------
// Strategy Varaibles
// -------------------
ema_fast_len = input(5, title='Fast EMA Length')
ema_slow_len = input(10 , title='Slow EMA Length')
rsi_len = input(10, title='Slow EMA Length')
session_end_hour = input(16, minval=0, maxval=23, title='Weekly Session End (Hour)')
session_end_minute = input(0, minval=0, maxval=59, title='Weekly Session End (Minute)')
// Targets taken from the update post which states 150 & 400 instead of 50 and 200.
profit_target = input(400, title='Profit Target (Pips/Points)')
trailing_stop_dist = input(150, title='Trailing Stop Distance (Pips/Points)')
adx_filt = input(true, title='User ADX Filter')
adx_min = input(25, minval=0, title='Minimum ADX Level')
adx_len = input(14, title="ADX Smoothing")
di_len = input(14, title="DI Length")
// Setup the Indicators
ema_fast = ema(close, ema_fast_len)
ema_slow = ema(close, ema_slow_len)
rsi_ind = rsi(close, rsi_len)
// ADX
adx_dirmov(len) =>
up = change(high)
down = -change(low)
plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
truerange = rma(tr, len)
plus = fixnan(100 * rma(plusDM, len) / truerange)
minus = fixnan(100 * rma(minusDM, len) / truerange)
[plus, minus]
adx_adx(dilen, adxlen) =>
[plus, minus] = adx_dirmov(dilen)
sum = plus + minus
adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
[adx, plus, minus]
[adx_sig, adx_plus, adx_minus] = adx_adx(di_len, adx_len)
// Strategy Logic
ema_long_cross = crossover(ema_fast, ema_slow)
ema_short_cross = crossunder(ema_fast, ema_slow)
rsi_long_cross = crossover(rsi_ind, 50)
rsi_short_cross = crossunder(rsi_ind, 50)
adx_check = adx_filt ? adx_sig >= adx_min : true
longCondition = ema_long_cross and rsi_long_cross and adx_check
if (longCondition)
strategy.entry("Long", strategy.long)
shortCondition = ema_short_cross and rsi_short_cross and adx_check
if (shortCondition)
strategy.entry("Short", strategy.short)
strategy.exit("SL/TP", "Long", profit=profit_target, loss=trailing_stop_dist, trail_points=trailing_stop_dist)
strategy.exit("SL/TP", "Short", profit=profit_target, loss=trailing_stop_dist, trail_points=trailing_stop_dist)
// Friday = 6
// If we miss the hour for some reason (due to strange timeframe), then close immediately
// Else if we are on the closing hour, then check to see if we are on or passed the close minute
close_time = dayofweek == 6 ?
hour[0] > session_end_hour ? true :
hour[0] == session_end_hour ?
minute[0] >= session_end_minute :
false : false
strategy.close_all(when=close_time)
// Plotting
plot(ema_fast, color=blue, title="Fast EMA")
plot(ema_slow, color=red, title="Slow EMA")
plotshape(rsi_long_cross, style=shape.triangleup, size=size.tiny, location=location.belowbar, color=green, title='RSI Long Cross Marker')
plotshape(rsi_short_cross, style=shape.triangledown, size=size.tiny, location=location.abovebar, color=red, title='RSI Short Cross Marker')
// ADX Filter Highlight
bgcolor(adx_filt and adx_check ? orange : na, transp=90)