A ideia principal desta estratégia é determinar a direção do longo e curto com base na tendência de preço semanal. Em uma tendência de alta, ele vai longo quando há um padrão de vela de alta. Ele tira lucro quando o preço sobe para o nível de lucro pré-definido e para a perda quando cai para o nível de stop loss pré-definido.
A estratégia define em primeiro lugar as condições para julgar a tendência semanal:
isUptrend = close > close[1]
isDowntrend = close < close[1]
Se o fechamento atual for superior ao fechamento anterior, é considerado uma tendência de alta, caso contrário, é uma tendência de queda.
Em seguida, define-se o sinal de negociação intradiário:
buyCondition = getPrevDayClose() > getPrevDayOpen() and getPrevDayOpen() > getPrevDayClose()[1] and isUptrend
Isto é, o fechamento anterior é maior do que o fechamento anterior (lente de alta), e o fechamento anterior é maior do que o fechamento anterior ao dia anterior (gap up), e está em uma tendência de alta.
Depois de entrar na posição, o stop loss é definido para o fechamento anterior menos 1.382 vezes o corpo real do dia anterior:
stopLoss = getPrevDayClose() - 1.382 * (getPrevDayClose() - getPrevDayOpen())
O lucro obtido é fixado no fechamento anterior mais 2 vezes a diferença entre o fechamento anterior e o stop loss:
takeProfit = getPrevDayClose() + 2 * (getPrevDayClose() - stopLoss)
Isto realiza a estratégia de stop loss e take profit.
As vantagens desta estratégia incluem:
Há também alguns riscos:
Para controlar estes riscos, podem ser consideradas algumas otimizações:
A estratégia pode também ser otimizada das seguintes formas:
Em geral, esta é uma estratégia bastante prática, destacando a negociação de acordo com as tendências, enquanto controla os riscos. Pode servir como uma estratégia de negociação intradiária básica e pode ser otimizada modularmente para diferentes mercados e produtos para criar carteiras de negociação diversificadas.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-24 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Trend Following Strategy with Stop Loss and Take Profit", overlay=true) // Function to get previous day's close and open getPrevDayClose() => request.security(syminfo.tickerid, "D", close[1]) getPrevDayOpen() => request.security(syminfo.tickerid, "D", open[1]) // Determine weekly trend isUptrend = close > close[1] isDowntrend = close < close[1] // Determine daily conditions for buy buyCondition = getPrevDayClose() > getPrevDayOpen() and getPrevDayOpen() > getPrevDayClose()[1] and isUptrend // Calculate stop loss and take profit stopLoss = getPrevDayClose() - 1.382 * (getPrevDayClose() - getPrevDayOpen()) takeProfit = getPrevDayClose() + 2 * (getPrevDayClose() - stopLoss) // Strategy logic if (isUptrend) strategy.entry("Buy", strategy.long, when = buyCondition) strategy.exit("Take Profit/Stop Loss", from_entry="Buy", loss=stopLoss, profit=takeProfit) if (isDowntrend) strategy.entry("Sell", strategy.short) // Plotting the trend on the chart plotshape(series=isUptrend, title="Uptrend", color=color.green, style=shape.triangleup, location=location.abovebar) plotshape(series=isDowntrend, title="Downtrend", color=color.red, style=shape.triangledown, location=location.belowbar) // Plotting stop loss and take profit levels on the chart plot(stopLoss, color=color.red, title="Stop Loss", linewidth=2, style=plot.style_cross) plot(takeProfit, color=color.green, title="Take Profit", linewidth=2, style=plot.style_cross)