Estratégias longas e curtas baseadas em entidades K-line


Data de criação: 2023-11-16 17:14:48 última modificação: 2023-11-16 17:14:48
cópia: 0 Cliques: 649
1
focar em
1617
Seguidores

Estratégias longas e curtas baseadas em entidades K-line

Visão geral

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.

Princípio da estratégia

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.

Análise de vantagens

A estratégia tem as seguintes vantagens:

  1. A estratégia é simples, clara, fácil de entender e de implementar.

  2. Utilize o comprimento da linha K para determinar a tendência e evitar a interferência de ruído.

  3. A média dinâmica é calculada para se adaptar às mudanças do mercado.

  4. A definição de condições de equilíbrio lucrativo pode aumentar a taxa de retorno da estratégia.

  5. Parâmetros de estratégia configuráveis para diferentes ambientes de mercado.

Análise de Riscos

A estratégia também apresenta alguns riscos:

  1. Uma entidade mais longa não representa necessariamente uma forte tendência, mas pode ser uma flutuação normal.

  2. A configuração incorreta da janela de tempo de duração da entidade média pode levar a oportunidades de negociação perdidas.

  3. O evento pode causar prejuízos estratégicos.

  4. O excesso de tempo de posse de posições em aberto pode levar à expansão dos prejuízos.

A solução para o risco:

  1. A análise de tendências, em combinação com outros indicadores, pode ajudar a evitar erros de negociação.

  2. Teste diferentes parâmetros de tomada de valor e otimize o cálculo do comprimento médio da entidade.

  3. Configure um parâmetro de stop loss para controlar perdas únicas.

  4. Optimizar a lógica de abertura e fechamento das posições, evitando o prolongamento das mesmas.

Direção de otimização

A estratégia pode ser otimizada em:

  1. Combine os indicadores MACD, RSI e outros para determinar a tendência, evitando sinais errados de flutuações regulares.

  2. 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.

  3. 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.

  4. Configure um stop loss móvel ou um stop loss de taxa de ganho para sair e controlar a proporção de perdas únicas.

  5. 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.

  6. 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.

Resumir

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.

Código-fonte da estratégia
/*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()