Стратегия взвешенной скользящей средней между временами, основанная на истинной волатильности


Дата создания: 2024-01-17 15:09:28 Последнее изменение: 2024-01-17 15:09:28
Копировать: 1 Количество просмотров: 572
1
Подписаться
1617
Подписчики

Стратегия взвешенной скользящей средней между временами, основанная на истинной волатильности

Обзор

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

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

Эта стратегия сначала рассчитывает верхнюю волну ((sub) и нижнюю волну ((baja), а затем рассчитывает WMA быстрого (corto) цикла и медленного (largo) цикла. Различия в быстром и медленном направлениях снова рассчитывают индикатор ((ind) через WMA.

После выхода на рынок, стратегия предусматривает 5 позиций, чтобы реализовать пирамидальное наращивание позиций в соответствии с уравнением (удвоение) накопления. В то же время устанавливается механизм остановки убытков, после чего при открытии позиции необходимо определить, находится ли текущая волатильность ниже линии остановки убытков, чтобы контролировать риск.

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

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

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

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

Основным риском этой стратегии является вероятность возникновения внезапных событий, которые могут привести к быстрому повороту курса и вызвать убытки в результате снятия предела убытков. Кроме того, неправильная настройка параметров может повлиять на стабильность стратегии.

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

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

Эта стратегия может быть оптимизирована в следующих аспектах:

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

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

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

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

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

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

Исходный код стратегии
/*backtest
start: 2023-01-10 00:00:00
end: 2024-01-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © MaclenMtz

//@version=5
strategy("[MACLEN] Rangos", shorttitle="Rangos [https://t.me/Bitcoin_Maclen]", overlay=false )

//------WINDOW----------

i_startTime = input(defval = timestamp("01 Jan 2022 00:00 -0700"), title = "Start Time", group = "Backtest Window")
i_endTime = input(defval = timestamp("31 Dec 2025 00:00 -0700"), title = "End Time")
window = true

//-----------------------------

sube = close>close[1] ? ta.tr : 0
baja = close<close[1] ? ta.tr : 0

corto = input(10)
largo = input(30)
suavizado = input(10)

fastDiff = ta.wma(sube, corto) - ta.wma(baja,corto)
slowDiff = ta.wma(sube, largo) - ta.wma(baja, largo)
ind = ta.wma(fastDiff - slowDiff, suavizado)

iColor = ind>0 ? color.green : ind<0 ? color.red : color.black
plot(ind, color=iColor)
plot(0, color=color.white)

long = ind[1]<ind and ind[2]<ind[1] and ind<0
short = ind[1]>ind and ind[2]>ind[1] and ind>0

plotshape(long and not long[1], style = shape.xcross, color=color.green, location=location.bottom, size=size.tiny)
plotshape(short and not short[1], style = shape.xcross, color=color.red, location=location.top, size=size.tiny)

//Contratos
contrato1 = input(50000)/(16*close)
c1 = contrato1
c2 = contrato1
c3 = contrato1*2
c4 = contrato1*4
c5 = contrato1*8

//cap_enopentrade = strategy.opentrades == 1 ? c1: strategy.opentrades == 2 ? c1+c2: strategy.opentrades == 3 ? c1+c2+c3: strategy.opentrades == 4 ? c1+c2+c3+c4: strategy.opentrades == 5 ? c1+c2+c3+c4+c5 : 0
openprofit_porc = math.round((close-strategy.position_avg_price)/strategy.position_avg_price * 100,2)

porc_tp = input.float(6.5)
safe = input(-6)

//----------------Strategy---------------------------

if strategy.opentrades == 0
    strategy.entry('BUY1', strategy.long, qty=c1, when = long and not long[1] and window)

if strategy.opentrades == 1
    strategy.entry('BUY2', strategy.long, qty=c2, when = long and not long[1] and window and openprofit_porc<safe)

if strategy.opentrades == 2
    strategy.entry('BUY3', strategy.long, qty=c3, when = long and not long[1] and window and openprofit_porc<safe)

if strategy.opentrades == 3
    strategy.entry('BUY4', strategy.long, qty=c4, when = long and not long[1] and window and openprofit_porc<safe)

if strategy.opentrades == 4
    strategy.entry('BUY5', strategy.long, qty=c5, when = long and not long[1] and window and openprofit_porc<safe)

min_prof = strategy.openprofit>0

strategy.close_all(when=short and min_prof)

plot(openprofit_porc)