
A estratégia usa um mecanismo de controle de risco de sinais de forma de preço de ruptura de resistência e paralisação de loop. Ela faz mais posições após a ruptura da resistência e deixa as posições vazias após a ruptura do suporte. Ao mesmo tempo, configura paralisações e paralisações de loop para controlar efetivamente o risco.
A estratégia baseia-se principalmente nos seguintes pontos:
Use a linha média para determinar a direção da tendência. Estabeleça uma linha média rápida e lenta na estratégia, atravessando a linha lenta na linha rápida para representar a tendência de alta da linha longa e descendo para representar a tendência de baixa da linha longa.
Quando o preço sobe e ultrapassa o ponto mais alto recente, considere-se um sinal de ruptura da resistência e faça mais entrada.
O sinal de ruptura do suporte de curto prazo. Quando o preço cai e quebra o mínimo recente, é considerado um sinal de ruptura do suporte e a entrada de curto prazo.
Configure o Stop Loss Circular. Configure a linha de stop loss após a entrada e ajuste-a com a flutuação do preço para que a linha de stop loss funcione em torno do preço.
Parar o prejuízo e parar a retirada ❚ Parar o prejuízo pode controlar o risco de forma eficaz, e parar o prejuízo pode bloquear o lucro ❚
Especificamente, a estratégia usa a média de preços altos e baixos como fonte de preços, calcula a direção da tendência de determinação da EMA rápida e lenta. Faça mais quando a linha rápida atravessa a linha lenta e há um sinal de ruptura de resistência, e feche quando a linha rápida atravessa a linha lenta e há um sinal de ruptura de suporte.
A estratégia tem as seguintes vantagens:
Estabilidade de lucro. Operação de seguimento de tendências, pode lucrar em tendências de linha longa no nível do índice.
Bom controle de risco. Configuração de circuito de parada e parada de perdas, que pode parar a perda e sair em tempo hábil.
A precisão do sinal. O ponto de resistência é ultrapassado e o ponto de suporte é ultrapassado, o sinal é preciso e confiável.
Simples e fácil de operar. Indicadores e regras de sinalização são simples e claras, configuração de parâmetros não é complicada.
Adaptação ao mercado. Pode operar em diferentes variedades e em qualquer condição de mercado.
A estratégia também apresenta alguns riscos que devem ser lembrados:
Risco de fracasso de ruptura. Após a ruptura do suporte de resistência, pode haver um reajuste e reesforço, resultando em parada.
Riscos de otimização de parâmetros. A configuração inadequada de parâmetros pode levar a sinais frequentes ou insuficientes. O processo de otimização deve ser cuidado.
Risco de falha do indicador. Em circunstâncias especiais, o indicador EMA pode falhar ou ser atrasado.
Risco de reversão de tendência. Se você fizer mais curto prazo, os prejuízos podem aumentar quando a direção do mercado se desvia.
Esses riscos podem ser controlados e mitigados em grande parte por meio de métodos como otimização de parâmetros, tolerância de perda adequada e seguimento rigoroso de sinais.
A estratégia pode ser melhorada em alguns aspectos:
Otimização do ciclo de tempo. Ajuste os parâmetros do ciclo de tempo para calcular a linha média e a forma do preço, procurando a melhor combinação.
Optimização da adaptabilidade da variedade. Ajustar a configuração dos parâmetros de acordo com as características de diferentes variedades.
Otimização da estratégia de parada de prejuízos. O uso de métodos de parada mais estáveis e precisos, como parada de movimentação, parada de oscilação, etc.
Otimização da estratégia de stop-loss. Configure um stop-loss móvel ou um stop-loss indexado para aumentar os lucros.
Aumentar os filtros. Adicionar os filtros de volume de negociação, taxa de flutuação e outros, excluindo as falsas brechas.
Aumentar o sinal de entrada. Adicionar mais indicadores ou formas como confirmação do sinal de entrada.
A estratégia de funcionamento global é fluida, a idéia central é clara, tem uma forte estabilidade e capacidade de lucro. O controle de risco e a aplicação de indicadores também são mais adequados, e é uma estratégia de categorização de ruptura que vale a pena usar. A otimização posterior por meio de parâmetros e módulos pode tornar a estratégia mais perfeita e adaptar-se a mais variedades e ambientes de mercado complexos.
/*backtest
start: 2023-12-03 00:00:00
end: 2023-12-10 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © EduardoMattje
//@version=4
strategy("Reversal closing price", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, initial_capital=10000)
src = input(hl2, "Price source")
order_direction = input("Both", "Order direction", options=["Both", "Long", "Short"])
// EMA calculation and plot
ema_long_period = input(80, "EMA long period")
ema_short_period = input(8, "EMA short period")
ema_long = ema(src, ema_long_period)
ema_short = ema(src, ema_short_period)
ema_bull = ema_short > ema_long
ema_bear = ema_short < ema_long
plot(ema_long, "EMA long", ema_bull ? color.green : color.red, 3)
plot(ema_short, "EMA short", ema_bull ? color.green : color.red, 3)
// Settings
risk_reward_ratio = input(2.0, "Risk to reward ratio", minval=1.0, step=0.1)
stop_lookback = input(3, "Stoploss candle lookback", minval=1)
ema_cross_stop = input(true, "Close if EMA crosses in oposite direction")
allow_retracing = input(true, "Allow price retracing")
// RCP calculation
rcp_bull = low[0] < low[1] and low[0] < low[2] and close[0] > close[1]
rcp_bear = high[0] > high[1] and high[0] > high[2] and close[0] < close[1]
// Order placement
in_market = strategy.position_size != 0
long_condition = rcp_bull and ema_bull and not in_market and order_direction != "Short"
short_condition = rcp_bear and ema_bear and not in_market and order_direction != "Long"
bought = strategy.position_size[0] > strategy.position_size[1] and strategy.position_size[1] == 0
sold = strategy.position_size[0] < strategy.position_size[1] and strategy.position_size[1] == 0
closed = not in_market and in_market[1]
long_position = strategy.position_size > 0
short_position = strategy.position_size < 0
buy_price = high + syminfo.mintick
sell_price = low - syminfo.mintick
if long_condition
strategy.entry("Long", true, stop=buy_price)
if short_condition
strategy.entry("Short", false, stop=sell_price)
if allow_retracing
better_price_long = barssince(closed) > barssince(long_condition) and barssince(long_condition) >= 1 and not in_market and ema_bull and buy_price < valuewhen(long_condition, buy_price, 0) and buy_price[0] < buy_price[1]
if better_price_long
strategy.cancel("Long")
strategy.entry("Long", true, stop=buy_price)
better_price_short = barssince(closed) > barssince(short_condition) and barssince(short_condition) >= 1 and not in_market and ema_bear and sell_price > valuewhen(short_condition, sell_price, 0) and sell_price[0] > sell_price[1]
if better_price_short
strategy.cancel("Short")
strategy.entry("Short", false, stop=sell_price)
// Stoploss orders
stop_price = long_position ? valuewhen(bought, lowest(stop_lookback)[1] - syminfo.mintick, 0) : short_position ? valuewhen(sold, highest(3)[1] + syminfo.mintick, 0) : na
stop_comment = "Stoploss triggered"
strategy.close("Long", low <= stop_price, stop_comment)
strategy.close("Short", high >= stop_price, stop_comment)
plot(stop_price, "Stop price", color.red, 2, plot.style_linebr)
// EMA cross close orders
if ema_cross_stop
if long_position and ema_bear
strategy.close("Long", comment=stop_comment)
if short_position and ema_bull
strategy.close("Short", comment=stop_comment)
// Take profit orders
stop_ticks = abs(strategy.position_avg_price - stop_price)
take_profit_price = long_position ? valuewhen(bought, strategy.position_avg_price + stop_ticks * risk_reward_ratio, 0) : short_position ? valuewhen(sold, strategy.position_avg_price - (stop_ticks * risk_reward_ratio), 0) : na
target_comment = "Take profit"
strategy.close("Long", high >= take_profit_price, target_comment)
strategy.close("Short", low <= take_profit_price, target_comment)
plot(take_profit_price, "Target price", color.green, 2, plot.style_linebr)