Эта стратегия использует быстрое и медленное два Arnaud Legoux Moving Averages (ALMA) для определения торговых сигналов. ALMA является улучшением традиционных движущихся средних, которые уменьшают отставание и сглаживают кривую.
Основные показатели и правила торговли в рамках стратегии:
Быстрый ALMA: короткий период, используется для захвата прорыва.
Медленная ALMA: более длинные периоды, используемые для определения тенденций.
Фильтрация заработка: действует при использовании долгосрочного среднего заработка на краткосрочном среднем зачете.
Ускоренная ALMA с эффективной фильтрацией.
Пиндо-сигнал: быстрый ALMA через медленный ALMA.
Сигнал пустоты: быстрая ALMA через медленную ALMA с эффективной фильтрацией.
Сигнал в плоском пространстве: быстрое прохождение через медленное ALMA.
Эта стратегия проста и интуитивно понятна, но одновременно объединяет в себе несколько технических показателей, таких как определение тенденции, захват прорыва и проверка объема сделки, что создает относительно стабильную торговую систему. Сочетание с медленной средней линией позволяет эффективно определять направление тенденции; использование алгоритма ALMA уменьшает влияние задержки на торговлю; добавление объема сделки позволяет избежать многих неопределенных ложных прорывов.
По сравнению с традиционной стратегией среднелинейного пересечения, эта стратегия имеет следующие преимущества:
Алгоритм ALMA уменьшает задержку и улучшает качество сигнала.
Профилактика проникновения может быть предотвращена за счет фильтрации.
Постепенно средняя линия будет работать вместе с большими тенденциями, чтобы избежать обратной торговли.
Правила простые, понятные и понятные.
Гибко адаптируемые средние параметры для различных рынков.
Устройство управления деньгами разумно, можно контролировать одиночные потери.
Повышение эффективности стратегии может быть достигнуто путем оптимизации параметров средней линии.
В целом, по сравнению с традиционными методами средней ставки, эта стратегия улучшила стабильность и качество сигнала.
Несмотря на много преимуществ, следует учитывать следующие риски:
По своей природе среднелинейная стратегия подвержена колебаниям рынка, что приводит к многократным убыткам.
Параметры алгоритма ALMA влияют на эффективность стратегии.
Эффект увеличения объемов сделок может вводить в заблуждение.
Некоторые из них не могут полностью избежать убытков.
Оптимизация параметров может привести к пересоответствию.
Сигналы отключаются при аномальных перемещениях.
Альгоритмы, такие как машинное обучение, могут дать лучшие результаты.
Следует обратить внимание на показатели прибыли и убытка, чтобы избежать слишком высокой кривой.
С учетом вышеперечисленных факторов риска эта стратегия может быть оптимизирована в следующих аспектах:
Оптимизация средних параметров ALMA, повышение чувствительности реакции.
Попробуйте различные методы расчета объема сделок.
Внедрение стратегии “стоп-лосс” и строгий контроль за убытками.
В сочетании с другими индикаторами создание системы интегральных торговых сигналов.
Добавление модуля машинного обучения для более интеллектуальной коррекции сигналов.
В частности, он отметил, что в стране существуют много разновидностей, которые используются для разведения.
Оптимизация стратегии управления капиталом, адаптация позиций к различным рынкам.
Изучение стратегий устойчивости и предотвращения перенастройки.
В целом, по сравнению с традиционными равнолинейными кросс-стратегиями, качество и стабильность сигналов улучшаются с помощью алгоритма 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)