A estratégia Dual SMA Crossover gera sinais de negociação calculando o cruzamento de duas linhas SMA com configurações de parâmetros diferentes. Quando a linha SMA mais rápida cruza acima da linha SMA mais lenta, um sinal de compra é gerado. Quando a linha SMA mais lenta cruza abaixo da linha SMA mais rápida, um sinal de venda é gerado. A estratégia usa dois conjuntos de parâmetros SMA ao mesmo tempo, um conjunto para determinar pontos de entrada e o outro para determinar pontos de saída.
Esta estratégia utiliza dois conjuntos de parâmetros SMA,smaB1
, smaB2
para sinais de compra, esmaS1
, smaS2
Para os sinais de venda, que representam médias móveis mais lentas e mais rápidas, respectivamente.smaB1
cruzadas acimasmaB2
, é gerado um sinal de compra.smaS2
cruzes abaixosmaS1
, é gerado um sinal de venda, o que permite um ajustamento flexível das condições de entrada e saída para se adaptarem aos ambientes de mercado em evolução.
Especificamente, esta estratégia monitora as situações de cruzamento entre as duas linhas SMA calculadas a partir do preço de fechamento para determinar o momento da compra e venda. Quando a linha SMA mais rápida cruza acima da linha SMA mais lenta, julga-se que a tendência de preço é ascendente, então vá longo neste momento. E quando a linha SMA mais lenta cruza abaixo da linha SMA mais rápida, a tendência de preço vira para baixo, então saia de posições longas.
As principais vantagens desta estratégia são:
Há também alguns riscos associados a esta estratégia:
Para controlar os riscos acima, métodos como otimização do parâmetro SMA, stop loss dinâmico para bloquear os lucros, etc., podem ser utilizados para melhorar a estratégia.
Algumas orientações de otimização para esta estratégia:
A estratégia SMA Crossover gera sinais comerciais simples e eficazes através do cálculo das situações de cruzamento entre duas linhas SMA. A flexibilidade para ajustar parâmetros torna esta estratégia adaptável a diferentes produtos, e é uma estratégia de tendência comummente usada.
/*backtest start: 2023-11-15 00:00:00 end: 2023-11-22 00:00:00 period: 5m basePeriod: 1m 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/ // © melihtuna //@version=4 strategy("SMA Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=10000, currency=currency.USD, commission_value=0.1, commission_type=strategy.commission.percent) smaB1 = input(title="smaB1",defval=377) smaB2 = input(title="smaB2",defval=200) smaS1 = input(title="smaS1",defval=377) smaS2 = input(title="smaS2",defval=200) smawidth = 2 plot(sma(close, smaB1), color = #EFB819, linewidth=smawidth, title='smaB1') plot(sma(close, smaB2), color = #FF23FD, linewidth=smawidth, title='smaB2') plot(sma(close, smaS1), color = #000000, linewidth=smawidth, title='smaS1') plot(sma(close, smaS2), color = #c48dba, linewidth=smawidth, title='smaS2') // === INPUT BACKTEST RANGE === FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2020, title = "From Year", minval = 2017) ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 9999, title = "To Year", minval = 2017) // === FUNCTION EXAMPLE === start = timestamp(FromYear, FromMonth, FromDay, 00, 00) finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) window() => time >= start and time <= finish ? true : false longCondition = crossover(sma(close, smaB1),sma(close, smaB2)) if (window() and longCondition) strategy.entry("BUY", strategy.long) shortCondition = crossover(sma(close, smaS2),sma(close, smaS1)) if (window() and shortCondition) strategy.entry("SELL", strategy.short)