A estratégia é chamada de
A estratégia usa duas linhas SMA, SMA1 e SMA2. O comprimento da SMA1 é 1 e o comprimento da SMA2 é 3. Ao calcular essas duas linhas SMA, quando a SMA1 cruza acima da SMA2, um sinal de compra é gerado. Quando a SMA1 cruza abaixo da SMA2, um sinal de venda é gerado. Isso visa capturar a tendência do preço.
Especificamente, a estratégia julga a relação de cruzamento entre as linhas SMA através das funções ta.crossover e ta.crossunder, gerando as variáveis booleanas longCondition e shortCondition. Quando a longCondition é verdadeira, um sinal de compra é gerado. Quando a shortCondition é verdadeira, um sinal de venda é gerado. A estratégia entrará no mercado no ponto de sinal e atualizará as variáveis profitAccumulated e lastTradeProfit para rastrear os lucros acumulados.
Para o controle de risco, a estratégia também define um mecanismo de stop loss baseado em pontos fixos.
A maior vantagem desta estratégia é que utiliza a capacidade de rastreamento de tendências das linhas SMA para capturar efetivamente as mudanças nas tendências de preços. Em comparação com as estratégias de linha única, as estratégias de linha dupla podem usar a relação de cruzamento entre as linhas para determinar a direção da tendência e, assim, gerar sinais de negociação. Além disso, o mecanismo de stop loss pode controlar efetivamente a perda única.
O principal risco desta estratégia é que a estratégia de média móvel tende a gerar sinais falsos. Quando o preço oscila, a linha SMA pode frequentemente cruzar, resultando em sinais de negociação desnecessários. Neste ponto, grandes perdas podem ocorrer sem stop loss efetivo.
A estratégia pode ser otimizada nos seguintes aspectos:
Ajustar os parâmetros SMA para encontrar a melhor combinação de comprimentos médios móveis através de backtesting.
Aumentar as condições de filtragem e definir condições de avanço do preço perto do ponto de cruzamento da média móvel para evitar falsos sinais.
Podem ser testados diferentes tipos de métodos de stop loss, tais como stop loss móvel, stop loss pendente, etc.
Adicionar o controlo do tamanho da posição para otimizar a eficiência da utilização do capital.
Em geral, esta é uma estratégia típica de tendência. Ele usa a relação de ruptura entre as linhas SMA para determinar a direção da tendência de preço e entrar no ponto de virada da tendência. Ao mesmo tempo, a estratégia tem uma função de stop loss fixa para controlar riscos. A estratégia é simples, fácil de entender, mas ainda precisa de testes e otimização aprofundados antes de fazer lucros estáveis na negociação real.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 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/ // © cesarpieres72 //@version=5 strategy("Estrategia SMA y Ganancias Acumuladas con Stop Loss", shorttitle="SMA_Ganancias", overlay=true) // Definir las variables de las medias móviles sma1_length = input(1, title="SMA 1 Longitud") sma2_length = input(3, title="SMA 2 Longitud") // Calcular las medias móviles sma1 = ta.sma(close, sma1_length) sma2 = ta.sma(close, sma2_length) // Condiciones para las señales de compra y venta longCondition = ta.crossover(sma1, sma2) shortCondition = ta.crossunder(sma1, sma2) // Acumular las ganancias var float profitAccumulated = 0.0 var float lastTradeProfit = na if (longCondition) strategy.entry("Buy", strategy.long) lastTradeProfit := strategy.netprofit - (profitAccumulated + lastTradeProfit) profitAccumulated := strategy.netprofit if (shortCondition) strategy.entry("Sell", strategy.short) lastTradeProfit := strategy.netprofit - (profitAccumulated + lastTradeProfit) profitAccumulated := strategy.netprofit // Mostrar las señales en el gráfico plot(sma1, color=color.blue, title="SMA 1") plot(sma2, color=color.red, title="SMA 2") // Añadir stop loss stopLossPips = input(5000, title="Stop Loss (en pips)") stopLossPrice = strategy.position_avg_price * (1 - stopLossPips * syminfo.mintick) strategy.exit("SL", "Buy", stop=stopLossPrice)