
Esta estratégia baseia-se em uma combinação de vários indicadores para procurar oportunidades de negociação no intervalo de tempo da linha do dia do Bitcoin. Usando principalmente indicadores como MACD, RSI, Stoch RSI, em combinação com a direção da linha de equilíbrio, para determinar a direção da tendência atual, para emitir sinais de compra e venda.
A estratégia baseia-se nos seguintes indicadores:
MACD (快线-慢线)A linha de sinalização é chamada de linha de compra quando o MACD atravessa a linha de sinalização e linha de venda quando o MACD atravessa a linha de sinalização.
O RSI é um indicador de fraqueza relativa. É um sinal de compra quando o RSI atravessa um limite definido.
O Stoch RSI. O indicador Stoch RSI reflete a tendência de sobrevenda do RSI. Quando o Stoch RSI está abaixo do limiar definido, é um sinal de compra, quando está acima do limiar definido, é um sinal de venda.
A direção da linha média. Quando o preço de fechamento atravessa a linha média, é um sinal de venda.
De acordo com esses indicadores, os sinais de negociação da estratégia são os seguintes:
Sinais de compraQuando:(Stoch RSI < 设定阈值) 且 (MACD上穿阈值 或 RSI上穿阈值)Quando?
Vender sinaisQuando:(MACD下穿0) 且 (收盘价下穿均线 或 Stoch RSI > 设定阈值)Quando?
Usando vários indicadores em combinação, é possível determinar com maior precisão a direção da tendência atual e emitir sinais de negociação em pontos de mudança de tendência.
A combinação de vários indicadores pode aumentar a precisão do julgamento e evitar os sinais errados de um único indicador.
O indicador MACD pode julgar a direção e a força da tendência atual. O indicador RSI reflete a sobrevenda e a sobrevenda. O RSI de Stoch julga a sobrevenda e a sobrevenda do RSI. A linha média julga a direção da tendência atual.
Os sinais de compra e venda estabelecem condições de combinação de vários indicadores para filtrar alguns sinais falsos e evitar transações desnecessárias.
O retrospecto da estratégia começou em 1 de janeiro de 2017 e incluiu o momento em que o Bitcoin subiu muito no final de 2017, para verificar o desempenho da estratégia no momento.
A estratégia inclui uma configuração de stop loss para controlar as perdas de uma única transação.
Embora a combinação de vários indicadores possa melhorar a precisão, também pode haver divergências entre os indicadores, o que leva a um certo risco de erro de julgamento.
Os níveis de stop loss de uma estratégia de otimização podem ser ajustados de acordo com as circunstâncias. Se o stop loss for muito amplo, ele aumentará a perda individual, e se for muito estreito, o stop loss será retirado.
A estratégia de nível de linha de tempo, não pode operar em detalhes em um período de tempo mais curto. Quando um evento surpreendente causa uma grande oscilação de curto prazo, não pode agir.
A estratégia só retoma parte da situação histórica, podendo haver riscos de sobre-adaptação. É necessário testar a estratégia em um período de tempo mais longo e em mais mercados para verificar a eficácia.
Teste mais combinações de indicadores para encontrar melhores estratégias de combinações de indicadores.
Otimizar os parâmetros do indicador para encontrar valores mais adequados.
Testar diferentes níveis de perda para encontrar a melhor combinação de perda e paragem.
O estudo foi feito em um contexto histórico mais longo, evitando a sobre-adaptação.
Tente usar essa estratégia em intervalos de tempo mais elevados, com mais frequência.
Esta estratégia combina MACD, RSI, Stoch RSI e outros indicadores para determinar a direção da tendência atual no nível da linha diária do Bitcoin e emite um sinal de negociação no ponto de mudança de tendência. Ao mesmo tempo, estabelece um stop loss para controlar o risco de negociação.
/*backtest
start: 2022-10-23 00:00:00
end: 2023-10-29 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
// Original code is from CredibleHulk and modified by bennef
strategy("BTC Daily Strategy BF", overlay=false, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.075)
/////////////// Time Frame ///////////////
testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay, 0, 0)
testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay, 0, 0)
testPeriod() => true
/////////////// Input Params ///////////////
rsi_threshold = input(30)
rsi_length = input(4)
srsi_length = input(8)
srsi_smooth = input(4)
srsi_sell_threshold = input(57)
length = input(14)
dma_signal_threshold = input(-1)
fastLength = input(11)
slowlength = input(18)
MACDLength = input(6)
MACD_signal_threshold = input(-2)
short_loss_tol = input(5)
long_loss_tol = input(5)
stop_level_long = strategy.position_avg_price * (1 - long_loss_tol / 100.0)
stop_level_short = strategy.position_avg_price * (1 + short_loss_tol / 100.0)
/////////////// Signal generation ///////////////
// MACD
MACD = ema(close, fastLength) - ema(close, slowlength)
aMACD = ema(MACD, MACDLength)
delta = MACD - aMACD
// RSI and Stochastic RSI
rs = rsi(close, rsi_length)
k = sma(stoch(rs, rs, rs, srsi_length), srsi_smooth)
// SMA
norm = sma(ohlc4, length)
threshold = close - norm
/////////////// Strategy ///////////////
long = ((crossover(delta, MACD_signal_threshold) or crossover(rs, rsi_threshold)) and k < srsi_sell_threshold)
short = (crossunder(delta, 0) or (crossunder(threshold, dma_signal_threshold) and k > srsi_sell_threshold))
if testPeriod()
strategy.entry("L", strategy.long, when = long)
strategy.entry("S", strategy.short, when = short)
strategy.exit("stop loss L", from_entry = "L", stop = stop_level_long)
strategy.exit("stop loss S", from_entry = "S", stop = stop_level_short)
/////////////// Plotting ///////////////
// MACD
plot(delta, color = delta > MACD_signal_threshold ? color.lime : delta < 0 ? color.red : color.yellow)
MACD_signal_threshold_line = hline(MACD_signal_threshold, color = color.yellow, title = "MACD Signal Threshold")
// RSI
plot(rs, color = rs > rsi_threshold ? color.lime : color.fuchsia)
rsi_threshold_line = hline(rsi_threshold, color = color.fuchsia, title = "RSI Threshold")
// Stochastic RSI
plot(k, color = k > srsi_sell_threshold ? color.lime : color.red)
srsi_sell_threshold_line = hline(srsi_sell_threshold, color = color.white, title = "Stoch RSI Threshold")
// SMA
plot(threshold / 100, color = threshold < dma_signal_threshold ? color.red : color.blue)
dma_signal_threshold_line = hline (dma_signal_threshold, color = color.blue, title = "DMA Signal Threshold")
bgcolor(long ? color.lime : short ? color.red : na, transp=50)