Стратегия настраивается на несколько комбинаций быстрого и медленного средних линий, которые делают больше, когда все быстрое пересекают медленную линию; когда по крайней мере один из быстрого пересекает медленную линию. Стратегия использует преимущества нескольких средних линий, чтобы сформировать более сильную систему принятия решений о позиции.
Основные компоненты и правила стратегии:
Множественная группа медленно-быстрых средних линий: использование различных средних показателей, таких как SMA, WMA, VWMA.
Получайте больше сигналов, когда проходите медленную линию на всех скоростных линиях.
Сигнал равновесия: равновесие при прохождении медленной линии под любой быстрой линией.
Стоп-стоп: фиксированная стоп-стоп-стоп в ATR.
Конфигурирование: гибко конфигурируются множественные среднелинейные параметры.
Вступление в систему путем голосования на позиции с использованием множества средних линий позволяет повысить надежность сигнала. Многочисленные параметры средних линий могут быть настроены по вашему желанию, что обеспечивает гибкость.
По сравнению с единой линейной стратегией, эта стратегия имеет следующие преимущества:
Многомерная комбинация позволяет более полно оценить тенденции.
Как избежать недоразумений при голосовании?
Свободное расположение среднелинейных параметров, большое пространство для оптимизации.
Поддержка различных среднелинейных показателей, гибкое использование.
Установка стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп.
Более длительный цикл использования имеет лучший эффект, уменьшая колебание кривой.
Вычисления просты, интуитивно понятны, просты в реализации и эксплуатации.
В целом, стабильность и долговечность лучше, чем в одиночной средней линии.
Однако эта стратегия несет в себе определенные риски:
Показатель “посредний” увеличивает сложность стратегии.
Риск переоптимизации параметров.
Средняя линия по своей природе имеет отсталое распознавание изменений тренда.
Не учитывая объемы сделок, возможны сбои.
Установка стоп-лосса является произвольной и может привести к ненужной ликвидации позиций.
Эффективность колеблется в зависимости от изменения рыночной ситуации.
Необходимо обратить внимание на коэффициент выручки и убытка, чтобы не допустить, чтобы кривая была слишком крутой.
Параметры для проверки устойчивости в нескольких разновидностях
На основе вышеприведенного анализа данная стратегия может быть усилена следующими аспектами:
Среднелинейные параметры для тестирования крепкости у разных сортов.
Увеличение количества сделок или проверка волатильности.
Оптимизация параметров стоп-лосса.
Установите максимальную допустимую отмену.
Создание механизма управления динамическими позициями.
Оценка эффективности внедрения машинного обучения.
Внимание к максимальному выводу и концентрации кривой прибыли.
В этом случае мы будем использовать методы, описанные в статье.
Эта стратегия настраивается на конфигурацию, устанавливает множественное соотношение линий, создает более стабильный механизм принятия решений о позиции. Однако любая стратегия требует предотвращения перенастройки и динамической корректировки в соответствии с рыночной обстановкой. Только постоянно оптимизируя тестирование, количественная стратегия может долгосрочно адаптироваться к рынку.
/*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/
// © levieux
//@version=5
strategy(title='Configurable Multi MA Crossover Voting System', shorttitle='Configurable Multi MA Crossover Voting System', initial_capital=1000, overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1)
crossoverConfig= input.string(defval="2x4,3x5,4x6", title="Crossover Config")
source= input.source(high)
maType= input.string("WMA", title="Moving Average Type", options=["WMA","SMA","VWMA"])
atrPeriod= input(14, title="ATR Period")
profitAtr = input(10, title="Profit ATR x")
lossAtr = input(5, title="Loss ATR x")
ma(src,length,type) =>
float ma = switch type
"SMA" => ta.sma(src, length)
"WMA" => ta.wma(src, length)
"VWMA" => ta.vwma(src, length)
crossoverGroups= str.split(crossoverConfig, ",")
crossoverCount= array.size(crossoverGroups)
crossovers= array.new_string(crossoverCount)
positions= array.new_int(crossoverCount, 0)
longVotes= 0
for i= 0 to crossoverCount-1
crossover= str.tostring(array.get(crossoverGroups, i))
crossoverBoundaries= str.split(crossover, "x")
int fastLength= math.round(str.tonumber(array.get(crossoverBoundaries, 0)))
int slowLength= math.round(str.tonumber(array.get(crossoverBoundaries, 1)))
wmaFast= ma(source,fastLength,maType)
wmaSlow= ma(source,slowLength,maType)
if wmaFast>wmaSlow
longVotes:= longVotes + 1
array.set(positions, i, 1)
longCondition= longVotes==crossoverCount and strategy.position_size==0
//profitTicks = profitAtr*ta.atr(atrPeriod)/syminfo.mintick
//lossTicks = lossAtr*ta.atr(atrPeriod)/syminfo.mintick
profitPrice= close+profitAtr*ta.atr(atrPeriod)
lossPrice= close-lossAtr*ta.atr(atrPeriod)
if strategy.position_size>0
profitPrice:= profitPrice[1]
lossPrice:= lossPrice[1]
plot(profitPrice, color=color.green)
plot(lossPrice, color=color.red)
if longCondition and profitPrice>0
strategy.entry("Long", strategy.long)
if longVotes<crossoverCount and strategy.position_size>0 and (high>profitPrice or low<lossPrice)
strategy.close("Long")
longVotes:= 0