Стратегия разворота Golden Pivot

Pivot ATR SMA TP SL
Дата создания: 2025-09-24 18:15:36 Последнее изменение: 2025-09-24 18:15:36
Копировать: 0 Количество просмотров: 171
2
Подписаться
319
Подписчики

Стратегия разворота Golden Pivot Стратегия разворота Golden Pivot

Это не обычная центральная стратегия, а интеллектуальная торговая система, которая “переворачивает лицо”.

Эта стратегия отличается от традиционной стратегии остановки центральной оси. При многостороннем остановке система сразу же переворачивается; при пустом остановке система сразу же переворачивается. Эта “переворачивающаяся голова быстрее, чем переворачивающаяся книга” конструкция позволяет стратегии также удерживать прибыль в шокирующих ситуациях.

0.45% Stop Loss и 0.60% Stop Loss, с разумным рисково-возвратным соотношением 1:1.33.

Не обращайте внимания на маленькие цифры, процентный дизайн, основанный на средней цене за 30 циклов, более научен, чем фиксированный пункт. Стоп-стоп на 0,45% соответствует колебаниям золота около 8-10 долларов, стоп-стоп на 0,60% - около 12-15 долларов. Более умным является механизм возобновления: если вы выбрали возобновление после первого стоп-стопа, то цель стоп-стопа снижается до 0,30%, а стоп-стоп - до 0,20%. Такая динамическая корректировка позволяет более консервативной стратегии после получения прибыли.

Фильтр ATR напрямую отсекает 90% ложных сигналов

Когда ATR ниже 0.2 отметки, стратегия входит в 10-минутный период охлаждения, отвергая все новые сигналы. Эта конструкция имеет решающее значение. При низкой волатильности принудительная торговля - это отправка денег, а не ожидание.

4-2 Параметры настройки настройки настройки настройки

4 K-линии слева, 2 K-линии справа, более радикальные, чем классические 5-5 параметры. Это означает, что стратегия будет идентифицировать переломные моменты раньше, но также будет нести больший риск ложного прорыва.

Механизм случайного переворачивания - это меч с обоими лезвиями.

После остановки вероятность 50% перевернуть открыть позицию, 50% вероятность возобновить участие. Эта конструкция очень интересная, но также очень опасная.

Сценарий применения: промежуточные колебания с умеренным колебанием

Стратегия наиболее боится двух ситуаций: сверхнизких колебаний поперечного диапазона и сверхвысоких колебаний в одностороннем режиме. Первые вызывают частые остановки торговли в охлаждающем механизме, а вторые легко блокируются фильтрами большого K-линия. Наиболее подходящей является нормальная торговая среда, в которой колебания в течение дня составляют 15-30 долларов.

Примечание о риске: не стоит игнорировать риск длительного остановки

Несмотря на наличие механизма переворота, при постоянном ложном сигнале прорыва стратегия может столкнуться с непрерывными потерями. Особенно после публикации важных экономических данных, колебания рынка могут привести к неэффективности сигналов осей. Рекомендуется строго контролировать отдельные позиции и вручную приостанавливать стратегию перед важными событиями.

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

//@version=6
strategy("Gold By Ann v.2", overlay=true)

// --- Inputs ---
leftBars        = input.int(4, "Pivot Lookback Left")
rightBars       = input.int(2, "Pivot Lookback Right")
atrLength       = input.int(14, "ATR Length")
atrMult         = input.float(2.0, "ATR Multiplier")
atrThreshold    = input.float(0.2, "ATR Threshold")
cooldownMinutes = input.int(10, "Cooldown Minutes")

// --- Pivot Calculation ---
ph = ta.pivothigh(leftBars, rightBars)
pl = ta.pivotlow(leftBars, rightBars)

ma = ta.sma(close, 50)
bullishTrend = close > ma
bearishTrend = close < ma

// --- Volatility (ATR) and Cooldown ---
atrValue  = ta.atr(atrLength)
var float cooldownEnd = na

if atrValue < atrThreshold and na(cooldownEnd)
    cooldownEnd := timenow + cooldownMinutes * 60 * 1000  // ms

if not na(cooldownEnd) and timenow > cooldownEnd
    cooldownEnd := na

inCooldown = not na(cooldownEnd)

// --- Tall candle filter ---
rangeBar = high - low
isTall = rangeBar > ta.atr(5) * atrMult

// --- SL & TP based on % of 30-bar close ---
baseClose = ta.sma(close, 30)   // 30-bar average close
slPercent = 0.0045              // 0.45%
tpPercent = 0.0060              // 0.60%
tpReEntryPercent = 0.006     // 0.30% (smaller TP after re-entry)
stopReEntryPercent = 0.005   // -0.20%
stopReEntryValue   = baseClose * stopReEntryPercent


slValue   = baseClose * slPercent
tpValue   = baseClose * tpPercent
tpReValue = baseClose * tpReEntryPercent

// --- Re-entry state flag ---
var bool isReEntry = false

// --- Trade Logic (Only if NOT in cooldown) ---
if not inCooldown and not isTall
    if strategy.position_size == 0
        if not na(pl)
            strategy.entry("PivExtLE", strategy.long, comment="Long")
            isReEntry := false
        if not na(ph)
            strategy.entry("PivExtSE", strategy.short, comment="Short")
            isReEntry := false

// =====================================================
// --- Take Profit / Stop Loss with auto-flip ---
// =====================================================
// LONG
if strategy.position_size > 0 and not isTall
    entryPrice = strategy.position_avg_price
    tpLevel = entryPrice + (isReEntry ? tpReValue : tpValue)

    // Re-entry extra stop condition
    if isReEntry and close <= entryPrice - stopReEntryValue
        strategy.close("PivExtLE", comment="Stop Re-Entry Long (-0.20%)")
        isReEntry := false

    else if close >= tpLevel
        strategy.close("PivExtLE", comment=isReEntry ? "TP Long (Re-Entry)" : "TP Long")
        randChoice = (bar_index * 9301 + 49297) % 2
        if randChoice == 0
            strategy.entry("PivExtSE", strategy.short, comment="Flip to Short (TP)")
            isReEntry := false
        else
            strategy.entry("PivExtLE", strategy.long, comment="Re-Enter Long (TP)")
            isReEntry := true

    else if close <= entryPrice - slValue
        strategy.close("PivExtLE", comment="SL Long")
        strategy.entry("PivExtSE", strategy.short, comment="Flip to Short (SL)")
        isReEntry := false

// SHORT
if strategy.position_size < 0 and not isTall
    entryPrice = strategy.position_avg_price
    tpLevel = entryPrice - (isReEntry ? tpReValue : tpValue)

    // Re-entry extra stop condition
    if isReEntry and close >= entryPrice + stopReEntryValue
        strategy.close("PivExtSE", comment="Stop Re-Entry Short (-0.20%)")
        isReEntry := false

    else if close <= tpLevel
        strategy.close("PivExtSE", comment=isReEntry ? "TP Short (Re-Entry)" : "TP Short")
        strategy.entry("PivExtLE", strategy.long, comment="Flip to Long (TP)")
        isReEntry := true

    else if close >= entryPrice + slValue
        strategy.close("PivExtSE", comment="SL Short")
        strategy.entry("PivExtLE", strategy.long, comment="Flip to Long (SL)")
        isReEntry := false

// --- Plot reference ---
plot(slValue, title="SL Value (0.45% of 30-bar Close)", color=color.red)
plot(tpValue, title="TP Value (0.60% of 30-bar Close)", color=color.green)
plot(tpReValue, title="TP Value (Re-Entry 0.30%)", color=color.orange)