
Se trata de una estrategia de negociación basada en la brecha de valor justo (FVG), que combina la gestión dinámica del riesgo y el objetivo de ganancias fijas. La estrategia se ejecuta en un período de tiempo de 15 minutos para capturar oportunidades de negociación potenciales mediante la identificación de brechas de precios en el mercado. Según los datos de retrospectiva, entre noviembre de 2023 y agosto de 2024, la estrategia logró una rentabilidad neta del 284.40%, con un total de 153 operaciones completadas, de las cuales la rentabilidad alcanzó el 71.24% y el factor de ganancia fue de 2.422
El núcleo de la estrategia es identificar brechas de justo valor mediante la monitorización de las relaciones de precios entre tres líneas K consecutivas. En concreto:
La estrategia ha demostrado una buena eficacia comercial mediante la combinación de la teoría de la brecha de valor justo y los métodos científicos de gestión de riesgos. La alta rentabilidad de la estrategia y el factor de ganancias estables indican que tiene un valor real.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-28 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Fair Value Gap Strategy with % SL and Fixed TP", overlay=true, initial_capital=500, default_qty_type=strategy.fixed, default_qty_value=1)
// Parameters
fvgThreshold = input.float(0.5, "FVG Threshold (%)", minval=0.1, step=0.1)
// Fixed take profit in pips
takeProfitPips = 50
// Function to convert pips to price
pipsToPriceChange(pips) =>
syminfo.mintick * pips * 10
// Function to detect Fair Value Gap
detectFVG(dir) =>
gap = 0.0
if dir > 0 // Bullish FVG
gap := low[2] - high[1]
else // Bearish FVG
gap := low[1] - high[2]
math.abs(gap) > (close * fvgThreshold / 100)
// Detect FVGs
bullishFVG = detectFVG(1)
bearishFVG = detectFVG(-1)
// Entry conditions
longCondition = bullishFVG
shortCondition = bearishFVG
// Calculate take profit level
longTakeProfit = strategy.position_avg_price + pipsToPriceChange(takeProfitPips)
shortTakeProfit = strategy.position_avg_price - pipsToPriceChange(takeProfitPips)
// Calculate stop loss amount (5% of capital)
stopLossAmount = strategy.equity * 0.01
// Execute trades
if (longCondition)
strategy.entry("Long", strategy.long)
if (shortCondition)
strategy.entry("Short", strategy.short)
// Set exit conditions
if (strategy.position_size > 0)
strategy.exit("Long TP", "Long", limit=longTakeProfit)
strategy.close("Long SL", when=strategy.openprofit < -stopLossAmount)
else if (strategy.position_size < 0)
strategy.exit("Short TP", "Short", limit=shortTakeProfit)
strategy.close("Short SL", when=strategy.openprofit < -stopLossAmount)
// Plot signals
plotshape(longCondition, "Buy Signal", location = location.belowbar, color = color.green, style = shape.triangleup, size = size.small)
plotshape(shortCondition, "Sell Signal", location = location.abovebar, color = color.red, style = shape.triangledown, size = size.small)