Многоуровневое снижение ATH динамическое отслеживание трехэтапной стратегии покупки

ATH DCA
Дата создания: 2024-12-20 14:53:04 Последнее изменение: 2024-12-20 14:53:04
Копировать: 0 Количество просмотров: 372
1
Подписаться
1617
Подписчики

Многоуровневое снижение ATH динамическое отслеживание трехэтапной стратегии покупки

Обзор

Это многоуровневая стратегия покупки, основанная на динамическом отслеживании исторических максимумов (ATH). Стратегия осуществляет покупки в серии на разных уровнях падения, отслеживая степень отступления цен от ATH, и продает все в прибыль, когда цена приближается к ATH. Стратегия использует волатильность рынка, чтобы снизить общую стоимость хранения путем систематизированного создания запасов в серии.

Стратегический принцип

Основная логика стратегии включает в себя следующие ключевые элементы:

  1. Динамический отслеживание ATH: постоянное обновление исторических максимумов и перезагрузка маркировки покупки при прорыве новых максимумов
  2. Третий уровень падения: настройка точки покупки на отступление на уровне 10%, 15% и 20% соответственно
  3. Управление фиксированными средствами: при каждой покупке используется одинаковое количество средств (~$1000)
  4. механизм снятия ликвидации: ликвидация всех позиций, когда цена восстановится в пределах 5% от ATH Стратегия заключается в том, чтобы постепенно снижать среднюю стоимость позиции в течение падения и блокировать прибыль с помощью унифицированного равного положения при рыночном отскоке.

Стратегические преимущества

  1. Распределение риска: снижение риска выбора временных точек за счет строительства складов в группах
  2. Оптимизация затрат: использование более значительных отклонений для снижения средней стоимости позиций
  3. Тренд-трек: динамические обновления ATH обеспечивают устойчивую работу во время восходящего тренда
  4. Финансовая эффективность: распределение фиксированного капитала гарантирует контролируемость использования средств
  5. Автоматизированное исполнение: четкие условия входа и выхода в поле для облегчения систематизации операций

Стратегический риск

  1. Риск обратного тренда: возможна последовательность ловушек в длительном нисходящем тренде
  2. Риск истощения капитала: возможно быстрое истощение имеющихся средств в условиях резкой волатильности рынка
  3. Риск упущенных возможностей: строгие условия покупки могут привести к упущению хороших возможностей
  4. Риск “приближения” к равновесию: единые условия равновесия могут не быть приспособлены ко всем рыночным условиям Рекомендуется управлять этими рисками, устанавливая максимальные ограничения на вывод и общий контроль позиций.

Направление оптимизации стратегии

  1. Введение фильтра тренда: добавление средней линии или динамического показателя для подтверждения общей тенденции
  2. Оптимизация управления капиталом: динамическая корректировка объема капитала при каждой покупке в зависимости от волатильности
  3. Улучшение механизма привязки: увеличение опций привязки по партиям, чтобы избежать риска привязки по одной цене
  4. Присоединение к механизму остановки убытков: установка абсолютного остановки убытков для контроля максимального риска
  5. Динамическая оптимизация параметров: автоматическая корректировка покупательских позиций в зависимости от различных рыночных циклов

Подвести итог

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

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

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © bsticks22

//@version=6

strategy("Long-term Bean Dip (v.1)", overlay=true)

// === Inputs ===
dip1 = input.float(10.0, "First Dip (%)", step=0.1)       // 10%
dip2 = input.float(15.0, "Second Dip (%)", step=0.1)      // 15%
dip3 = input.float(20.0, "Third Dip (%)", step=0.1)       // 20%
recovery_threshold = input.float(5.0, "Sell when within X% of ATH", step=0.1) // 5%
buy_amount = input.float(50000.0, "Buy Amount ($)", step=100) // $1000 increments

// === Variables ===
var float all_time_high = na
var bool dip1_bought = false
var bool dip2_bought = false
var bool dip3_bought = false

// === Update All-Time High ===
if na(all_time_high)
    all_time_high := high
else
    // Update ATH to the previous bar's high to exclude current bar's high
    all_time_high := math.max(all_time_high[1], high[1])
    if high[1] > all_time_high[1]
        // New ATH reached on the previous bar
        dip1_bought := false
        dip2_bought := false
        dip3_bought := false

// === Calculate Percentage Drop from ATH ===
percent_drop = (all_time_high - close) / all_time_high * 100.0

// === Define Dip Conditions ===
buyDip1 = (percent_drop >= dip1) and not dip1_bought
buyDip2 = (percent_drop >= dip2) and not dip2_bought
buyDip3 = (percent_drop >= dip3) and not dip3_bought

// === Calculate Quantity to Buy ===
qty1 = buy_amount / close

// === Execute Buys on Dips ===
if buyDip1
    strategy.entry("Dip1 Buy", strategy.long, qty=qty1)
    dip1_bought := true

if buyDip2
    strategy.entry("Dip2 Buy", strategy.long, qty=qty1)
    dip2_bought := true

if buyDip3
    strategy.entry("Dip3 Buy", strategy.long, qty=qty1)
    dip3_bought := true

// === Sell Condition: Recovery to Within X% of ATH ===
sell_condition = close >= all_time_high * (1 - recovery_threshold / 100.0)

// === Execute Sell on Recovery ===
if sell_condition and strategy.position_size > 0
    strategy.close_all()

// === Plotting ===
plot(all_time_high, title="All-Time High", color=color.new(color.blue, 0))
plot(all_time_high * (1 - dip1 / 100.0), title="Dip1 Level", color=color.new(color.green, 50), style=plot.style_linebr)
plot(all_time_high * (1 - dip2 / 100.0), title="Dip2 Level", color=color.new(color.orange, 50), style=plot.style_linebr)
plot(all_time_high * (1 - dip3 / 100.0), title="Dip3 Level", color=color.new(color.red, 50), style=plot.style_linebr)
plot(all_time_high * (1 - recovery_threshold / 100.0), title="Recovery Level", color=color.new(color.purple, 50), style=plot.style_linebr)

// === Plot Buy and Sell Signals ===
plotshape(buyDip1, title="Dip1 Buy", location=location.belowbar, color=color.green, style=shape.labelup, text="Buy10%")
plotshape(buyDip2, title="Dip2 Buy", location=location.belowbar, color=color.orange, style=shape.labelup, text="Buy15%")
plotshape(buyDip3, title="Dip3 Buy", location=location.belowbar, color=color.red, style=shape.labelup, text="Buy20%")
plotshape(sell_condition and strategy.position_size > 0, title="Sell", location=location.abovebar, color=color.purple, style=shape.labeldown, text="Sell")

// === Alerts ===
alertcondition(buyDip1, title="Dip1 Buy", message="Price dipped 10% from ATH, buying $1000")
alertcondition(buyDip2, title="Dip2 Buy", message="Price dipped 15% from ATH, buying $1000")
alertcondition(buyDip3, title="Dip3 Buy", message="Price dipped 20% from ATH, buying $1000")
alertcondition(sell_condition and strategy.position_size > 0, title="Sell at Recovery", message="Price recovered to within 5% of ATH, selling all")