Estrategia de seguimiento de casillas de porcentaje dinámico


Fecha de creación: 2023-11-23 10:32:39 Última modificación: 2023-11-23 10:32:39
Copiar: 1 Número de Visitas: 605
1
Seguir
1617
Seguidores

Estrategia de seguimiento de casillas de porcentaje dinámico

Descripción general

Esta estrategia utiliza el porcentaje de cambio en el precio para establecer líneas de compra y de parada, para construir posiciones en función de la ruptura del precio de la línea de compra, y para detenerse por debajo de la línea de parada. Su principal característica es asumir un solo unidad de riesgo, es decir, solo se aumenta la posición cuando una posición anterior alcanza el objetivo de ganancias predeterminado.

Principio de estrategia

La estrategia establece primero un precio de referencia, con un 10% de este precio como un intervalo de precio, el borde superior como una línea de compra y el borde inferior como una línea de parada. Cuando el precio rompe la línea de compra, compra en cantidades fijas.

Otro punto clave de esta estrategia es el riesgo de una sola unidad. Es decir, solo se colocan nuevas posiciones después de que la posición actual haya alcanzado el objetivo de ganancias. Las nuevas posiciones también se configuran según las nuevas líneas de compra y de parada.

Análisis de las ventajas

Esta estrategia combina las ventajas del seguimiento de las pérdidas y la gestión de la acumulación de capital, permitiendo obtener ganancias al mismo tiempo que se controla el riesgo de manera eficaz.

  1. Utilizando el porcentaje de margen para establecer una línea de compra y una línea de parada, se puede seguir automáticamente la tendencia
  2. Control de riesgos en los dígitos, limitación de pérdidas
  3. En el caso de los inversores, la estrategia es invertir sólo después de obtener ganancias y evitar pérdidas.
  4. Tras obtener ganancias, se traslada a la línea de stop loss y se bloquea la ganancia.

Análisis de riesgos

La estrategia también tiene sus riesgos:

  1. La diferencia de porcentaje es demasiado grande, la línea de compra y la línea de parada están demasiado lejos, lo que aumenta el riesgo
  2. El porcentaje es demasiado pequeño, la línea de compra y la línea de parada están demasiado cerca, el espacio de ganancias es limitado
  3. La configuración incorrecta de la ventaja de parada puede detener el daño prematuramente.
  4. Las inversiones son demasiado radicales y pueden aumentar las pérdidas

Estos riesgos se pueden evitar mediante ajustes de parámetros, como el ajuste del tamaño de los intervalos porcentuales, el ajuste de las condiciones de alza de la posición, etc.

Dirección de optimización

La estrategia aún tiene espacio para ser optimizada:

  1. La posición se puede establecer después de determinar la dirección de la tendencia en combinación con los indicadores de tendencia.
  2. Se pueden agregar modelos de aprendizaje automático para que las líneas de entrada y de parada sean más inteligentes.
  3. Se pueden configurar diferentes condiciones de alza para reducir aún más el riesgo
  4. Puede probar diferentes períodos de tenencia para encontrar el período de tenencia óptimo

Resumir

Se trata de una estrategia de negociación que utiliza el porcentaje de margen. Es sencilla, práctica y controla el riesgo de manera efectiva. Mediante el ajuste de los parámetros y la optimización de los modelos, la estrategia puede convertirse en un sistema de seguimiento de tendencias fiable que genera un beneficio adicional estable para los inversores.

Código Fuente de la Estrategia
/*backtest
start: 2022-11-16 00:00:00
end: 2023-11-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © HermanBrummer 4 April 2021

strategy ("The Box Percent Strat", shorttitle="The Box", overlay = true)

///     Designed for LONG only on Daily, 2D or 3D Charts
///     Uses fixed investment risk amount, meaning you're willing to lose that amount per trade
///     Limit buy to not overpay

RiskPerTrade            = input(10000, "Risk losing this much per trade", tooltip="This calculates how much you will lose based on difference between the entry price and stop loss price")
TradeAboveMAFilterPer   = input(50, "The System won't trade if price is below this MA")

UpBoxSize               = (input(10, "Box size in %") * 0.01)+1 // 1.1 == 10% up
DnBoxSize               = 1-(input(10, "Box size in %") * 0.01) // 0.9 == 10% dn


var FirstBar            = close > 0 ? close : na
var FirstTop            = FirstBar * UpBoxSize
var FirstBot            = FirstBar * DnBoxSize


var top                 = sma(FirstTop, 1)
var bot                 = sma(FirstBot, 1)

///     The Box Calcs
if  high[2] > top
    top                 := top * UpBoxSize
    bot                 := bot * UpBoxSize
if  low[1]  < bot
    top                 := top * DnBoxSize
    bot                 := bot * DnBoxSize

 
plot(bot,   "Bot",      #ff0000) // Green
plot(top,   "Top",      #00ff00) // Red

mid                     = ((top-bot)/2)+bot 
plot(mid,   "Mid", color.gray)

TradeAboveMAFilter      = sma(close, TradeAboveMAFilterPer)
plot(TradeAboveMAFilter, "Trade AboveMAF Filter", color.yellow, 3, style=plot.style_circles)

// col = high[1] < top and high >= top ? color.white : na
// bgcolor(col)


///     Shares
RiskRange                   = close * abs(DnBoxSize - 1) // 0.9 - 1 == 1.10 // 10% abs so you don't get a neg number NB NB
Shares                      = RiskPerTrade / RiskRange 
//plot(close-RiskRange, "RiskRange", color.fuchsia)

Enter   =   high >= top
             and close[1] > TradeAboveMAFilter
             and strategy.opentrades[0] == strategy.opentrades[1]
             and strategy.opentrades[1] == strategy.opentrades[2] 
             and strategy.opentrades[2] == strategy.opentrades[3]
             and strategy.opentrades[3] == strategy.opentrades[4] 
             and strategy.opentrades[4] == strategy.opentrades[5]
             and strategy.opentrades[5] == strategy.opentrades[6]
             // won't enter if new positon was taken in the last 6 bars
             // need better code for this.

///     Buy & Sell
//  (new highs)    and  (Close above moving average filter) and (No new trades were taken receently)
if  Enter //(high >= top)  and  (close[1] > TradeAboveMAFilter) and strategy.opentrades[0] == strategy.opentrades[1] 
    strategy.order("En", strategy.long, qty=Shares, limit=top)//, stop=top)
    
//barcolor(strategy.position_size != 0 ? #00ff00 : color.gray)


// ///     If ONE Position THEN this Stop Because: 
// if  strategy.position_size == 1
//     strategy.exit("Ex", "En", stop=bot)
///     If it has more than one trad OPEN
if  strategy.position_size > 0
    strategy.exit("Ex", "En", stop=bot[2] )   // puts stop on old bot

//plot(strategy.position_avg_price, "Avg Price", color.yellow)