Estrategia de negociación de robot BTC de venta por lotes de varios niveles

El autor:¿ Qué pasa?, Fecha: 2023-10-18 11:12:39
Las etiquetas:

img

Resumen general

Esta es una estrategia de trading de robot BTC de multi-nivel para tomar ganancias. Entra en posiciones largas encontrando el punto más bajo y establece múltiples puntos de toma de ganancias para salidas de lotes. También establece un punto de stop loss para controlar el riesgo. Esta estrategia es adecuada cuando se es alcista en BTC.

Estrategia lógica

  1. Encuentra señales de entrada: genera señales de compra cuando el indicador CC cruza por debajo de 0, compra posiciones largas en este punto.

  2. Establecer el stop loss: establecer el porcentaje de stop loss a través de la entrada, convertirlo a nivel de precio para el stop loss.

  3. Establecer múltiples puntos de ganancia: 4 puntos de salida, establecer el porcentaje de ganancia para cada punto a través de la entrada, convertir a los niveles de precios.

  4. Control del riesgo: establecer el tamaño máximo de la posición, establecer el porcentaje de salida para cada punto de salida a través de la entrada para la dispersión del riesgo.

Análisis de ventajas

Las ventajas de esta estrategia son:

  1. Una señal de entrada confiable comprando en el punto más bajo, evitando comprar en los máximos.

  2. Las ganancias de múltiples niveles se bloquean en ganancias parciales mientras se mantienen algunas ganancias en funcionamiento.

  3. El stop loss controla el riesgo y limita las pérdidas a un cierto rango.

  4. Las salidas por lotes dispersan los riesgos, evitando pérdidas completas a la vez.

  5. El descenso puede controlarse hasta cierto punto.

Análisis de riesgos

Los riesgos de esta estrategia son:

  1. El indicador CC no puede garantizar completamente el punto más bajo, puede perder oportunidades de compra.

  2. La configuración incorrecta de la pérdida de parada puede causar pérdidas de parada innecesarias.

  3. Las salidas de lotes incorrectas también pueden conducir a pérdidas de beneficios.

  4. Es más difícil obtener ganancias en mercados variados.

  5. Puede ser difícil detener las pérdidas en reversos bruscos.

Direcciones de optimización

Optimizaciones potenciales:

  1. Optimice las señales de entrada con más indicadores o aprendizaje automático para un mejor tiempo.

  2. Optimizar la estrategia de stop loss para hacerla más elástica frente a los movimientos del mercado.

  3. Optimizar las salidas para una mejor adaptación en los mercados variados y de tendencia.

  4. Agregue paradas de trailing para obtener ganancias más flexibles.

  5. Prueba diferentes activos para los mejores conjuntos de parámetros.

Conclusión

En resumen, esta es una estrategia de negociación de BTC basada en comprar en los puntos más bajos con ganancias de toma de múltiples niveles y stop loss. Tiene ciertas ventajas y también áreas que se pueden mejorar.


/*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)


Más.