Esta estratégia utiliza o indicador Distance Close Bars (DCB) para determinar a tendência de preços e o indicador RSI rápido como um filtro, implementa stop loss para a tendência após a negociação.
Calcular lastg e lastr representando o último fechamento da barra verde e o último fechamento da barra vermelha.
Calcular dist como a diferença entre lastg e lastr.
Calcular o adist como SMA de distância de 30 períodos.
Gerar sinal de negociação quando dist é superior a 2 vezes a dist.
Use o indicador RSI rápido para filtrar o sinal, evitando falhas.
Entrar em negociação a uma percentagem fixa do capital próprio se o sinal não apresentar posição.
Martingale para escalar após a perda.
A posição de fechamento quando for acionada a operação stop loss ou take profit.
O indicador DCB capta de forma eficaz as tendências de médio e longo prazo.
O filtro RSI rápido evita perdas de falhas.
O trailing stop bloqueia os lucros e controla os riscos.
Martingale aumenta a posição após a perda para obter um lucro maior.
Ajustes razoáveis de parâmetros adequados a diferentes ambientes de mercado.
O DCB pode gerar sinais errados, precisa de outros filtros.
A Martingale pode amplificar as perdas, requer uma gestão de risco rigorosa.
A configuração inadequada de stop loss pode conduzir a perdas excessivas.
O dimensionamento das posições deve ser limitado para evitar uma alavancagem excessiva.
Configurações de contrato inadequadas podem levar a perdas enormes no mercado extremo.
Otimize os parâmetros do DCB para a melhor combinação.
Tente outros indicadores para substituir o filtro RSI rápido.
Otimize o stop loss e tire lucro para uma maior taxa de ganhos.
Otimizar os parâmetros da martingale para reduzir o risco.
Teste em diferentes produtos para a melhor alocação de ativos.
Usar machine learning para otimizar dinamicamente parâmetros.
Este é um conjunto de uma tendência madura seguindo estratégia. DCB determina a direção da tendência e RSI rápido filtros sinais para evitar entradas erradas. Stop loss e take profit efetivamente controla a perda de uma única negociação. Mas ainda há riscos, parâmetros precisam de otimização adicional para reduzir o risco e melhorar a estabilidade. A lógica é clara e fácil de entender, adequado para os traders de tendência de médio e longo prazo.
/*backtest start: 2023-11-07 00:00:00 end: 2023-11-14 00:00:00 period: 3m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=2 strategy(title = "Noro's Distance Strategy v1.0", shorttitle = "Distance str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 10) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(true, defval = true, title = "Short") usemar = input(true, defval = true, title = "Use Martingale") capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %") usersi = input(true, defval = true, title = "Use RSI-Filter") periodrsi = input(7, defval = 7, minval = 2, maxval = 50, title = "RSI Period") limitrsi = input(30, defval = 30, minval = 1, maxval = 50, title = "RSI Limit") fromyear = input(2018, defval = 2018, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") //Fast RSI fastup = rma(max(change(close), 0), periodrsi) fastdown = rma(-min(change(close), 0), periodrsi) fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown)) //Distance bar = close > open ? 1 : close < open ? -1 : 0 lastg = bar == 1 ? close : lastg[1] lastr = bar == -1 ? close : lastr[1] dist = lastg - lastr adist = sma(dist, 30) plot(lastg, linewidth = 3, color = lime) plot(lastr, linewidth = 3, color = red) up = bar == -1 and dist > adist * 2 dn = bar == 1 and dist > adist * 2 //RSI Filter rsidn = fastrsi < limitrsi or usersi == false rsiup = fastrsi > 100 - limitrsi or usersi == false //Signals up1 = up and rsidn dn1 = dn and rsiup exit = ((strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open)) //Arrows plotarrow(up1 ? 1 : na, colorup = blue, colordown = blue) plotarrow(dn1 ? -1 : na, colorup = blue, colordown = blue) //Trading profit = exit ? ((strategy.position_size > 0 and close > strategy.position_avg_price) or (strategy.position_size < 0 and close < strategy.position_avg_price)) ? 1 : -1 : profit[1] mult = usemar ? exit ? profit == -1 ? mult[1] * 2 : 1 : mult[1] : 1 lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 * mult : lot[1] signalup = up1 if signalup if strategy.position_size < 0 strategy.close_all() strategy.entry("long", strategy.long, needlong == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) signaldn = dn1 if signaldn if strategy.position_size > 0 strategy.close_all() strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if time > timestamp(toyear, tomonth, today, 23, 59) or exit strategy.close_all()