Эта стратегия сочетает в себе среднюю стоимость доллара (DCA) с функцией отслеживания прибыли, доступной на биржевых платформах. Она устанавливает 1% отклонение цены для покупок и нацелена на 0,5% прибыли на каждую продажу. Разумная причина для целенаправленной небольшой прибыли заключается в обеспечении бесперебойной работы торгового бота, избегая застрявания во время медленных периодов рынка. На основе обратного тестирования этот бот доказал, что достаточно адаптивен, чтобы выдержать колебания рынка и манипуляции.
Стратегия сначала устанавливает конфигурируемые параметры, такие как процент остановки последнего заказа, максимальный процент отклонения от DCA, процент отклонения от цены и т. д. Затем отслеживает переменные, такие как последняя цена покупки, количество покупок, начальная цена покупки, цена остановки последнего заказа и т. д. По логике покупки, если текущая цена ниже последней цены покупки * (1 - процент отклонения от цены) и количество покупок не достигло максимума заказов DCA, он выдает сигнал покупки и записывает цену покупки. По логике продажи, если текущая цена выше последней цены покупки * (1 + процент получения прибыли), он устанавливает цену остановки последнего заказа. Если цена продолжает расти выше этой цены остановки последнего заказа, цена остановки обновляется до текущей * (1 - процент отклонения от цены). Если цена падает ниже остановки последнего заказа,
Комбинирует DCA и стоп-лосс для обеспечения средней стоимости при сохранении частичной прибыли, чтобы избежать снижения.
Гибкий механизм остановки с регулируемой прибылью и процентом остановки для минимизации риска.
Опрошенные результаты превосходят покупку и хранение, с стабильной годовой доходностью, подходящей для долгосрочных инвестиций.
Простая в реализации с регулируемыми параметрами для простого применения на основных платформах обмена.
Ограниченное количество покупок DCA означает, что убытки могут усугубиться, если рынок будет снижаться в течение длительных периодов.
Плохие настройки остановки потерь могут привести к преждевременному получению прибыли или бегущим потерям.
Стоимость торговли может уменьшить прибыль.
Недостаточный начальный капитал ограничивает количество покупок.
Внедрять адаптивные остановки, снижая процент остановки по мере достижения определенных показателей прибыли.
Включайте скользящие средние, увеличивая суммы покупок вокруг ключевых зон поддержки.
Добавить механизм ребалансирования для корректировки сумм ДСА на основе общего количества активов.
Оптимизировать настройки параметров и проверять рентабельность в различные периоды хранения.
Эта стратегия объединяет DCA и trailing stops для стабильной алгоритмической торговой доходности в течение длительных периодов. Результаты, проверенные с обратной стороны, являются сильными и подходящими для инвесторов, ориентированных на стабильный рост. Простой и чистый код делает его легким для понимания и реализации. Дальнейшие достижения производительности могут быть достигнуты путем оптимизации параметров и включения дополнительных индикаторов. В целом он предоставляет инвесторам относительно безопасное и последовательное количественное торговое решение.
/*backtest start: 2023-02-16 00:00:00 end: 2024-02-22 00:00:00 period: 1d basePeriod: 1h 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/ // © Stavolt //@version=5 strategy("DCA Strategy with Trailing Take Profit", overlay=true, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=10) // Correctly using input to define user-configurable parameters takeProfitPercent = input.float(0.6, title="Take Profit (%)", minval=0.1, maxval=5) trailingPercent = input.float(0.1, title="Trailing Stop (%)", minval=0.05, maxval=1) maxDCAOrders = input.int(10, title="Max DCA Orders", minval=1, maxval=20) priceDeviationPercent = input.float(1.0, title="Price Deviation (%)", minval=0.5, maxval=5) var float lastBuyPrice = na var int buyCount = 0 var float initialBuyPrice = na var float trailingStopPrice = na // Strategy logic here... // Note: The detailed logic for buying and selling based on the DCA strategy // needs to be tailored to your specific requirements and tested for correctness. if (buyCount < maxDCAOrders) if (na(lastBuyPrice) or close < lastBuyPrice * (1 - priceDeviationPercent / 100)) strategy.entry("Buy", strategy.long) lastBuyPrice := close buyCount += 1 if (na(initialBuyPrice)) initialBuyPrice := close if (not na(lastBuyPrice) and close > lastBuyPrice * (1 + takeProfitPercent / 100)) if (na(trailingStopPrice) or close > trailingStopPrice) trailingStopPrice := close * (1 - trailingPercent / 100) if (close < trailingStopPrice) strategy.close("Buy") lastBuyPrice := na trailingStopPrice := na buyCount := 0 initialBuyPrice := na