
A estratégia é uma estratégia de cruzamento de médias móveis simples (SMA) aplicada ao mercado de criptomoedas. Utiliza três grupos de SMAs: rápida, média e lenta para identificar potenciais sinais de entrada e saída. Quando uma SMA rápida atravessa uma SMA média, gera um sinal de compra; quando uma SMA rápida atravessa uma SMA média, gera um sinal de venda.
A estratégia permite que o comerciante configure os seguintes parâmetros-chave:
De acordo com o comprimento do SMA definido pelo usuário, o SMA rápido, o SMA médio e o SMA lento são calculados, respectivamente.
Quando o SMA rápido atravessa o SMA médio, gera um sinal de compra; quando o SMA rápido atravessa o SMA médio, gera um sinal de venda.
A estratégia combina o capital da conta com a proporção de risco assumido por cada transação para calcular o capital nominal de cada transação. A estratégia combina o ATR para calcular a margem de parada e, finalmente, determinar a posição específica de cada transação.
Pode ser otimizado através de uma redução apropriada do ciclo SMA, auxiliando outros indicadores, etc.
Esta estratégia integra vários recursos de julgamento de cruzamento de SMA, gerenciamento de risco e otimização de posição, uma estratégia de acompanhamento de tendências adequada para o mercado de criptografia. Os comerciantes podem ajustar os parâmetros de acordo com o seu estilo de negociação, o ambiente de mercado e outros fatores e implementar otimização.
/*backtest
start: 2024-01-05 00:00:00
end: 2024-02-04 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Onchain Edge Trend SMA Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// Configuration Parameters
priceSource = input(close, title="Price Source")
includeIncompleteBars = input(true, title="Consider Incomplete Bars")
maForecastMethod = input(defval="flat", options=["flat", "linreg"], title="Moving Average Prediction Method")
linearRegressionLength = input(3, title="Linear Regression Length")
fastMALength = input(7, title="Fast Moving Average Length")
mediumMALength = input(30, title="Medium Moving Average Length")
slowMALength = input(50, title="Slow Moving Average Length")
tradingCapital = input(100000, title="Trading Capital")
tradeRisk = input(1, title="Trade Risk (%)")
// Calculation of Moving Averages
calculateMA(source, period) => sma(source, period)
predictMA(source, forecastLength, regressionLength) =>
maForecastMethod == "flat" ? source : linreg(source, regressionLength, forecastLength)
offset = includeIncompleteBars ? 0 : 1
actualSource = priceSource[offset]
fastMA = calculateMA(actualSource, fastMALength)
mediumMA = calculateMA(actualSource, mediumMALength)
slowMA = calculateMA(actualSource, slowMALength)
// Trading Logic
enterLong = crossover(fastMA, mediumMA)
exitLong = crossunder(fastMA, mediumMA)
// Risk and Position Sizing
riskCapital = tradingCapital * tradeRisk / 100
lossThreshold = atr(14) * 2
tradeSize = riskCapital / lossThreshold
if (enterLong)
strategy.entry("Enter Long", strategy.long, qty=tradeSize)
if (exitLong)
strategy.close("Enter Long")
// Display Moving Averages
plot(fastMA, color=color.blue, linewidth=2, title="Fast Moving Average")
plot(mediumMA, color=color.purple, linewidth=2, title="Medium Moving Average")
plot(slowMA, color=color.red, linewidth=2, title="Slow Moving Average")