
Esta estrategia utiliza brechas y rebases de múltiples medias móviles para generar señales de negociación. Cuando el precio rompa la media de la subida, haga más; cuando el precio cae por debajo de la media de la bajada, haga un vacío.
En el código se utilizan cuatro promedios móviles de diferentes períodos: las líneas de 21, 50, 100 y 200 días. La entrada se hace cuando el precio se rompe con estas líneas medias, y la entrada se cancela cuando el precio cae con estas líneas medias. Además, la estrategia también establece un punto de parada y un punto de parada.
La idea central de esta estrategia es usar las medias móviles para determinar la tendencia de los precios. Cuando los precios rompen la línea media ascendente, indica que se encuentra en una tendencia ascendente, se debe hacer más; cuando los precios caen la línea media descendente, indica que se encuentra en una tendencia descendente, se debe hacer vacío. El uso de varias líneas medias de diferentes períodos puede determinar la tendencia con mayor precisión, y también puede verificar la señal de negociación a través de la consistencia de la tendencia.
Las ventajas de esta estrategia son:
Los principales riesgos de esta estrategia son:
Estos riesgos pueden reducirse ajustando los parámetros de la línea media y optimizando las estrategias de stop loss.
La estrategia puede ser optimizada en los siguientes aspectos:
La estrategia en su conjunto es una estrategia típica de seguimiento de tendencias. La ventaja es que la idea es clara, fácil de entender y implementar; la desventaja es que es fácil generar señales erróneas.
/*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)