
O cruzamento de uma média móvel é um sinal de negociação comum. A estratégia utiliza o cruzamento de uma média móvel rápida e uma média móvel lenta como sinal de negociação. Concretamente, faça mais quando a média móvel rápida atravessa a média móvel lenta de baixo para cima; faça zero quando a média móvel rápida atravessa a média móvel lenta de cima para baixo.
Esta estratégia usa a média móvel exponencial de 20 dias (EMA) como média móvel rápida, a EMA de 50 dias como média rápida e a EMA de 50 dias como média móvel lenta. Faça mais quando a EMA de 20 dias e a EMA de 50 dias cruzam a EMA de 200 dias ao mesmo tempo; faça vazio quando a EMA de 20 dias e a EMA de 50 dias cruzam a EMA de 200 dias ao mesmo tempo. Isso pode filtrar parte do falso sinal.
O conceito de estratégia de cruzamento de média móvel é simples e fácil de entender, e é uma das estratégias básicas para a quantificação de transações. Esta estratégia tem um bom valor de referência como um aprendizado de introdução. No entanto, na batalha real, os parâmetros ainda precisam ser otimizados para variedades e períodos, além de outros indicadores técnicos mais complexos para filtrar os sinais, aumentando a eficácia da estratégia na batalha real.
/*backtest
start: 2023-01-05 00:00:00
end: 2024-01-11 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/
// © rt-maax
//@version=5
strategy(title = "rt maax EMA cross strategy", shorttitle = "rt maax ema ", overlay = true, precision = 8, max_bars_back = 200, pyramiding = 0, initial_capital = 100000,
currency = currency.USD, default_qty_type = strategy.cash, default_qty_value = 100000, commission_type = "percent", commission_value = 0.27)
fastema = ta.ema (close , 50)
fema=ta.ema(close,20)
slowema= ta.ema(close,200)
price = close
// === INPUT BACKTEST RANGE ===
fromMonth = input.int(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromDay = input.int(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromYear = input.int(defval = 2021, title = "From Year", minval = 1970)
thruMonth = input.int(defval = 10, title = "Thru Month", minval = 1, maxval = 12)
thruDay = input.int(defval = 25, title = "Thru Day", minval = 1, maxval = 31)
thruYear = input.int(defval = 2112, title = "Thru Year", minval = 1970)
// === INPUT SHOW PLOT ===
showDate = input(defval = true, title = "Show Date Range")
// === FUNCTION EXAMPLE ===
longCondition1= ta.crossover (fema , fastema)
longcondition2= fema> slowema
longcondition3=fastema>slowema
if (longCondition1 and longcondition2 and longcondition3 )
stoploss=low*0.97
takeprofit=high*1.12
strategy.entry("Long Entry", strategy.long)
strategy.exit ("exit","long",stop=stoploss,limit=takeprofit)
shortCondition1 = ta.crossunder (fema , fastema )
shortcondition2= fastema< slowema
shortcondition3= fema< slowema
if (shortCondition1 and shortcondition2 and shortcondition3 )
stoploss=low*0.97
takeprofit=high*1.5
strategy.entry("Short Entry", strategy.short)
strategy.exit("exit","short",stop=stoploss,limit=takeprofit)