
Cette stratégie est un système de négociation bidirectionnel basé sur la forme d’absorption du diagramme de K. La stratégie identifie les formes de marché qui ont des caractéristiques d’absorption en analysant la direction, l’amplitude et la relation de volume des lignes de K adjacentes et en effectuant des transactions dans la direction correspondante lorsque cela est approprié. La stratégie utilise une méthode de gestion des fonds en pourcentage, avec une logique complète d’ouverture de position.
La logique centrale de la stratégie repose sur trois conditions clés:
Lorsque ces trois conditions sont réunies, la stratégie détermine l’orientation de la transaction en fonction de la direction de la dernière ligne K: plus si c’est la ligne jaune et moins si c’est la ligne négative. La stratégie utilise la position totale pour la transaction et suit la position par les variables d’état.
La stratégie construit un système de trading complet grâce à une analyse multidimensionnelle de la forme, de l’amplitude et du volume des lignes K. Bien qu’il y ait un certain risque, la stabilité et la fiabilité de la stratégie peuvent être encore améliorées par l’orientation d’optimisation proposée. Le principal avantage de la stratégie réside dans sa méthode d’analyse multidimensionnelle et son mécanisme de gestion de l’état perfectionné, adapté à une application dans un environnement de marché très volatil.
/*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))