Esta estratégia calcula o último preço mais alto (lastbull) e o último preço mais baixo (lastbear). Em seguida, compara o preço atual com o lastbull e o lastbear para determinar se o preço entrou em um determinado intervalo e, assim, gera sinais de negociação.
A estratégia calcula primeiro o último preço mais elevado lastbull e o último preço mais baixo lastbear. em seguida, calcula a percentagem de mudança ddl do preço corrente próximo em relação ao lastbull, e a percentagem de mudança dds em relação ao lastbear.
Quando ddl é inferior ao sinal de limiar de sinal longo configurado, um sinal longo é gerado. Quando dds é superior ao sinal de limiar de sinal curto configurado, um sinal curto dn é gerado.
Após receber o sinal longo, ele abre uma posição longa se o parâmetro needlong for verdadeiro. Após receber o sinal curto, ele abre uma posição curta se o parâmetro needshort for verdadeiro. O tamanho da posição é calculado a partir do capital da conta.
Fecha uma posição longa quando o preço sobe após a abertura longa e fecha uma posição curta quando o preço cai após a abertura curta.
Esta estratégia combina tendência e análise de intervalo. Ela pode capturar tendências e gerar sinais de negociação a partir de quebras de intervalo. Em comparação com estratégias simples de rastreamento de tendências, ela pode rapidamente capturar uma nova direção de tendência após a quebra de intervalo.
Os parâmetros são altamente configuráveis para diferentes produtos. O intervalo de tempo de negociação pode ser configurado para evitar eventos significativos.
Não há nenhum mecanismo de stop loss nesta estratégia para limitar a perda por negociação.
O algoritmo de dimensionamento de posição pode ser personalizado com base em produtos para estabilizar o tamanho da posição.
Esta estratégia combina análise de tendências e quebra de faixa para gerar sinais de negociação, que podem capturar novas tendências e tirar proveito das características de faixa.
/*backtest start: 2023-01-25 00:00:00 end: 2024-01-31 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2019 //@version=4 strategy(title = "Noro's DDL Strategy", shorttitle = "DDL str", overlay = false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 3) //Settings needlong = input(true, title = "Long") needshort = input(true, title = "Short") capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot") signalshort = input(3.0, title = "Short, %") signallong = input(-3.0, title = "Long, %") fromyear = input(1900, defval = 1900, 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") //Levels bull = close > close[1] ? 1 : 0 bear = close < close[1] ? 1 : 0 lastbull = 0.0 lastbull := bull ? close : lastbull[1] lastbear = 0.0 lastbear := bear ? close : lastbear[1] //Signals ddl = ((close / lastbull) - 1) * 100 up = ddl < signallong dds = ((close / lastbear) - 1) * 100 dn = dds > signalshort //Lines plot(dds, style = plot.style_area, color = color.red, transp = 0) plot(ddl, style = plot.style_area, color = color.lime, transp = 0) plot(0, color = color.black, linewidth = 2, transp = 0) //Background col = (up and needlong) or (dn and needshort) ? color.yellow : na bgcolor(col, transp = 20) //Orders lot = 0.0 lot := strategy.position_size == 0 ? strategy.equity / close * capital / 100 : lot[1] truetime = true if up strategy.entry("Long", strategy.long, lot, when = needlong and truetime) if dn strategy.entry("Short", strategy.short, lot, when = needshort and truetime) if strategy.position_size > 0 and close > open strategy.entry("Close", strategy.short, 0) if strategy.position_size < 0 and close < open strategy.entry("Close", strategy.long, 0)