Стратегия пересечения скользящих средних ALMA


Дата создания: 2023-09-23 15:11:02 Последнее изменение: 2023-09-23 15:11:02
Копировать: 0 Количество просмотров: 1078
1
Подписаться
1617
Подписчики

Обзор

Эта стратегия использует быстрое и медленное два Arnaud Legoux Moving Averages (ALMA) для определения торговых сигналов. ALMA является улучшением традиционных движущихся средних, которые уменьшают отставание и сглаживают кривую.

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

Основные показатели и правила торговли в рамках стратегии:

  1. Быстрый ALMA: короткий период, используется для захвата прорыва.

  2. Медленная ALMA: более длинные периоды, используемые для определения тенденций.

  3. Фильтрация заработка: действует при использовании долгосрочного среднего заработка на краткосрочном среднем зачете.

  4. Ускоренная ALMA с эффективной фильтрацией.

  5. Пиндо-сигнал: быстрый ALMA через медленный ALMA.

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

  7. Сигнал в плоском пространстве: быстрое прохождение через медленное ALMA.

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

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

По сравнению с традиционной стратегией среднелинейного пересечения, эта стратегия имеет следующие преимущества:

  1. Алгоритм ALMA уменьшает задержку и улучшает качество сигнала.

  2. Профилактика проникновения может быть предотвращена за счет фильтрации.

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

  4. Правила простые, понятные и понятные.

  5. Гибко адаптируемые средние параметры для различных рынков.

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

  7. Повышение эффективности стратегии может быть достигнуто путем оптимизации параметров средней линии.

  8. В целом, по сравнению с традиционными методами средней ставки, эта стратегия улучшила стабильность и качество сигнала.

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

Несмотря на много преимуществ, следует учитывать следующие риски:

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

  2. Параметры алгоритма ALMA влияют на эффективность стратегии.

  3. Эффект увеличения объемов сделок может вводить в заблуждение.

  4. Некоторые из них не могут полностью избежать убытков.

  5. Оптимизация параметров может привести к пересоответствию.

  6. Сигналы отключаются при аномальных перемещениях.

  7. Альгоритмы, такие как машинное обучение, могут дать лучшие результаты.

  8. Следует обратить внимание на показатели прибыли и убытка, чтобы избежать слишком высокой кривой.

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

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

  1. Оптимизация средних параметров ALMA, повышение чувствительности реакции.

  2. Попробуйте различные методы расчета объема сделок.

  3. Внедрение стратегии “стоп-лосс” и строгий контроль за убытками.

  4. В сочетании с другими индикаторами создание системы интегральных торговых сигналов.

  5. Добавление модуля машинного обучения для более интеллектуальной коррекции сигналов.

  6. В частности, он отметил, что в стране существуют много разновидностей, которые используются для разведения.

  7. Оптимизация стратегии управления капиталом, адаптация позиций к различным рынкам.

  8. Изучение стратегий устойчивости и предотвращения перенастройки.

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

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

Исходный код стратегии
/*backtest
start: 2022-09-16 00:00:00
end: 2023-09-22 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/
// © Sarahann999
// Calculations for TP/SL based off: https://kodify.net/tradingview/orders/percentage-profit/
//@version=5
strategy("ALMA Cross", overlay=true)

//User Inputs
src= (close)
long_entry = input(true, title='Long Entry')
short_entry = input(true, title='Short Entry')

//Fast Settings
ALMA1 = input(100, "ALMA Lenghth 1", group= "ALMA Fast Length Settings")
alma_offset = input.float(defval=0.85, title='Arnaud Legoux (ALMA) - Offset Value', minval=0, step=0.01)
alma_sigma = input.int(defval=6, title='Arnaud Legoux (ALMA) - Sigma Value', minval=0)
Alma1 = ta.alma(src, ALMA1, alma_offset, alma_sigma)

//Slow Settings
ALMA2 = input(120, "ALMA Length 2", group = "ALMA Slow Length Settings")
alma_offset2 = input.float(defval=0.85, title='Arnaud Legoux (ALMA) - Offset Value', minval=0, step=0.01)
alma_sigma2 = input.int(defval=6, title='Arnaud Legoux (ALMA) - Sigma Value', minval=0)
Alma2 = ta.alma(src, ALMA2, alma_offset2, alma_sigma2)

//Volume
var cumVol = 0.
cumVol += nz(volume)
if barstate.islast and cumVol == 0
    runtime.error("No volume is provided by the data vendor.")
shortlen = input.int(5, minval=1, title = "Short Length", group= "Volume Settings")
longlen = input.int(10, minval=1, title = "Long Length")
short = ta.ema(volume, shortlen)
long = ta.ema(volume, longlen)
osc = 100 * (short - long) / long

//Define Cross Conditions
buy = ta.crossover(Alma1, Alma2)
sell = ta.crossunder(Alma1, Alma2)

//Calculate Take Profit Percentage
longProfitPerc = input.float(title="Long Take Profit", group='Take Profit Percentage',
     minval=0.0, step=0.1, defval=2) / 100
shortProfitPerc = input.float(title="Short Take Profit",
     minval=0.0, step=0.1, defval=2) / 100
     
// Figure out take profit price 1
longExitPrice  = strategy.position_avg_price * (1 + longProfitPerc)
shortExitPrice = strategy.position_avg_price * (1 - shortProfitPerc)

// Make inputs that set the stop %  1
longStopPerc = input.float(title="Long Stop Loss", group='Stop Percentage',
     minval=0.0, step=0.1, defval=2.5) / 100
shortStopPerc = input.float(title="Short Stop Loss",
     minval=0.0, step=0.1, defval=2.5) / 100

// Figure Out Stop Price
longStopPrice  = strategy.position_avg_price * (1 - longStopPerc)
shortStopPrice = strategy.position_avg_price * (1 + shortStopPerc)

//Define Conditions
buySignal = buy and osc > 0
     and strategy.position_size == 0

//sellSignal 
sellSignal = sell and osc > 0
     and strategy.position_size == 0

// Submit entry orders
if buySignal and long_entry
    strategy.entry(id="Long", direction=strategy.long, alert_message="Enter Long")
    alert(message="BUY Trade Entry Alert", freq=alert.freq_once_per_bar)
    
if sellSignal and short_entry
    strategy.entry(id="Short", direction=strategy.short, alert_message="Enter Short")
    alert(message="SELL Trade Entry Alert", freq=alert.freq_once_per_bar)
    
// Submit exit orders based on take profit price
if (strategy.position_size > 0)
    strategy.exit(id="Long TP/SL", limit=longExitPrice, stop=longStopPrice, alert_message="Long Exit 1 at {{close}}")
if (strategy.position_size < 0)
    strategy.exit(id="Short TP/SL", limit=shortExitPrice, stop=shortStopPrice, alert_message="Short Exit 1 at {{close}}")

//Draw
plot(Alma1,"Alma Fast", color=color.purple, style=plot.style_circles)
plot(Alma2,"Alma Slow", color=#acb5c2, style=plot.style_circles)