A estratégia de seguimento de tendência de posição do ciclo é uma estratégia quantitativa de negociação que determina a direção da tendência com base na média móvel simples (SMA) de 200 dias.
O indicador central desta estratégia é a SMA de 200 dias.
Seguir o modo de tendência ascendente: fazer transações longas quando o fechamento estiver acima da SMA de 200 dias; fechar a posição quando o stop loss ou o take profit for acionado.
Seguir o modo de tendência de queda: fazer transações longas quando o fechamento estiver abaixo da SMA de 200 dias; fechar posição quando for acionado o stop loss ou o take profit.
A condição longa é definida emlongCondition
A condição de fechamento é definida emcloseCondition
variável baseada em stop loss, take profit e SMA.
Especificamente,strategy.entry
É utilizada para abrir posições longas quando a condição long é cumprida.strategy.exit
É utilizado para fechar posições quando a condição de fechamento é acionada.
As vantagens desta estratégia incluem:
Lógica simples e clara que é fácil de entender.
Fornece dois modos opcionais para se adequarem aos diferentes ambientes de mercado.
O stop loss e o take profit personalizáveis permitem ajustar o perfil risco-recompensa.
Utiliza o conhecido indicador SMA de 200 dias para determinar a direcção da tendência.
Gera sinais de negociação automatizados sem intervenção manual.
Os riscos desta estratégia incluem:
Adicionar outros indicadores como MACD, KDJ para confirmação pode ajudar.
Os parâmetros precisam de testes e otimização adequados.
Considerar o uso de corpo de vela ou adicionar confirmação de sinal.
Não contabiliza os custos de negociação.
Algumas formas de melhorar a estratégia:
Adicionar outros indicadores para confirmar sinais e evitar falsos sinais, por exemplo, MACD.
Otimizar parâmetros de stop loss e take profit para encontrar combinação ideal através de backtesting.
Adicionar um filtro de tendências para negociar apenas tendências bem definidas, por exemplo, ADX.
Melhorar o método de entrada considerando o corpo da vela ou adicionando confirmação.
Considere o volume de negociação para validar a confiabilidade do sinal.
Teste diferentes períodos de SMA para encontrar o parâmetro ideal.
Em conclusão, a estratégia tem uma lógica clara e compreensível com valor prático. Mas a dependência de um único indicador tem limitações. Mais condições devem ser adicionadas para confirmação. Os parâmetros também precisam de testes e otimização para um melhor desempenho ao vivo. Além disso, os custos de negociação como deslizamento e comissões exigem consideração na negociação ao vivo.
/*backtest start: 2022-11-10 00:00:00 end: 2023-11-16 00:00:00 period: 1d basePeriod: 1h 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/ // © I11L //@version=5 strategy("Cycle Position Trading", overlay=true, pyramiding=1, default_qty_value=100000, initial_capital=100000, default_qty_type=strategy.cash, process_orders_on_close=false, calc_on_every_tick=false) // Input for selecting the mode mode = input.string("Buy Uptrend", options = ["Buy Uptrend", "Buy Downtrend"]) // Input for customizing stop loss and take profit levels stopLoss = input.float(0.9, title="Stop Loss (SL) level", step=0.01) takeProfit = input.float(1.1, title="Take Profit (TP) level", step=0.01) // Calculate the 200-day Simple Moving Average (SMA) sma = ta.sma(close, 200) // Plot the SMA on the chart plot(sma) // Define the conditions for entering a long position based on the selected mode longCondition = mode == "Buy Uptrend" ? close > sma and close[5] > sma : close < sma // Define the conditions for closing a position based on the selected mode closeCondition = mode == "Buy Uptrend" ? (strategy.position_avg_price * stopLoss > close or strategy.position_avg_price * takeProfit < close or close < sma * 0.95) : (strategy.position_avg_price * stopLoss > close or strategy.position_avg_price * takeProfit < close or close > sma * 1.05) // Execute a long position if the longCondition is met if (longCondition) strategy.entry("My Long Entry Id", strategy.long) // Close the position if the closeCondition is met if (closeCondition) strategy.exit("Exit", limit = close)