
Esta estratégia usa um sinal de cruzamento de uma média móvel de 50 ciclos (SMMA) e uma média móvel simples de 20 ciclos (SMA) para determinar a hora de comprar e vender. Um sinal de compra é gerado quando uma SMA rápida sobe e rompe a SMMA lenta. Um sinal de venda é gerado quando uma SMA baixa e rompe a SMMA.
testar combinações de diferentes parâmetros (número de ciclos, condições de filtragem, etc.) para encontrar o melhor;
Pode ser combinado com outros fatores para filtrar o sinal, como aumento de volume de transação;
a busca de parâmetros ótimos através de ferramentas de otimização de parâmetros;
Outras formas de bloqueio, como bloqueio móvel ou proporcional, podem ser consideradas.
A amplitude de stop loss dinâmica pode ser calculada em combinação com a volatilidade do mercado.
Esta estratégia é simples de operar, capta a direção da tendência através de duas linhas de equilíbrio; utiliza-se de forma flexível o stop loss fixo e o stop loss dinâmico para bloquear o lucro e controlar o risco, o risco e o lucro e. A estratégia de recaudação pode ser adaptada ainda mais ao ambiente de mercado mais amplo através da otimização de parâmetros e regras.
/*backtest
start: 2023-01-26 00:00:00
end: 2024-02-01 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("50 SMMA and 20 SMA Crossover with TP and SL", overlay=true)
// Define 50 SMMA
smma50 = sma(close, 50)
// Define 20 SMA
sma20 = sma(close, 20)
// Plotting the SMMA and SMA
plot(smma50, color=color.blue, title="50 SMMA")
plot(sma20, color=color.red, title="20 SMA")
// Initialize TP and SL variables
tp = 150
var float sl_price = na
// Buy Signal
buySignal = crossover(sma20, smma50)
strategy.entry("Buy", strategy.long, when = buySignal)
strategy.exit("Take Profit/Stop Loss", from_entry="Buy", profit=tp, loss=sl_price)
// Sell Signal
sellSignal = crossunder(sma20, smma50)
strategy.entry("Sell", strategy.short, when = sellSignal)
strategy.exit("Take Profit/Stop Loss", from_entry="Sell", profit=tp, loss=sl_price)
// Update stop loss level on every crossover
if (buySignal or sellSignal)
sl_price := close[bar_index + 1]
// Plot Stop Loss level
plotshape(series=sl_price != na, title="Stop Loss Level", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)