
A estratégia combina as médias móveis e o volume de transações, dois indicadores técnicos essenciais, e cria regras de entrada e saída para posições longas e curtas, formando uma estratégia de negociação quantitativa completa.
Condições de entrada para a posição longa:
Condições de entrada para a posição curta:
Por baixo da média móvel rápida atravessando a média móvel lenta
A entrada de Long Posh:Fazer mais quando se cumpre os requisitos de entrada para a posição longa
A entrada de uma posição curta:Cancelar a entrada de uma posição curta
Paragem e perda: Exibe o ponto de parada e o ponto de parada após o excesso
Métodos de melhoria:
A estratégia integra o indicador de média móvel e o indicador de volume de negociação, projetando uma estratégia de negociação quantitativa completa por meio de um mecanismo de dupla confirmação. Tem os benefícios de termos de entrada claros, paradas de parada e facilidade de operação. Ao mesmo tempo, deve evitar problemas de negociação frequentes da estratégia de linha dupla, prestar atenção à qualidade dos dados de volume de negociação e evitar otimização excessiva dos parâmetros.
/*backtest
start: 2023-01-25 00:00:00
end: 2024-01-25 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("MA and Volume Strategy", overlay=true)
// Input parameters
fastLength = input(9, title="Fast MA Length")
slowLength = input(21, title="Slow MA Length")
volumePercentageThreshold = input(50, title="Volume Percentage Threshold")
// Calculate moving averages
fastMA = ta.sma(close, fastLength)
slowMA = ta.sma(close, slowLength)
// Calculate 24-hour volume and weekly volume average
dailyVolume = request.security(syminfo.tickerid, "D", volume)
weeklyVolumeAvg = ta.sma(request.security(syminfo.tickerid, "W", volume), 7)
// Strategy conditions
longCondition = ta.crossover(fastMA, slowMA) and dailyVolume < (weeklyVolumeAvg * volumePercentageThreshold / 100)
shortCondition = ta.crossunder(fastMA, slowMA)
// Set take profit and stop loss levels
takeProfitLong = close * 1.50
stopLossLong = close * 0.90
// Strategy orders
strategy.entry("Long", strategy.long, when=longCondition)
strategy.entry("Short", strategy.short, when=shortCondition)
// Plot moving averages
plot(fastMA, color=color.blue, title="Fast MA")
plot(slowMA, color=color.red, title="Slow MA")
// Plot 24-hour volume and weekly volume average
plot(dailyVolume, color=color.purple, title="24-Hour Volume", transp=0)
plot(weeklyVolumeAvg, color=color.orange, title="Weekly Volume Average")
// Plot entry signals
plotshape(series=longCondition, title="Buy Signal", color=color.green, style=shape.triangleup, size=size.small)
plotshape(series=shortCondition, title="Sell Signal", color=color.red, style=shape.triangledown, size=size.small)
// Plot take profit and stop loss levels only when a valid trade is active
plotshape(series=longCondition, title="Take Profit Long", color=color.green, style=shape.triangleup, size=size.small)
plotshape(series=longCondition, title="Stop Loss Long", color=color.red, style=shape.triangledown, size=size.small)