Esta estratégia utiliza cruzamento da média móvel para determinar a direção do ímpeto do preço, complementado por cruzes douradas/morte para julgar a tendência geral, para implementar a tendência seguinte.
A estratégia usa cruzes de EMA e SMA para determinar a direção do ímpeto do preço. A EMA reage mais rapidamente enquanto a SMA reage mais constantemente. Quando a EMA cruza acima da SMA, julga-se que o ímpeto de alta é forte, vá longo. Quando a EMA cruza abaixo da SMA, julga-se que o ímpeto de baixa é forte, vá curto.
Além disso, a estratégia também usa o cruzamento de SMA de período rápido e SMA de período lento para determinar a direção geral da tendência. Quando a SMA rápida cruza acima da SMA lenta, é uma cruz de ouro, indicando que o mercado está em tendência de alta a longo prazo. Quando a SMA rápida cruza abaixo da SMA lenta, é uma cruz de morte, indicando que o mercado está em tendência de queda a longo prazo.
A estratégia identifica uma oportunidade longa quando a EMA cruza acima da SMA. Se for uma cruz de ouro neste momento, isso significa que a corrida longa é apoiada tanto pelo impulso de curto prazo quanto pela tendência de longo prazo, o que é um melhor tempo longo. Se for uma cruz de morte, a corrida longa é apenas apoiada pelo impulso de curto prazo e contra a tendência de longo prazo, que é um tempo longo mais arriscado.
Os riscos podem ser reduzidos combinando outros indicadores de confirmação de sinal, otimizando os períodos de MA ou definindo o stop loss.
Em geral, esta é uma estratégia de tendência relativamente estável e confiável. Ela considera tanto o impulso de preço de curto prazo quanto a direção da tendência de longo prazo, gerando sinais de negociação através de cruzamento de MA. Em comparação com as estratégias de MA simples, ela tem maior confiabilidade ao combinar indicadores duplos para confirmação. Mas como uma estratégia de tendência, sua otimização de parâmetros e controle de risco são muito importantes. Ela precisa de testes e ajustes repetidos para realmente realizar seu potencial. Com otimizações e melhorias contínuas, essa estratégia pode se tornar um componente valioso de uma carteira de investimento quantitativo de longo prazo.
/*backtest start: 2023-09-19 00:00:00 end: 2023-10-19 00:00:00 period: 1h basePeriod: 15m 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/ // © Cryptoluc1d //@version=4 strategy("Equal-Length EMA/SMA Crossover Strategy", initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=25, commission_type=strategy.commission.percent, commission_value=0.2, overlay=true) // Create inputs mom_length = input(title="Momentum Length (EMA=SMA)", defval=50) bias_length_fast = input(title="Golden Cross Length (Fast)", defval=50) bias_length_slow = input(title="Golden Cross Length (Slow)", defval=100) // Define MAs ema = ema(close, mom_length) // EMA/SMA crossover of the same period for detecting trend acceleration/deceleration sma = sma(close, mom_length) bias_fast = sma(close, bias_length_fast) // golden/death cross for overall trend bias bias_slow = sma(close, bias_length_slow) // Define signal conditions buy_trend = crossover(ema, sma) and bias_fast >= bias_slow // buy when EMA cross above SMA. if this happens during a bullish golden cross, buying is in confluence with the overall trend (bias). buy_risky = crossover(ema, sma) and bias_fast < bias_slow // buy when EMA cross above SMA. if this happens during a bearish death cross, buying is early, more risky, and not in confluence with the overall trend (bias). buy_late = crossover(sma, bias_slow) and ema > sma // the SMA crossing the Slow_SMA gives further confirmation of bullish trend, but signal comes later. sell = crossunder(ema, sma) // sell when EMA cross under SMA. // Enable option to hide signals, then plot signals show_signal = input(title="Show Signals", defval=true) plotshape(show_signal ? buy_trend : na, title='Trend Buy', style=shape.triangleup, location=location.belowbar, color=color.green, text='TREND BUY') plotshape(show_signal ? buy_risky : na, title='Risky Buy', style=shape.triangleup, location=location.belowbar, color=color.olive, text='RISKY BUY') plotshape(show_signal ? buy_late : na, title='Late Buy', style=shape.triangleup, location=location.belowbar, color=color.lime, text='LATE BUY') plotshape(show_signal ? sell : na, title='Sell', style=shape.triangledown, location=location.abovebar, color=color.red, text='SELL') // Define entry and exit conditions longCondition = ema > sma and bias_fast >= bias_slow // LONG when EMA above SMA, and overall trend bias is bullish if (longCondition) strategy.entry("BUY TREND", strategy.long) exitLong = crossunder(ema, sma) // close LONG when EMA cross under SMA strategy.close("BUY TREND", when=exitLong) // // short conditions. turned off because up only. // shortCondition = ema < sma and bias_fast <= bias_slow // SHORT when EMA under SMA, and overall trend bias is bearish // if (shortCondition) // strategy.entry("SELL TREND", strategy.short) // exitShort = crossover(ema, sma) // close SHORT when EMA cross over SMA // strategy.close("SELL TREND", when=exitShort) // Enable option to show MAs, then plot MAs show_ma = input(title="Show MAs", defval=false) plot(show_ma ? ema : na, title="Momentum EMA", color=color.green, linewidth=1) plot(show_ma ? sma : na, title="Momentum SMA", color=color.yellow, linewidth=1) plot(show_ma ? bias_fast : na, title="Golden Cross SMA (Fast)", color=color.orange, linewidth=2) plot(show_ma ? bias_slow : na, title="Golden Cross SMA (Slow)", color=color.red, linewidth=2)