
A estratégia baseia-se no comprimento da entidade K para determinar a direção do vazio. Ela calcula o comprimento médio da entidade dos últimos 30 K, fazendo mais quando o comprimento da entidade do sol é maior que o comprimento da entidade média e fazendo vazio quando o comprimento da entidade do sol é maior que o comprimento da entidade média.
A estratégia primeiro calcula o corpo de comprimento de uma entidade de K-linha, e a média dos 30 últimos corpos de comprimento de uma entidade de K-linha.
Quando a linha K de hoje é a linha negativa ((bar==-1), e o comprimento da entidade é maior que o comprimento da entidade média, abra o polinômio ((up1) ).
Quando a linha K é a linha solar ((bar==1) e o comprimento da entidade é maior do que o comprimento médio da entidade, abra o formulário em branco ((dn1) ).
Depois de abrir a posição, se a linha K for a linha do sol ((bar==1) e a posição atual for lucrativa, a posição será liquidada.
Após a abertura da posição em aberto, se a linha K for a linha negativa ((bar==-1) de hoje e a posição atual for lucrativa, então a posição em aberto será a posição em aberto.
A estratégia simples e eficaz utiliza o comprimento de uma entidade de linha K para julgar a tendência de mercado, quanto mais longa a entidade, mais forte a tendência, portanto, o comprimento da entidade é usado como base para julgar a hipocrisia.
A estratégia tem as seguintes vantagens:
A estratégia é simples, clara, fácil de entender e de implementar.
Utilize o comprimento da linha K para determinar a tendência e evitar a interferência de ruído.
A média dinâmica é calculada para se adaptar às mudanças do mercado.
A definição de condições de equilíbrio lucrativo pode aumentar a taxa de retorno da estratégia.
Parâmetros de estratégia configuráveis para diferentes ambientes de mercado.
A estratégia também apresenta alguns riscos:
Uma entidade mais longa não representa necessariamente uma forte tendência, mas pode ser uma flutuação normal.
A configuração incorreta da janela de tempo de duração da entidade média pode levar a oportunidades de negociação perdidas.
O evento pode causar prejuízos estratégicos.
O excesso de tempo de posse de posições em aberto pode levar à expansão dos prejuízos.
A solução para o risco:
A análise de tendências, em combinação com outros indicadores, pode ajudar a evitar erros de negociação.
Teste diferentes parâmetros de tomada de valor e otimize o cálculo do comprimento médio da entidade.
Configure um parâmetro de stop loss para controlar perdas únicas.
Optimizar a lógica de abertura e fechamento das posições, evitando o prolongamento das mesmas.
A estratégia pode ser otimizada em:
Combine os indicadores MACD, RSI e outros para determinar a tendência, evitando sinais errados de flutuações regulares.
Testar diferentes parâmetros de uma janela de tempo de duração média de uma entidade para encontrar a combinação de parâmetros mais adequada.
Adição de lógica de controle de abertura de posição, reduzindo gradualmente a abertura de posição com o aumento do número de perdas.
Configure um stop loss móvel ou um stop loss de taxa de ganho para sair e controlar a proporção de perdas únicas.
Optimizar as condições de abertura e paz de posição, evitando transações inválidas. Por exemplo, 3 entidades de linha K consecutivas são mais longas e abrem a posição.
Evitar a negociação em determinados períodos de tempo ou antes ou depois da divulgação de dados importantes para controlar os prejuízos causados por choques cambiais.
A estratégia é clara e fácil de entender, e o tempo de entrada é julgado pela comparação das entidades da linha K com o seu comprimento médio. O espaço de otimização da estratégia é grande e pode ser ajustado de várias maneiras para que os parâmetros da estratégia sejam mais adequados ao ambiente 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()