Торговый метод Balance Beam: идеальный танец, когда японские свечи встречаются с облачными графиками

HEIKEN ASHI ICHIMOKU EMA ATR
Дата создания: 2025-10-20 13:19:44 Последнее изменение: 2025-10-20 13:19:44
Копировать: 0 Количество просмотров: 136
2
Подписаться
329
Подписчики

Торговый метод Balance Beam: идеальный танец, когда японские свечи встречаются с облачными графиками Торговый метод Balance Beam: идеальный танец, когда японские свечи встречаются с облачными графиками

Что это за тактика?

Эта тактика - это как танцевать с картой на балансе! Она превращает обычную карту K в более гладкую карту Heiken Ashi, а затем в базовую линию для карты облака Ичимоку, что в техническом анализе называется “скатание на фигуре для двоих”.

🔍 Основная логика: мудрость тройной фильтрации

Суть этой стратегии заключается в “тройной системе фильтрации”, которая так же строга, как выбор объекта кардиографа! Во-первых, хрусталь Heiken Ashi должна находиться на правильной стороне базовой линии Ичимоку (это базовый порог); во-вторых, 200-циклическая EMA гарантирует, что вы будете следовать за большим трендом (не идти против течения); и, наконец, Ичимоку отстает от фильтра, чтобы убедиться, что движение направлено правильно (избегать ложных прорывов).

Это как вождение: зеленый свет (сигнал HA), хорошая дорожная обстановка (фильтр тренда) и отсутствие движения в обратном направлении (подтверждение отклонения).

Управление рисками: ATR динамический стоп-стоп

Самым умным в этой стратегии является использование ATR (средняя реальная волна) для установки стоп-ложа. Он автоматически корректируется в зависимости от волатильности рынка, как адаптивная круизная система в автомобиле.

Более того, он использует несколько временных рамок: ATR в высоких временных рамах используется для остановки (чтобы прибыль была в полном объеме), ATR в низких временных рамах используется для остановки убытков (чтобы быстрые убытки защищали деньги).

Когда лучше всего использовать боевые приложения?

Эта стратегия особенно подходит для рыночных условий, в которых есть явные тенденции. Когда рынок колеблется по боковой стороне, рекомендуется временно наблюдать, потому что Heiken Ashi легко создает ложные сигналы в нестабильных рынках. Лучший сценарий использования: 4-часовой или циклический график основных валютных пар, особенно в период подтверждения тенденций после публикации важных экономических данных.

Помните, что ни одна стратегия не является универсальной! Сила этой стратегии заключается в том, чтобы улавливать среднесрочные и долгосрочные тенденции, и если вы предпочитаете быстро входящие и выходящие короткие линии, вам, возможно, придется скорректировать параметры или найти другие стратегии.

Исходный код стратегии
/*backtest
start: 2024-10-20 00:00:00
end: 2025-10-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":500000}]
*/

// This Pine Script® code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © MahdiSalari8
//@version=6
strategy("Heiken Ashi Bas", overlay=true, 
     default_qty_type=strategy.fixed, 
     default_qty_value=0.1, 
     commission_type=strategy.commission.percent, 
     commission_value=0.07,
     initial_capital=10000000,
     pyramiding=0)  // Changed to 0

// Inputs
useTrendFilter = input.bool(true, "Use 200 EMA Trend Filter", group="Filters")
showSignals = input.bool(true, "Show Buy/Sell Signals", group="Visuals")
showEma = input.bool(false, "Show 200 EMA", group="Visuals")
atrPeriod = input.int(14, "ATR Period", minval=1, group="Risk Management")
htf = input.timeframe("5", "Higher Timeframe for TP", group="Timeframes")
ltf = input.timeframe("1", "Lower Timeframe for SL", group="Timeframes")
tpMultiplier = input.float(2.0, "TP Multiplier", minval=0.1, group="Risk Management")
slMultiplier = input.float(1.0, "SL Multiplier", minval=0.1, group="Risk Management")

// Ichimoku Divergence Settings
useDivergenceFilter = input.bool(true, "Use Ichimoku Divergence Filter", group="Ichimoku Divergence")
showDivergenceLine = input.bool(true, "Show Divergence Line", group="Ichimoku Divergence")
divergenceLookback = input.int(2, "Divergence Lookback (bars)", minval=1, maxval=20, group="Ichimoku Divergence")
divergenceLineWidth = input.int(5, "Divergence Line Width", minval=1, maxval=5, group="Ichimoku Divergence")

// Heiken Ashi Calculation
var float haOpen = na
var float haClose = na
var float haHigh = na
var float haLow = na

haClose := (open + high + low + close) / 4
haOpen := na(haOpen[1]) ? (open + close) / 2 : (haOpen[1] + haClose[1]) / 2
haHigh := math.max(high, math.max(haOpen, haClose))
haLow := math.min(low, math.min(haOpen, haClose))

// Ichimoku Baseline (Kijun-sen)
kijunPeriod = 26
kijunSen = (ta.highest(high, kijunPeriod) + ta.lowest(low, kijunPeriod)) / 2

// Ichimoku Baseline Divergence Calculation
currentBaseline = kijunSen
pastBaseline = kijunSen[divergenceLookback]

// Calculate slope (divergence)
baselineSlope = (currentBaseline - pastBaseline) / divergenceLookback

// Determine bullish/bearish divergence (exclude when slope is 0)
bullishDivergence = baselineSlope > 0
bearishDivergence = baselineSlope < 0
slopeIsZero = baselineSlope == 0

// Trend Filter (200 EMA)
ema200 = ta.ema(close, 200)

// ATR Calculation for different timeframes
htfAtr = request.security(syminfo.tickerid, htf, ta.atr(atrPeriod))
ltfAtr = request.security(syminfo.tickerid, ltf, ta.atr(atrPeriod))

// Enhanced Entry Conditions with Divergence Filter (exclude when slope is 0)
longCondition = haClose > kijunSen and 
              haClose[1] >= kijunSen[1] and 
              haClose > haOpen and 
              (haHigh - haClose) >= (haClose - haOpen) * 0.3 and 
              (not useTrendFilter or close > ema200) and
              (not useDivergenceFilter or (bullishDivergence and not slopeIsZero))

shortCondition = haClose < kijunSen and 
               haClose[1] <= kijunSen[1] and 
               haClose < haOpen and 
               (haClose - haLow) >= (haOpen - haClose) * 0.3 and 
               (not useTrendFilter or close < ema200) and
              (not useDivergenceFilter or (bearishDivergence and not slopeIsZero))

// Dynamic TP/SL based on ATR
longTp = close + (htfAtr * tpMultiplier)
longSl = close - (ltfAtr * slMultiplier)
shortTp = close - (htfAtr * tpMultiplier)
shortSl = close + (ltfAtr * slMultiplier)

// Strategy Execution
if (longCondition)
    strategy.entry("Long", strategy.long)
    strategy.exit("Long Exit", "Long", limit=longTp, stop=longSl)

if (shortCondition)
    strategy.entry("Short", strategy.short)
    strategy.exit("Short Exit", "Short", limit=shortTp, stop=shortSl)

// Plotting
plot(kijunSen, color=color.blue, title="Ichimoku Baseline", linewidth=2, display=display.all)

// Plot Divergence Line (gray when slope is 0)

plot(showEma ? ema200 : na, color=color.purple, title="200 EMA", linewidth=1, display=display.all)

// Heiken Ashi Candles with 25% opacity
candleColor = haClose > haOpen ? color.new(color.green, 75) : color.new(color.red, 75)
plotcandle(haOpen, haHigh, haLow, haClose, title="Heiken Ashi", color=candleColor, wickcolor=candleColor, bordercolor=candleColor, display=display.all)

// Plot Buy/Sell Signals with labelup/labeldown shapes
plotshape(showSignals and longCondition, style=shape.labelup, location=location.belowbar, color=color.new(color.green, 0), size=size.small, title="Buy Signal", display=display.all)
plotshape(showSignals and shortCondition, style=shape.labeldown, location=location.abovebar, color=color.new(color.red, 0), size=size.small, title="Sell Signal", display=display.all)

// Plot TP/SL levels - TP as lines with breaks, SL hidden by default
plot(strategy.position_size > 0 ? longTp : na, "Long TP", color=color.green, style=plot.style_linebr, linewidth=1, display=display.all)
plot(strategy.position_size > 0 ? longSl : na, "Long SL", color=color.red, style=plot.style_linebr, linewidth=1, display=display.none)
plot(strategy.position_size < 0 ? shortTp : na, "Short TP", color=color.green, style=plot.style_linebr, linewidth=1, display=display.all)
plot(strategy.position_size < 0 ? shortSl : na, "Short SL", color=color.red, style=plot.style_linebr, linewidth=1, display=display.none)

// Alerts
alertcondition(longCondition, "Long Signal", "HA Cross Above Kijun-sen with Bullish Divergence")
alertcondition(shortCondition, "Short Signal", "HA Cross Below Kijun-sen with Bearish Divergence")