Динамическая пирамидальная стратегия

Автор:Чао Чжан, Дата: 2023-12-22 14:36:30
Тэги:

img

Обзор

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

Логика стратегии

Основная логика этой стратегии включает в себя:

  1. Открытая позиция: открыть длинную позицию с указанной ценой, если текущая позиция равна 0.

  2. Пирамидальное состояние: Пирамидальное действие запускается, если текущее время пирамидального действия меньше максимального значения, и цена падает ниже последней входной цены с предопределенным процентом.

  3. Пирамидальный способ: увеличение количества пирамид на масштабирующем факторе предыдущего и уменьшение интервала на масштабирующем факторе.

  4. Условие получения прибыли: Закрыть все позиции, если будет задействована целевая прибыль, основанная на средней цене держания.

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

Анализ преимуществ

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

  1. Снижение затрат на хранение значительно увеличивает способность к остановке убытков.

  2. Если цена восстановится, потенциал прибыли расширится и проложит путь к получению прибыли.

  3. Гибкая настройка для пирамидической логики путем установки соответствующих параметров на инкремент, количество и интервал и т.д.

  4. Контролируемый риск за счет ограничения максимального времени пирамидирования.

Анализ рисков

В то время как стратегия позволяет большего потенциала прибыли с пирамидами, некоторые риски требуют внимания:

  1. Риск потерь - предпосылка заключается в том, чтобы понести определенные убытки от пирамидизации.

  2. Риск погружения в скалы - в экстремальных случаях, таких как погружение в скалы, потери могут превышать приемлемый диапазон.

  3. Задержка или отсутствие получения прибыли - отскок цены не всегда может привести к условию получения прибыли, что является недостатком стратегии.

  4. Риск настройки параметров - Неподходящие настройки параметров, таких как коэффициент пирамиды и процент получения прибыли, могут привести к неудаче.

Следующие меры могут помочь смягчить риски:

  1. Сниженная ступенчатая шкала для контроля суммы убытков от одного ввода.

  2. Уменьшить интервал пирамиды для достижения более быстрого снижения затрат.

  3. Установите точку остановки потери соответствующим образом, а не слишком свободно.

Руководство по оптимизации

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

  1. Улучшить логику пирамиды, чтобы сделать записи более интеллектуальными и адаптивными к рыночным условиям.

  2. Оптимизировать механизмы получения прибыли для повышения эффективности, такие как отсрочка получения прибыли, частичное закрытие и т. Д., Чтобы снизить вероятность отсутствия восстановления цены.

  3. Внедрить алгоритмы машинного обучения для автоматической настройки параметров. Ключевые параметры становятся динамическими вместо статических на основе обратной связи в реальном времени.

  4. Добавление механизма стоп-лосса для ограничения максимальных потерь, таких как отслеживание стоп-лосса и принятие ордеров стоп-прибыли.

Заключение

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


/*backtest
start: 2023-12-14 00:00:00
end: 2023-12-18 19:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

strategy("DCA Bot Emulator", overlay=true, pyramiding=99, default_qty_type=strategy.cash, commission_value = 0.02)

// Date Ranges
from_month = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
from_day   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
from_year  = input(defval = 2021, title = "From Year")
to_month   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
to_day     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
to_year    = input(defval = 9999, title = "To Year")
start  = timestamp(from_year, from_month, from_day, 00, 00)  // backtest start window
finish = timestamp(to_year, to_month, to_day, 23, 59)        // backtest finish window
window = time >= start and time <= finish ? true : false // create function "within window of time"

// Strategy Inputs
price_deviation = input(2, title='Price deviation to open safety orders', maxval=0)/100
take_profit = input(1.5, title='Target Take Profit', minval=0)/100

// base order
base_order  = input(100000, title='base order') 
safe_order  = input(200, title='safe order') 
safe_order_volume_scale  = input(2, title='Safety order volume scale') 
safe_order_step_scale  = input(1, title='Safety order step scale') 

max_safe_order = input(10, title='max safe order') 
var current_so = 1
var initial_order = 0.0

// Calculate our key levels
pnl = (close - strategy.position_avg_price) / strategy.position_avg_price

take_profit_level = strategy.position_avg_price * (1 + take_profit)

// First Position
if(strategy.position_size == 0 and window)
    strategy.entry("Long", strategy.long, qty = base_order/close)
    initial_order := close
    current_so := 1

// Average Down!
if current_so > 0 and close  < initial_order * (1 - price_deviation * current_so * safe_order_step_scale) and current_so <= max_safe_order
    so_name = "SO " + tostring(current_so) 
    strategy.entry(so_name, long=strategy.long , qty = safe_order * safe_order_volume_scale /close)
    current_so := current_so + 1
    
// Take Profit!
strategy.close_all(when=take_profit_level <= close  and strategy.position_size > 0)


Больше