
Esta estrategia es un sistema de negociación bidireccional basado en el patrón de absorción de la gráfica de líneas K. La estrategia identifica los patrones con características de absorción en el mercado mediante el análisis de la dirección, la amplitud y la relación de volumen de transacción de las líneas K adyacentes, y realiza operaciones en la dirección correspondiente cuando cumple con los requisitos. La estrategia utiliza un método de gestión de fondos porcentual y tiene una lógica de apertura de posición completa.
La lógica central de la estrategia se basa en tres condiciones clave:
Cuando estas tres condiciones se cumplen al mismo tiempo, la estrategia determina la dirección de la operación en función de la dirección de la línea K más reciente: si la línea es positiva, haga más, si la línea es negativa, haga vacío. La estrategia utiliza la posición completa para operar y rastrea la posición a través de la variable de estado.
La estrategia construye un sistema de negociación completo a través de un análisis multidimensional de la forma de la línea K, la amplitud y el volumen de transacciones. Aunque existe un cierto riesgo, la estabilidad y la confiabilidad de la estrategia se pueden mejorar aún más mediante la orientación de optimización recomendada. La ventaja central de la estrategia radica en su método de análisis multidimensional y un mecanismo de gestión de estado perfeccionado, adecuado para su aplicación en entornos de mercado de gran volatilidad.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-10 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Candle Absorption Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// Условия индикатора
// 1. Две соседних свечи должны быть разнонаправленными
condition1 = (close[1] > open[1] and close < open) or (close[1] < open[1] and close > open)
// 2. Дельта по цене открытия/закрытия у первой свечи меньше, чем у следующей
delta1 = math.abs(close[1] - open[1])
delta2 = math.abs(close - open)
condition2 = delta1 < delta2
// 3. Объем первой свечи должен быть больше, а последней меньше
condition3 = volume[1] > volume and volume < volume[2]
// Проверяем выполнение всех условий
all_conditions = condition1 and condition2 and condition3
// Определяем направление для входа
is_bullish = close > open // Зеленая свеча больше (бычье поглощение)
is_bearish = close < open // Красная свеча больше (медвежье поглощение)
// Переменные для отслеживания состояния позиции
var float entryPrice = na
var bool isLong = false
var bool isShort = false
// Логика генерации сигналов
buySignal = all_conditions and is_bullish and not isLong
sellSignal = all_conditions and is_bearish and not isShort
// Обработка лонгового входа
if (buySignal)
isLong := true
isShort := false
entryPrice := close
strategy.entry("Long", strategy.long)
// Обработка шортового входа
if (sellSignal)
isLong := false
isShort := true
entryPrice := close
strategy.entry("Short", strategy.short)
// Визуализация точек поглощения
// if all_conditions
// label.new(bar_index, high, "✔", color=is_bullish ? color.green : color.red, textcolor=color.white, style=label.style_circle, size=size.small)
// Логика сброса состояния при закрытии позиции
if (strategy.position_size == 0)
isLong := false
isShort := false
entryPrice := na
// Дополнительно: можно добавить стоп-лосс и тейк-профит (пример ниже)
// strategy.exit("Exit Long", from_entry="Long", stop=low - atr(14), limit=high + atr(14))
// strategy.exit("Exit Short", from_entry="Short", stop=high + atr(14), limit=low - atr(14))