
A estratégia é baseada no princípio do SMA. A estratégia usa duas SMAs, a SMA rápida e a SMA lenta, que geram um sinal de compra quando a SMA rápida quebra a SMA lenta de baixo; e um sinal de venda quando a SMA rápida quebra a SMA lenta de cima.
A estratégia baseia-se em duas linhas de indicador SMA. Dentre elas, a configuração mais curta durante o SMA rápido, pode capturar as mudanças de preço mais rapidamente; a configuração mais longa durante o SMA lento, pode filtrar parte do ruído. Quando o SMA rápido cruza o SMA lento da direção inferior, indica que o preço de curto prazo sobe mais rapidamente, gerando um sinal de compra.
Ao definir diferentes parâmetros de ciclo de SMA, os parâmetros da estratégia podem ser ajustados em certa medida para adaptar-se a diferentes condições de mercado. Ao mesmo tempo, a estratégia também permite definir um intervalo de tempo de retorno, facilitando o teste de parâmetros da estratégia em dados históricos.
Para combater estes riscos, podem ser adotadas as seguintes medidas:
Esta estratégia pertence a uma típica estratégia de acompanhamento de tendências. Aplicando um simples princípio de duplo equilíbrio de linhas cruzadas, se os parâmetros forem adequados, um melhor efeito de acompanhamento pode ser obtido. Mas o SMA em si é um pouco atrasado e não pode determinar a intensidade da tendência.
/*backtest
start: 2023-12-17 00:00:00
end: 2023-12-18 19:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
//strategy(title="MA Cross Entry & Exit w/Date Range", overlay=true, initial_capital=10000, currency='USD')
strategy(title="SMA Cross Entry & Exit Strategy", overlay=true)
// Credit goes to this developer for the "Date Range Code"
// https://www.tradingview.com/script/62hUcP6O-How-To-Set-Backtest-Date-Range/
// === GENERAL INPUTS ===
// short ma
maFastSource = input(defval = open, title = "Fast MA Source")
maFastLength = input(defval = 36, title = "Fast MA Period", minval = 1)
// long ma
maSlowSource = input(defval = open , title = "Slow MA Source")
maSlowLength = input(defval = 46, title = "Slow MA Period", minval = 1)
// === SERIES SETUP ===
// a couple of ma's..
maFast = sma(maFastSource, maFastLength)
maSlow = sma(maSlowSource, maSlowLength)
// === PLOTTING ===
fast = plot(maFast, title = "Fast MA", color = red, linewidth = 2, style = line, transp = 30)
slow = plot(maSlow, title = "Slow MA", color = green, linewidth = 2, style = line, transp = 30)
// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12)
FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear = input(defval = 2018, 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) // backtest start window
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window
window() => time >= start and time <= finish ? true : false // create function "within window of time"
// === LOGIC ===
//enterLong = crossover(maFast, maSlow)
//exitLong = crossover(maSlow, maFast)
enterLong = crossover(maSlow, maFast)
exitLong = crossover(maFast, maSlow)
// Entry //
strategy.entry(id="Long Entry", long=true, when=window() and enterLong)
strategy.entry(id="Short Entry", long=false, when=window() and exitLong)
// === FILL ====
fill(fast, slow, color = maFast > maSlow ? green : red)