
Динамическая стратегия по наращиванию запасов достигает цели компенсации убытков путем уменьшения средней стоимости при убытке. Когда цена вызывает условия наращивания запасов, стратегия будет наращивать запасы последовательно в определенном количестве и с определенным интервалом, а также устанавливать максимальное количество наращиваний, чтобы избежать неограниченного риска наращивания запасов.
Основная логика этой стратегии заключается в следующем:
Открытие позиции: если позиция равна 0, открытие позиции производится по указанной цене.
Условия набора позиций: если текущее количество набора позиций меньше, чем максимальное количество набора позиций, и цена ниже предварительного падения цены предыдущей позиции, то набор позиций активируется.
Накопление: количество накоплений увеличивается по одному коэффициенту скалирования предыдущего количества, а интервал накоплений уменьшается по одному коэффициенту скалирования предыдущего интервала.
Условия стоп-стопа: если задействована одна из предварительных прибылей от средней цены задержки, то все позиции стоп-стопа.
Таким образом, когда рынок неблагоприятен, эта стратегия может снизить стоимость позиции путем увеличения запаса и получить дополнительную прибыль при одновременном снятии убытков. Когда ситуация поменялась вверх, были задействованы условия остановки, и все позиции были закрыты.
Наибольшее преимущество этой стратегии заключается в том, что путем наращивания запасов достигается снижение средней стоимости и получение большей прибыли при условии терпимости к определенным потерям, что особенно очевидно в бычьих рынках. В частности, в основном есть следующие преимущества:
Можно значительно снизить стоимость удержания позиций, увеличить убыточную способность. Когда цена появляется в обратном направлении, стратегия будет наращивать позиции, таким образом, растворяя ранее более высокую цену на одиночный кремний, снижая общую стоимость.
Увеличение прибыли. После снижения затрат, прибыль расширяется, если цена отскочит, и это позволяет.
Гибкость в настройке логики наложения, можно настроить. Политика позволяет настроить параметры, такие как величина, количество, интервал наложения, пользователь может корректировать их в соответствии со своими предпочтениями.
Контролируемый риск, установленный максимальный лимит на наложение. Ограничение максимального количества наложений позволяет стратегии не наносить неограниченные наложения и контролировать риск.
Несмотря на то, что эта стратегия позволяет получить больше доходов за счет увеличения риска, есть определенные риски, о которых следует быть начеку:
Риск потери. Стратегия заключается в том, чтобы взять на себя определенный убыток. Если ситуация будет продолжаться неблагоприятно, убытки могут расшириться.
Риск падения. В экстремальных ситуациях цены могут упасть выше, чем позволяет стратегия. Это требует разумной настройки параметров набора и остановок.
Невозможность вовремя остановить рынок - это короткий план в стратегии.
Неправильная настройка параметров, таких как коэффициент нажима, остановка, может привести к провалу стратегии.
Эти риски могут быть смягчены следующими способами:
Сокращение размеров налога на добавленную стоимость и контроль за убытками.
Снижение промежутков между закупками и быстрым снижением стоимости.
Разумно установить стоп-старт. Сверхширокий стоп-старт может привести к увеличению убытков.
Учитывая, что данная стратегия использует способ наращивания риска для получения большей прибыли, ее оптимизация сосредоточена на лучшем управлении рисками и получении прибыли. В частности, существует несколько основных направлений оптимизации:
Улучшение алгоритмов логики наложения, чтобы сделать наложение более интеллектуальным и адаптированным к ситуации. Можно рассмотреть возможность наложения налога на основании таких показателей, как волатильность, ценовые скачки и т. Д.
Оптимизация методов остановки, более эффективная остановка. Можно комбинировать мобильные остановки, разбивные остановки и другие способы, чтобы уменьшить количество случаев, когда отскок не может быть остановлен.
Внедрение алгоритмов машинного обучения для оптимизации адаптации параметров. Ключевые параметры перестают быть статичными, а подстраиваются в зависимости от динамики реального времени и обратной связи.
Увеличение механизма хранения убытков, контроль максимального убытка. Способы хранения убытков могут включать в себя перемещение убытков, привязку стоп-убытков и т. д., чтобы избежать увеличения убытков, вызванных экстремальными ситуациями.
Динамическая стратегия по наращиванию запасов позволяет снизить среднюю стоимость за счет наращивания запасов, чтобы получить большую прибыль при условии надлежащего контроля риска. Такая стратегия, основанная на принятии определенного убытка, особенно популярна среди инвесторов, которые имеют более высокую потерю терпимости.
/*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)