Esta estratégia gera sinais de negociação com base na ruptura e callback de várias linhas de média móvel.
O código usa 4 linhas médias móveis com diferentes períodos - 21 dias, 50 dias, 100 dias e 200 dias. Ele entra em posições longas quando o preço quebra essas linhas MA e entra em posições curtas quando o preço cai abaixo dessas linhas MA. Além disso, os níveis de stop loss e take profit são definidos na estratégia. Especificamente, o stop loss é definido perto do ponto mais baixo da vela anterior, e o take profit é definido em 3 vezes a distância entre o ponto mais baixo e o ponto mais alto da vela anterior.
A ideia central desta estratégia é julgar a tendência usando médias móveis. Quando o preço quebra as linhas MA ascendentes, ele indica uma tendência ascendente, então deve ir longo. Quando o preço cai abaixo das linhas MA descendentes, ele indica uma tendência descendente, então deve ir curto. Usando várias linhas MA com períodos diferentes pode julgar a tendência com mais precisão e também verificar os sinais de negociação através da consistência da tendência.
As principais vantagens desta estratégia são:
Os principais riscos desta estratégia são:
Estes riscos podem ser reduzidos ajustando os parâmetros de MA e otimizando o stop loss e o take profit.
Esta estratégia pode ser otimizada nos seguintes aspectos:
Em geral, esta é uma tendência típica após a estratégia. As vantagens são lógica clara e fácil de entender e implementar. A desvantagem é propensa a sinais falsos. A estratégia pode ser melhorada por ajuste de parâmetros e adição de outros indicadores. É adequado para a detenção de médio a longo prazo e também pode ser usado como um componente de estratégias de negociação de curto prazo.
/*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)