Estratégia de negociação de robôs BTC de lucro por lote de vários níveis

Autora:ChaoZhang, Data: 2023-10-18 11:12:39
Tags:

img

Resumo

Esta é uma estratégia de negociação de robô BTC de lucro de lote de vários níveis. Ele entra em posições longas encontrando o ponto mais baixo e define vários pontos de lucro para saídas de lote. Ele também define um ponto de stop loss para controle de risco. Esta estratégia é adequada quando você está em alta no BTC.

Estratégia lógica

  1. Encontrar sinais de entrada: gerar sinais de compra quando o indicador CC cruzar abaixo de 0, comprar posições longas neste ponto.

  2. Configurar stop loss: definir a percentagem de stop loss através da entrada, converter para o nível de preço para stop loss.

  3. Estabelecer pontos de lucro múltiplos: 4 pontos de saída, definir percentagem de lucro para cada ponto através da entrada, converter em níveis de preço.

  4. Controle de risco: definir o tamanho máximo da posição, definir a percentagem de saída para cada ponto de saída através da entrada para a dispersão do risco.

Análise das vantagens

As vantagens desta estratégia são as seguintes:

  1. Um sinal de entrada confiável, comprando no ponto mais baixo, evitando comprar no mais alto.

  2. O lucro de multi-nível bloqueia lucros parciais, mantendo alguns lucros em funcionamento.

  3. O stop loss controla o risco e limita as perdas a um certo intervalo.

  4. As saídas de lote dispersam os riscos, evitando perdas completas de uma só vez.

  5. A redução pode ser controlada até certo ponto.

Análise de riscos

Os riscos desta estratégia são:

  1. O indicador CC não pode garantir plenamente o ponto mais baixo, pode perder oportunidades de compra.

  2. A configuração incorreta de stop loss pode causar stop loss desnecessários.

  3. As saídas impróprias dos lotes podem também conduzir à perda de lucros.

  4. É mais difícil tirar lucro em mercados variados.

  5. Pode ser difícil parar a perda em reversões bruscas.

Orientações de otimização

Optimizações potenciais:

  1. Otimize os sinais de entrada com mais indicadores ou aprendizado de máquina para melhor sincronização.

  2. Otimizar a estratégia de stop loss para torná-la mais elástica contra os movimentos do mercado.

  3. Otimizar as saídas para uma melhor adaptação aos mercados variados e em tendência.

  4. Adicione paradas para obter lucros mais flexíveis.

  5. Teste diferentes ativos para os melhores conjuntos de parâmetros.

Conclusão

Em resumo, esta é uma estratégia de negociação de BTC baseada em comprar nos pontos mais baixos com lucros e stop loss de vários níveis. Tem certas vantagens e também áreas que podem ser melhoradas.


/*backtest
start: 2023-09-17 00:00:00
end: 2023-10-17 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
args: [["v_input_1",2]]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © RafaelZioni


// © theCrypster 2020

//@version=4
// strategy(title = "BTC bot", overlay = true, pyramiding=1,initial_capital = 10000, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0.075)
strat_dir_input = input(title="Strategy Direction", defval="long", options=["long", "short", "all"])
strat_dir_value = strat_dir_input == "long" ? strategy.direction.long : strat_dir_input == "short" ? strategy.direction.short : strategy.direction.all
strategy.risk.allow_entry_in(strat_dir_value)
//INPUTS
higherTF = input("W", type=input.resolution)
pc = security(syminfo.tickerid, higherTF, close[1], lookahead=true)
ph = security(syminfo.tickerid, higherTF, high[1], lookahead=true)
pl = security(syminfo.tickerid, higherTF, low[1], lookahead=true)

PP = 0.0,R1 = 0.0, R2 = 0.0, R3 = 0.0,S1 = 0.0, S2 = 0.0, S3 = 0.0

PP := (ph + pl + pc) / 3
R1 := PP     + (PP   - pl)
S1 := PP     - (ph - PP)
R2 := PP     + (ph - pl)
S2 := PP     - (ph - pl)
factor=input(2)
R3 := ph  + factor * (PP   - pl) 
S3 := pl   - 2 * (ph - PP) 

// 
length=input(21)
//
p = close
vrsi = rsi(p, length)
pp=ema(vrsi,length)
d=(vrsi-pp)*5
cc=(vrsi+d+pp)/2
//
low1=crossover(cc,0)

sell=crossover(close[1],R3) 
//
l = low1
s=sell
if l 
    strategy.entry("buy", strategy.long)
if s 
    strategy.entry("sell", strategy.short)
per(pcnt) =>
    strategy.position_size != 0 ? round(pcnt / 100 * strategy.position_avg_price / syminfo.mintick) : float(na)
stoploss=input(title=" stop loss", defval=15, minval=0.01)
los = per(stoploss)
q1=input(title=" qty_percent1", defval=25, minval=1)
q2=input(title=" qty_percent2", defval=25, minval=1)
q3=input(title=" qty_percent3", defval=25, minval=1)
tp1=input(title=" Take profit1", defval=3, minval=0.01)
tp2=input(title=" Take profit2", defval=5, minval=0.01)
tp3=input(title=" Take profit3", defval=7, minval=0.01)
tp4=input(title=" Take profit4", defval=10, minval=0.01)
strategy.exit("x1", qty_percent = q1, profit = per(tp1), loss = los)
strategy.exit("x2", qty_percent = q2, profit = per(tp2), loss = los)
strategy.exit("x3", qty_percent = q3, profit = per(tp3), loss = los)
strategy.exit("x4", profit = per(tp4), loss = los)


Mais.