Esta estratégia usa o comprimento do corpo da vela para determinar a direção longa e curta. Ele calcula o comprimento médio do corpo dos 30 velas recentes. Quando o comprimento do corpo da vela alta é maior que a média, ele vai longo. Quando o comprimento do corpo da vela baixa é maior que a média, ele vai curto.
Esta estratégia calcula primeiro o corpo do corpo do candelabro e o comprimento médio do corpo dos últimos 30 candelabros.
Quando o candelabro de hoje é de baixa (barra==-1) e o comprimento do corpo é maior que o comprimento médio do corpo, ele abre uma posição longa (para cima1).
Quando o candelabro de hoje está em alta (barra==1) e o comprimento do corpo é maior que o comprimento médio do corpo, ele abre uma posição curta (dn1).
Depois de abrir longo, se o candelabro de hoje for otimista (barra==1) e a posição atual for lucrativa, ele fecha a posição longa.
Depois de abrir curto, se o candelabro de hoje for de baixa (barra==-1) e a posição atual for lucrativa, ele fecha a posição curta.
A estratégia usa simples e efetivamente o comprimento do corpo do candelabro para determinar a tendência do mercado. Quanto mais longo o corpo, mais forte a tendência.
As vantagens desta estratégia:
A lógica é simples e clara, fácil de compreender e implementar.
Usando o comprimento do corpo do candelabro para determinar a tendência, evitar interferências de ruído.
Adotar um cálculo médio dinâmico, adaptar-se às alterações do mercado.
Definir condições de saída rentáveis para melhorar a rentabilidade.
Parâmetros configuráveis, adaptáveis aos diferentes ambientes de mercado.
Os riscos desta estratégia:
Corpo longo não significa necessariamente uma tendência forte, pode ser uma flutuação normal.
Uma janela de tempo de comprimento corporal médio inadequado pode perder oportunidades de negociação.
Os eventos do cisne negro podem causar perdas.
Deter posições por muito tempo pode aumentar as perdas.
Soluções:
Combine com outros indicadores para determinar a tendência, evitar negócios errados.
Teste diferentes valores de parâmetros, otimize o cálculo do comprimento médio do corpo.
Configure stop loss para controlar perda única.
Otimizar a lógica de entrada e saída para evitar a retenção demasiado longa.
A estratégia pode ser otimizada nos seguintes aspectos:
Combine MACD, RSI para determinar a tendência, evitar sinais errados de flutuações normais.
Teste diferentes parâmetros da janela de tempo de comprimento corporal médio para encontrar o conjunto de parâmetros ideal.
Adicionar a lógica de controle de dimensionamento de posição, reduzir gradualmente o tamanho da posição quando incorrer em perdas.
Estabelecer um objetivo de stop loss ou lucro para controlar a percentagem de perdas individuais.
Optimize as condições de entrada e saída para evitar negócios ineficazes.
Evite negociar em determinados períodos ou em torno da divulgação de dados importantes para controlar as perdas decorrentes da volatilidade.
A estratégia tem uma lógica clara e fácil de entender de comparar o corpo do candelabro ao seu comprimento médio para o tempo de entrada. Grande espaço para otimização a partir de múltiplas dimensões para adaptá-lo melhor para diferentes ambientes de mercado.
/*backtest start: 2023-10-16 00:00:00 end: 2023-11-15 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=3 strategy(title = "Noro's ColorBar Strategy v1.0", shorttitle = "ColorBar str v1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 0) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(true, defval = true, title = "Short") usebody = input(true, defval = true, title = "Use body") 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") //Signals bar = close > open ? 1 : close < open ? - 1 : 0 body = abs(close - open) sbody = ema(body, 30) up1 = bar == -1 and (body > sbody or usebody == false) dn1 = bar == 1 and (body > sbody or usebody == false) plus = (close > strategy.position_avg_price and strategy.position_size > 0) or (close < strategy.position_avg_price and strategy.position_size < 0) exit = ((strategy.position_size > 0 and bar == 1) or (strategy.position_size < 0 and bar == -1)) and plus if up1 strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, 01, 00, 00) and time < timestamp(toyear, tomonth, 31, 00, 00))) if dn1 strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, 01, 00, 00) and time < timestamp(toyear, tomonth, 31, 00, 00))) if time > timestamp(toyear, tomonth, 31, 00, 00) or exit strategy.close_all()