Стратегия намеренного изменения огибающей среднего


Дата создания: 2023-12-04 16:12:39 Последнее изменение: 2023-12-04 16:12:39
Копировать: 0 Количество просмотров: 759
1
Подписаться
1619
Подписчики

Стратегия намеренного изменения огибающей среднего

Обзор

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

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

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

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

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

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

  • Используя двойную скользящую среднюю линию, она чувствительна к краткосрочным изменениям цен и может быстро улавливать переломы тенденций.
  • Например, если мы создадим зону покрытия вблизи средней линии, то сможем более точно фиксировать ценовые перемены.
  • Например, в Китае, в Китае, в Китае, в Китае, в Китае, в Китае.
  • Быстро переключаться после получения прибыли, гибко реагировать на изменения рынка.
  • Можно свободно оптимизировать, изменяя параметры.

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

  • “Я не могу сказать, что это было бы полезно для меня, если бы я не сделал это.
  • Неправильная настройка параметров может привести к слишком частым сделкам.
  • Это требует относительной стабильности и не подходит для рынков с большими колебаниями.
  • В некоторых странах, например, в Китае, в некоторых странах, например, в Китае, в Китае, в Китае, в Китае, в Китае, в Китае, в Китае.

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

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

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

  1. Оптимизация алгоритмов перемещающейся средней линии. Можно проверить эффективность различных типов перемещающейся средней линии.

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

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

  4. Увеличение стратегии стоп-лосса. Установка движущегося стоп-лосса или стоп-лосса-ревульса позволяет эффективно контролировать одиночные потери.

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

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

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

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

//@version=5
strategy("Mean Reversion - Envelope Strategy", overlay=true )

// ----------------------- DESCRIPTION -----------------------
// THIS SCRIPT IS A MEAN REVERSION SYSTEM THAT USES A MOVING AVERAGE AS BASE CALCULATION AND A % OF THIS MOVING AVERAGE TO CALCULATE THE ENVELOPE
// BY DEFAULT, THE SYSTEM WILL PLACE LONG ORDERS ON THE MOVING AVERAGE -5% PER ENVELOPE COUNT (5%, 10% AND SO ON...)
// YOU CAN ENABLE THE SHORT ORDERS THAT WILL FOLLOW THE SAME LOGIC ON THE OPPOSITE SIDE
// THE SYSTEM WILL CLOSE EVERY ONGOING TRADE WHEN THE PRICE RETURNS TO THE MEAN

// ---------------------------------------------
// ---------------- SETTINGS -------------------
src = input(close, "Moving Average Source", group = "Moving Average")
ma_window = input.int(5, "Moving Average Window", step = 1, group = "Moving Average")
ma_type = input.string('4. DEMA', "Moving Average Type", options=['1. SMA', '2. EMA', '3. RMA', '4. DEMA'], group = "Moving Average")
enveloppe_step = input.float(0.05, "Delta Per Enveloppe", step = 0.01, group = "Envelope")
envelope_count = input.int(5, "Envelope count", options = [1, 2, 3, 4, 5], group = "Envelope")
use_longs = input.bool(true, 'Use Long Orders ?', group = "Orders") 
use_short = input.bool(false, 'Use Short Orders ?', group = "Orders")


// ---------------------------------------------
// -------------- INDICATORS -------------------
ma_funct() =>
    if(ma_type == '1. SMA') 
        ta.sma(src, ma_window)
    if(ma_type == '2. EMA') 
        ta.ema(src, ma_window)
    if(ma_type == '3. RMA') 
        ta.rma(src, ma_window)
    if(ma_type == '4. DEMA') 
        2 * ta.ema(src, ma_window) - ta.ema(ta.ema(src, ma_window), ma_window)

ma_base = ma_funct()

ma_high_1 = envelope_count > 0 ? ma_base * (1 + enveloppe_step) : na
ma_high_2 = envelope_count > 1 ? ma_base * (1 + enveloppe_step * 2) : na
ma_high_3 = envelope_count > 2 ? ma_base * (1 + enveloppe_step * 3) : na
ma_high_4 = envelope_count > 3 ? ma_base * (1 + enveloppe_step * 4) : na
ma_high_5 = envelope_count > 4 ? ma_base * (1 + enveloppe_step * 5) : na

ma_low_1 = envelope_count > 0 ? ma_base * (1 - enveloppe_step) : na
ma_low_2 = envelope_count > 0 ? ma_base * (1 - enveloppe_step * 2) : na
ma_low_3 = envelope_count > 0 ? ma_base * (1 - enveloppe_step * 3) : na
ma_low_4 = envelope_count > 0 ? ma_base * (1 - enveloppe_step * 4) : na
ma_low_5 = envelope_count > 0 ? ma_base * (1 - enveloppe_step * 5) : na


// ---------------------------------------------
// --------------- STRATEGY --------------------
if use_longs
    if envelope_count > 0 and strategy.opentrades < 1
        strategy.entry('long 1', strategy.long, limit=ma_low_1, qty=(strategy.equity / ma_low_1) * (1 / envelope_count))
    if envelope_count > 1 and strategy.opentrades < 2
        strategy.entry('long 2', strategy.long, limit=ma_low_2, qty=(strategy.equity / ma_low_2) * (1 / envelope_count))
    if envelope_count > 2 and strategy.opentrades < 3
        strategy.entry('long 3', strategy.long, limit=ma_low_3, qty=(strategy.equity / ma_low_3) * (1 / envelope_count))
    if envelope_count > 3 and strategy.opentrades < 4
        strategy.entry('long 4', strategy.long, limit=ma_low_4, qty=(strategy.equity / ma_low_4) * (1 / envelope_count))
    if envelope_count > 4 and strategy.opentrades < 5
        strategy.entry('long 5', strategy.long, limit=ma_low_5, qty=(strategy.equity / ma_low_5) * (1 / envelope_count))


if use_short
    if envelope_count > 0 and strategy.opentrades < 1
        strategy.entry('short 1', strategy.short, limit=ma_high_1, qty=(strategy.equity / ma_high_1) * (1 / envelope_count))
    if envelope_count > 1 and strategy.opentrades < 2
        strategy.entry('short 2', strategy.short, limit=ma_high_2, qty=(strategy.equity / ma_high_2) * (1 / envelope_count))
    if envelope_count > 2 and strategy.opentrades < 3
        strategy.entry('short 3', strategy.short, limit=ma_high_3, qty=(strategy.equity / ma_high_3) * (1 / envelope_count))
    if envelope_count > 3 and strategy.opentrades < 4
        strategy.entry('short 4', strategy.short, limit=ma_high_4, qty=(strategy.equity / ma_high_4) * (1 / envelope_count))
    if envelope_count > 4 and strategy.opentrades < 5
        strategy.entry('short 5', strategy.short, limit=ma_high_5, qty=(strategy.equity / ma_high_5) * (1 / envelope_count))

strategy.exit('close', limit=ma_base)


// ---------------------------------------------
// ------------------ PLOT ---------------------
ma_base_plot = plot(ma_base, title = "Base MA", color = color.orange, linewidth = 3, offset = 1)

ma_high_1_plot = plot(ma_high_1, title = "MA high 1", color = color.red, offset = 1)
ma_high_2_plot = plot(ma_high_2, title = "MA high 2", color = color.red, offset = 1)
ma_high_3_plot = plot(ma_high_3, title = "MA high 3", color = color.red, offset = 1)
ma_high_4_plot = plot(ma_high_4, title = "MA high 4", color = color.red, offset = 1)
ma_high_5_plot = plot(ma_high_5, title = "MA high 5", color = color.red, offset = 1)

ma_low_1_plot = plot(ma_low_1, title = "MA low 1", color = color.green, offset = 1)
ma_low_2_plot = plot(ma_low_2, title = "MA low 2", color = color.green, offset = 1)
ma_low_3_plot = plot(ma_low_3, title = "MA low 3", color = color.green, offset = 1)
ma_low_4_plot = plot(ma_low_4, title = "MA low 4", color = color.green, offset = 1)
ma_low_5_plot = plot(ma_low_5, title = "MA low 5", color = color.green, offset = 1)