Estratégia do Iceberg da Caixa Branca


Data de criação: 2023-09-26 21:02:21 última modificação: 2023-09-26 21:02:21
cópia: 0 Cliques: 754
1
focar em
1617
Seguidores

Visão geral

Esta estratégia baseia-se na negociação de equilíbrio, através da definição de três linhas de entrada de multi-cabeças e cabeças vazias, para realizar a abertura de posições de duas direções, pertencente à estratégia de acompanhamento de tendências. Quando o preço quebra a linha de equilíbrio, abra posições em sequência e faça mais ações, para realizar a entrada em lote por meio de folhas de suspensão.

Princípio da estratégia

A estratégia baseia-se principalmente na quebra da linha média para determinar a direção da tendência. Concretamente, obtém um indicador de linha média calculando a média aritmética do preço de abertura, do preço de fechamento, do preço mais alto e do preço mais baixo.

O número de pedidos para fazer mais vazio aumenta progressivamente, através da configuração de folhas de suspensão para realizar abertura de estoque. Por exemplo, a linha de entrada 1 desencadeia a abertura de 1 mão para fazer mais / vazio, a linha de entrada 2 desencadeia o aumento de 1 mão de armazenamento, a linha de entrada 3 e o aumento de 1 mão de armazenamento. Isso pode dispersar os custos de entrada e reduzir o risco de pedidos individuais.

A estratégia também estabelece um mecanismo de compensação. Quando o volume de posse não é zero, o stop loss é seguido de acordo com a configuração do preço da linha média, e se o preço cair novamente abaixo da linha média, o stop loss é eliminado. Isso pode bloquear parte dos lucros e proteger o capital.

Em geral, a estratégia aproveita os indicadores de linha média para determinar a direção da tendência, maximizando a margem de lucro através de linhas de entrada de vários níveis, enquanto configura um único risco de controle de stop loss, uma estratégia típica de acompanhamento de tendências.

Análise de vantagens

A estratégia tem as seguintes vantagens:

  1. A linha média pode ser usada para determinar a direção da tendência. A linha média pode filtrar o ruído do mercado e determinar a direção da tendência principal.

  2. Linha de entrada de vários níveis, aproveite ao máximo a faixa de execução da tendência. Com várias linhas de entrada, é possível capturar o máximo da faixa de execução da tendência, ampliando a margem de lucro.

  3. Abrir a posição em lotes, reduzir o risco individual. Dividir a entrada em várias vezes, pode dispersar o risco do pedido, reduzir o custo médio de posse da posição.

  4. Estabelecer um mecanismo de compensação de perdas para controlar eficazmente o risco. Com a compensação de perdas, pode-se parar rapidamente quando o preço voltar a cair abaixo da linha média, evitando perdas excessivas.

  5. A estratégia é clara e fácil de entender, os parâmetros são flexíveis e podem ser otimizados para diferentes mercados.

Análise de Riscos

A estratégia também apresenta alguns riscos:

  1. Probabilidade de uma linha média emitir um sinal errado. A linha média julga que há um atraso na tendência e pode emitir um sinal errado.

  2. Risco de perda causado por uma reversão de tendência. A estratégia é baseada na tendência, e uma reversão de tendência gerará maiores perdas.

  3. A linha de entrada é muito densa, o que aumenta a frequência de negociação e os custos de deslizamento.

  4. A abertura em lotes aumenta o risco de concentração de posições. Quando a posse é excessiva, o risco é concentrado.

  5. A configuração do ponto de parada não é razoável e pode parar prematuramente ou com um ponto de parada muito pequeno.

Correspondentes medidas de gestão de riscos:

  1. Optimizar os parâmetros da média e selecionar a média periódica apropriada.

  2. Atenção aos principais indicadores tecnológicos para avaliar sinais de reversão de tendências e para parar os prejuízos em tempo hábil.

  3. Ajustar a distância de configuração da linha de entrada para reduzir a frequência de negociação.

  4. Optimizar o tamanho e a proporção das posições e controlar os riscos de concentração.

  5. Testar e otimizar pontos de parada para reduzir o risco de parada.

Direção de otimização

A estratégia pode ser otimizada em:

  1. Teste diferentes parâmetros de linha média e fontes de dados, escolha o melhor indicador de linha média para determinar o efeito da tendência.

  2. Otimizar o intervalo de distância e a proporção de posições da linha de entrada multi-espaço para encontrar o melhor parâmetro.

  3. Combine outros indicadores como condições de filtragem para evitar sinais errôneos de equilíbrio, como MACD, RSI, etc.

  4. Optimizar a posição da linha de parada, também pode ser configurado o ponto de parada de acordo com a configuração dinâmica do ATR.

  5. Aumentar o julgamento de uma reversão de tendência, estabelecendo condições para o fechamento de todas as posições.

  6. Parâmetros que permitem otimizar a estratégia de acordo com os diferentes períodos do mercado.

  7. A função de ajuste dinâmico para aumentar o número de posições e determinar o número de corretores de acordo com a taxa de utilização dos fundos.

Resumir

A estratégia em geral usa uma linha uniforme para determinar a direção da tendência e a principal fonte de lucro é o comportamento da tendência. Através da entrada em vários níveis e da abertura de posições em lotes, é possível capturar a tendência de forma eficaz e expandir a área de lucro. Ao mesmo tempo, o mecanismo de parada de perda é configurado para controlar o risco.

Código-fonte da estratégia
/*backtest
start: 2022-09-19 00:00:00
end: 2023-09-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2019

//@version=4
strategy(title = "Robot WhiteBox Iceberg", shorttitle = "Robot WhiteBox Iceberg", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 3)

//Settings
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot")
len = input(3, minval = 1, title = "MA Length")
s = input(defval = "7. OHLC4", options = ["1. Open", "2. High", "3. Low", "4. Close", "5. HL2", "6. HLC3", "7. OHLC4", "8. OC2", "9. PCMA"], title = "Data")
short3 = input(true, title = "short 3")
short2 = input(true, title = "short 2")
short1 = input(true, title = "short 1")
long1 = input(true, title = "long 1")
long2 = input(true, title = "long 2")
long3 = input(true, title = "long 3")
shortlevel3 = input(15.0, title = "Short line 3")
shortlevel2 = input(10.0, title = "Short line 2")
shortlevel1 = input(5.0, title = "Short line 1")
longlevel1 = input(-5.0, title = "Long line 1")
longlevel2 = input(-10.0, title = "Long line 2")
longlevel3 = input(-15.0, title = "Long line 3")
needoffset = input(true, title = "Offset")
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")

//Variables
lots = 0.0
size = strategy.position_size
mult = 1 / syminfo.mintick
needtime = true

//MA
oc2 = (open + close) / 2
pcma = (highest(high, len) + lowest(low, len)) / 2
src = s == "1. Open" ? open : s == "2. High" ? high : s == "3. Low" ? low : s == "4. Close" ? close : s == "5. HL2" ? hl2 : s == "6. HLC3" ? hlc3 : s == "7. OHLC4" ? ohlc4 : s == "8. OC2" ? oc2: close
sma = sma(src, len)
ma = s == "9. PCMA" ? round(pcma * mult) / mult : round(sma * mult) / mult

//Levels
longline1 = 0.0
longline2 = 0.0
longline3 = 0.0
shortline1 = 0.0
shortline2 = 0.0
shortline3 = 0.0
longline1 := long1 ? round(ma * ((100 + longlevel1) / 100) * mult) / mult : close
longline2 := lots[1] == 0 ? long2 ? round(ma * ((100 + longlevel2) / 100) * mult) / mult : close : longline2[1]
longline3 := lots[1] == 0 ? long3 ? round(ma * ((100 + longlevel3) / 100) * mult) / mult : close : longline3[1]
shortline1 := short1 ? round(ma * ((100 + shortlevel1) / 100) * mult) / mult : close
shortline2 := lots[1] == 0 ? short2 ? round(ma * ((100 + shortlevel2) / 100) * mult) / mult : close : shortline2[1]
shortline3 := lots[1] == 0 ? short3 ? round(ma * ((100 + shortlevel3) / 100) * mult) / mult : close : shortline3[1]

//Lines
colorlong1 = long1 ? color.lime : na
colorlong2 = long2 ? color.lime : na
colorlong3 = long3 ? color.lime : na
colorshort1 = short1 ? color.red : na
colorshort2 = short2 ? color.red : na
colorshort3 = short3 ? color.red : na
offset = needoffset ? 1 : 0
plot(shortline3, offset = offset, color = colorshort3, title = "Short line 3")
plot(shortline2, offset = offset, color = colorshort2, title = "Short line 2")
plot(shortline1, offset = offset, color = colorshort1, title = "Short line 1")
plot(ma, offset = offset, color = color.blue, title = "MA line")
plot(longline1, offset = offset, color = colorlong1, title = "Long line 1")
plot(longline2, offset = offset, color = colorlong2, title = "Long line 2")
plot(longline3, offset = offset, color = colorlong3, title = "Long line 3")

//Trading
lot = 0.0
lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1]
if ma > 0
    lots := round(size / lot)
    strategy.entry("L1", strategy.long, lot, limit = longline1, when = (lots == 0 and long1 and needtime))
    lots := round(size / lot)
    strategy.entry("L2", strategy.long, lot, limit = longline2, when = (lots <= 1 and long2 and needtime))
    lots := round(size / lot)
    strategy.entry("L3", strategy.long, lot, limit = longline3, when = (lots <= 2 and long3 and needtime))
    lots := round(size / lot)
    strategy.entry("S1", strategy.short, lot, limit = shortline1, when = (lots == 0 and short1 and needtime))
    lots := round(size / lot)
    strategy.entry("S2", strategy.short, lot, limit = shortline2, when = (lots >= -1 and short2 and needtime))
    lots := round(size / lot)
    strategy.entry("S3", strategy.short, lot, limit = shortline3, when = (lots >= -2 and short3 and needtime))
if size > 0
    strategy.entry("TPL", strategy.short, 0, limit = ma, when = needtime)
if size < 0
    strategy.entry("TPS", strategy.long, 0, limit = ma, when = needtime)
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()
    strategy.cancel("L1")
    strategy.cancel("L2")
    strategy.cancel("L3")
    strategy.cancel("S1")
    strategy.cancel("S2")
    strategy.cancel("S3")
    strategy.cancel("TPL")
    strategy.cancel("TPS")