
A estratégia usa breakouts e re-breakouts de múltiplas médias móveis para gerar sinais de negociação. Quando o preço quebra a média ascendente, faça mais; Quando o preço cai abaixo da média descendente, faça um fechamento.
O código usa quatro médias móveis de diferentes períodos: a linha de 21 dias, a linha de 50 dias, a linha de 100 dias e a linha de 200 dias. A entrada é feita quando o preço quebra essas linhas médias e a entrada é fechada quando o preço cai abaixo dessas linhas médias. Além disso, a estratégia também define um ponto de parada e um ponto de parada.
A ideia central da estratégia é usar a média móvel para determinar a tendência dos preços. Quando os preços quebram a linha média ascendente, indicam que estão em uma tendência ascendente, deve ser feito mais; Quando os preços caem a linha média descendente, indicam que estão em uma tendência descendente, deve ser fechado. Usando várias linhas médias de diferentes períodos, pode-se determinar a tendência com mais precisão, e também pode ser verificado o sinal de negociação através da consistência da tendência.
Os principais benefícios desta estratégia são:
Os principais riscos desta estratégia são:
Pode-se reduzir esses riscos ajustando os parâmetros da linha média e otimizando as estratégias de stop loss.
A estratégia pode ser melhorada em vários aspectos:
A estratégia, em geral, é uma estratégia típica de acompanhamento de tendências. A vantagem é que a ideia é clara, fácil de entender e implementar; a desvantagem é que é fácil gerar sinais errados. Otimizar os parâmetros e adicionar outros indicadores pode melhorar o efeito da estratégia.
/*backtest
start: 2022-11-15 00:00:00
end: 2023-11-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("DolarBasar by AlperDursun", shorttitle="DOLARBASAR", overlay=true)
// Input for Moving Averages
ma21 = ta.sma(close, 21)
ma50 = ta.sma(close, 50)
ma100 = ta.sma(close, 100)
ma200 = ta.sma(close, 200)
// Calculate the lowest point of the previous candle for stop loss
lowestLow = ta.lowest(low, 2)
// Calculate the highest point of the previous candle for stop loss
highestHigh = ta.highest(high, 2)
// Calculate take profit levels
takeProfitLong = lowestLow - 3 * (lowestLow - highestHigh)
takeProfitShort = highestHigh + 3 * (lowestLow - highestHigh)
// Entry Conditions
longCondition = ta.crossover(close, ma21) or ta.crossover(close, ma50) or ta.crossover(close, ma100) or ta.crossover(close, ma200)
shortCondition = ta.crossunder(close, ma21) or ta.crossunder(close, ma50) or ta.crossunder(close, ma100) or ta.crossunder(close, ma200)
// Stop Loss Levels
stopLossLong = lowestLow * 0.995
stopLossShort = highestHigh * 1.005
// Exit Conditions
longExitCondition = low < stopLossLong or high > takeProfitLong
shortExitCondition = high > stopLossShort or low < takeProfitShort
if (longCondition)
strategy.entry("Long", strategy.long)
if (shortCondition)
strategy.entry("Short", strategy.short)
if (longExitCondition)
strategy.exit("Long Exit", from_entry="Long", stop=stopLossLong, limit=takeProfitLong)
if (shortExitCondition)
strategy.exit("Short Exit", from_entry="Short", stop=stopLossShort, limit=takeProfitShort)