
La estrategia es un sistema de negociación basado en el dinamismo, que utiliza principalmente el indicador de equilibrio de poder para negociar en un período de tiempo de 4 horas. Mediante la medición de la contraposición de fuerzas entre las partes compradoras y vendedoras, se activa una señal de negociación cuando el indicador rompe el umbral predeterminado. La estrategia incluye funciones como administración de posiciones dinámicas, control de palanca ajustable y seguimiento de operaciones visuales, que pueden capturar eficazmente los puntos de inflexión de la tendencia del mercado.
El núcleo de la estrategia es medir el equilibrio de las fuerzas de compra y venta en el mercado mediante el cálculo de los precios de cierre y apertura / precios más altos y más bajos. Cuando este valor se acerca a 1, se expresa una fuerte energía alcista, y cuando se acerca a 1, se expresa una fuerte presión bajista. La lógica de negociación específica es la siguiente:
La estrategia capta los cambios de la dinámica del mercado a través de indicadores de equilibrio de fuerzas, combinados con la gestión dinámica de la posición y el control del riesgo, para construir un sistema de negociación relativamente completo. Aunque existe cierto riesgo, la estabilidad y la rentabilidad de la estrategia se pueden mejorar aún más mediante la optimización y el perfeccionamiento continuos.
/*backtest
start: 2024-02-25 00:00:00
end: 2025-02-22 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/
//@version=5
strategy(title="Balance of Power for US30 4H", format=format.price, precision=2, default_qty_type=strategy.percent_of_equity, default_qty_value=100, overlay=true, commission_value=0.01, max_labels_count=500, max_lines_count = 500)
leverage = input.float(5, "Leverage 1:", tooltip="Multiply your equity (100%) times the leverage.")
p = (close - open) / (high - low)
qty = strategy.equity * leverage / close
if ta.crossover(p, 0.8)
strategy.entry("L", strategy.long, qty=qty)
if ta.crossunder(p, -0.8)
strategy.close("L")
green = color.new(#0097a7, 0)
red = color.new(#ff195f, 0)
green90 = color.new(#0097a7, 85)
red90 = color.new(#ff195f, 85)
if strategy.position_size > strategy.position_size[1]
label.new(bar_index, low * 0.999, text="▲", textcolor=green, size=size.normal, textalign=text.align_center, color=green90, style=label.style_text_outline)
label.new(bar_index, low * 0.999, text="Buy", textcolor=green, size=size.tiny, textalign=text.align_center, color=green90, style=label.style_label_up)
if strategy.position_size < strategy.position_size[1]
label.new(bar_index, high * 1.001, text="▼", textcolor=red, size=size.normal, textalign=text.align_center, color=red90, style=label.style_text_outline)
label.new(bar_index, high * 1.001, text="Close", textcolor=red, size=size.tiny, textalign=text.align_center, color=red90, style=label.style_label_down)
var float tradeEntryPrice = na
var int tradeEntryBar = na
if strategy.position_size > 0 and strategy.position_size[1] == 0
tradeEntryPrice := close
tradeEntryBar := bar_index
if strategy.position_size == 0 and strategy.position_size[1] > 0
exitPrice = close
exitBar = bar_index
tradeColor = (exitPrice - tradeEntryPrice > 0) ? green : red
topPrice = math.max(tradeEntryPrice, exitPrice)
bottomPrice = math.min(tradeEntryPrice, exitPrice)
box.new(tradeEntryBar, topPrice, exitBar, bottomPrice, border_width=0, bgcolor=color.new(tradeColor, 85))
line.new(tradeEntryBar, topPrice, exitBar, topPrice, color=tradeColor, width=1)
line.new(tradeEntryBar, bottomPrice, exitBar, bottomPrice, color=tradeColor, width=1)