
A principal idéia da estratégia é negociar retrações de curto prazo na direção da tendência de longo prazo. Concretamente, usar a média móvel simples de 200 dias para determinar a direção da tendência de longo prazo e usar a média móvel simples de 10 dias para determinar a direção da tendência de curto prazo.
A estratégia usa a média móvel simples de 200 dias e a média móvel simples de 10 dias para determinar a tendência do mercado. Quando o preço atravessa a linha de 200 dias, é considerado um mercado de entrada em um mercado de ativos, e quando o preço atravessa a linha de 200 dias, é considerado um mercado de entrada em um mercado de ativos.
Concretamente, quando as seguintes condições são preenchidas, faça mais entrada no campo: o preço é superior à linha de 200 dias, o preço é inferior à linha de 10 dias, sem posse anterior. Quando as seguintes condições são preenchidas, a saída de posição vazia no campo: o preço é superior à linha de 10 dias, com uma posição anterior. Para evitar grandes perdas, o stop FAILSAFE foi configurado, e se a retração do ponto mais alto for superior a 10%, o stop será retirado diretamente.
Pode-se ver que a lógica de negociação da estratégia baseia-se principalmente em forcas de ouro e forcas mortas da linha de equilíbrio, fazendo retrocessões e paradas de seguimento de tendência na direção da tendência após o julgamento da linha de equilíbrio curta e curta, pertencendo a uma estratégia típica de seguimento de tendência.
A principal vantagem desta estratégia é a de acompanhar a tendência com um baixo custo de capital e buscar lucros excedentários. As vantagens específicas são as seguintes:
Usando uma combinação de linhas médias de curto e longo prazo para determinar a direção da tendência nos principais níveis secundários, é possível bloquear efetivamente as oportunidades de tendência de linhas médias e longas, evitando ser enganado pelo mercado de curto prazo.
O método de retorno a curto prazo pode minimizar os custos de compra, permitindo maior margem de lucro.
O mecanismo de parada FAILSAFE é configurado para controlar efetivamente os prejuízos individuais e proteger os fundos da conta.
Permite rastrear a saída do stop, explorar as oportunidades de tendências de linha média-longa e obter alfa extra.
A adoção de um método de negociação puramente mecanizado, que evita a influência emocional subjetiva, torna a estratégia mais fácil de implementar.
A estratégia tem os seguintes riscos:
Risco de adequação dos dados de retrospecção. As condições reais do mercado podem diferir dos dados históricos, o que pode levar à distorção da eficácia das negociações em disco.
Risco de Falsa Breakout. A probabilidade de uma reversão de correção é maior se o preço apenas tocar perto da linha média, o que pode levar a uma acumulação de pequenos prejuízos.
Risco de reversão de tendência. Reversões súbitas de tendências de linha média-longa são comuns, quando as posições são suscetíveis a grandes perdas.
A resposta é a seguinte:
Aumentar a quantidade de amostras e usar mais dados históricos para a validação de robustez, garantindo resultados confiáveis.
Optimizar os parâmetros, ajustar a combinação de parâmetros do sistema linear, garantir a qualidade do sinal de negociação.
A liberação apropriada da linha de parada, dando ao preço um certo espaço para regressar, evitando a parada excessivamente sensível.
A estratégia pode ser melhorada em:
A adição de condições de filtragem, como filtragem de volume de transação, pode efetivamente reduzir transações desnecessárias causadas por brechas falsas.
A combinação com outros indicadores, como KDJ, MACD, etc., forma um conjunto de indicadores que podem melhorar a qualidade do sinal de negociação.
Testar diferentes períodos de manutenção de posições, otimizar estratégias de stop loss e stop loss, e aumentar ainda mais os índices de Sharp.
Adaptar os parâmetros de forma dinâmica de acordo com a situação do mercado, formando um mecanismo de otimização de parâmetros de adaptação, tornando a estratégia mais robusta.
A adição de módulos de negociação algorítmicos, que utilizam métodos como o aprendizado de máquina para gerar sinais de negociação automaticamente, reduzindo a intervenção humana.
A ideia geral desta estratégia é clara e fácil de implementar, pode obter um Alfa estável por meio do rastreamento de tendências de linha média e longa a baixo custo. Mas há também um risco de certa probabilidade de ser aproveitado, que precisa ser otimizado ainda mais para aumentar a estabilidade. No geral, a estratégia foi projetada do ponto de vista do rastreamento de tendências, e vale a pena estudar e aplicar ainda mais. Se os parâmetros forem ajustados adequadamente, deve-se obter um bom efeito em campo.
/*backtest
start: 2024-01-21 00:00:00
end: 2024-02-20 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © irfanp056
// @version=5
strategy("Simple Pullback Strategy",
overlay=true,
initial_capital=100000,
default_qty_type=strategy.percent_of_equity,
default_qty_value=1000, // 100% of balance invested on each trade
commission_type=strategy.commission.cash_per_contract,
commission_value=0.005) // Interactive Brokers rate
// Get user input
i_ma1 = input.int(title="MA 1 Length", defval=200, step=10, group="Strategy Parameters", tooltip="Long-term MA")
i_ma2 = input.int(title="MA 2 Length", defval=10, step=10, group="Strategy Parameters", tooltip="Short-term MA")
i_stopPercent = input.float(title="Stop Loss Percent", defval=0.10, step=0.1, group="Strategy Parameters", tooltip="Failsafe Stop Loss Percent Decline")
i_lowerClose = input.bool(title="Exit On Lower Close", defval=false, group="Strategy Parameters", tooltip="Wait for a lower-close before exiting above MA2")
i_startTime = input(title="Start Filter", defval=timestamp("01 Jan 1995 13:30 +0000"), group="Time Filter", tooltip="Start date & time to begin searching for setups")
i_endTime = input(title="End Filter", defval=timestamp("1 Jan 2099 19:30 +0000"), group="Time Filter", tooltip="End date & time to stop searching for setups")
// Get indicator values
ma1 = ta.sma(close, i_ma1)
ma2 = ta.sma(close, i_ma2)
// Check filter(s)
f_dateFilter = true
// Check buy/sell conditions
var float buyPrice = 0
buyCondition = close > ma1 and close < ma2 and strategy.position_size == 0 and f_dateFilter
sellCondition = close > ma2 and strategy.position_size > 0 and (not i_lowerClose or close < low[1])
stopDistance = strategy.position_size > 0 ? ((buyPrice - close) / close) : na
stopPrice = strategy.position_size > 0 ? buyPrice - (buyPrice * i_stopPercent) : na
stopCondition = strategy.position_size > 0 and stopDistance > i_stopPercent
// Enter positions
if buyCondition
strategy.entry(id="Long", direction=strategy.long)
if buyCondition[1]
buyPrice := open
// Exit positions
if sellCondition or stopCondition
strategy.close(id="Long", comment="Exit" + (stopCondition ? "SL=true" : ""))
buyPrice := na
// Draw pretty colors
plot(buyPrice, color=color.lime, style=plot.style_linebr)
plot(stopPrice, color=color.red, style=plot.style_linebr, offset=-1)
plot(ma1, color=color.blue)
plot(ma2, color=color.orange)