
Эта стратегия отличается от традиционной стратегии остановки центральной оси. При многостороннем остановке система сразу же переворачивается; при пустом остановке система сразу же переворачивается. Эта “переворачивающаяся голова быстрее, чем переворачивающаяся книга” конструкция позволяет стратегии также удерживать прибыль в шокирующих ситуациях.
Не обращайте внимания на маленькие цифры, процентный дизайн, основанный на средней цене за 30 циклов, более научен, чем фиксированный пункт. Стоп-стоп на 0,45% соответствует колебаниям золота около 8-10 долларов, стоп-стоп на 0,60% - около 12-15 долларов. Более умным является механизм возобновления: если вы выбрали возобновление после первого стоп-стопа, то цель стоп-стопа снижается до 0,30%, а стоп-стоп - до 0,20%. Такая динамическая корректировка позволяет более консервативной стратегии после получения прибыли.
Когда ATR ниже 0.2 отметки, стратегия входит в 10-минутный период охлаждения, отвергая все новые сигналы. Эта конструкция имеет решающее значение. При низкой волатильности принудительная торговля - это отправка денег, а не ожидание.
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)