Основная идея этой стратегии заключается в том, чтобы занять позиции с помощью переворотов, которые проверяют важные уровни поддержки / сопротивления вокруг взвешенной скользящей средней.
Эта стратегия основана на индикаторе взвешенной скользящей средней. Он сначала рассчитывает WMA определенной длины, а затем отслеживает, выходит ли цена из WMA на определенный диапазон. Когда расстояние до прорыва достигает порога, он настраивает стрелку и открывает позиции.
Стратегия предоставляет варианты между отслеживанием стоп-лосса и фиксированным стоп-лосом через параметр следа, поэтому риски могут контролироваться путем корректировки диапазона стоп-лосса.
Наибольшее преимущество заключается в сочетании реверсионных настроек с скользящими средними для захвата ключевых рыночных поворотных точек для открытия позиций. Реверсионные стратегии часто имеют хороший показатель выигрыша и соотношение риска и вознаграждения, при этом риски легко контролируются. Эта стратегия также оснащена комплексными механизмами остановки потерь и методами частичного получения прибыли, что еще больше помогает снизить риски и улучшить стабильность.
Поскольку он основан на скользящих средних, есть достаточно места для оптимизации параметров путем корректировки таких значений, как длина WMA, диапазон прорыва и т. д., чтобы проверить адаптивность на разных рынках.
Если цена не сможет запустить стоп-лосс или получить прибыль после формирования сигналов обворота и продолжит работать в первоначальном направлении, она понесет значительные плавающие потери.
Кроме того, он в значительной степени зависит от оптимизации параметров. Неправильные параметры могут легко пропустить время переворота цены или генерировать ложные сигналы. Правильное понимание поведения рынка и осторожная оценка выбора параметров необходимы через достаточные бэкстесты.
Для улучшения качества и точности сигналов можно было бы ввести больше показателей. Например, перед переломом цен можно было бы проверить дополнительные значения в определенные последние периоды, особенно краткосрочные дополнительные данные, для характеристики моделей колебаний цен. Или можно было бы добавить определенные количественные факторы для обнаружения импульса цен, волатильности и т. Д. для многофакторного моделирования.
Методы машинного обучения также могут быть протестированы для прогнозирования краткосрочного движения цен на основе исторических торговых сигналов и данных о ценах, что помогает отфильтровать ложные сигналы и улучшить качество сигнала.
Кроме того, могут быть реализованы некоторые механизмы адаптивной оптимизации.В соответствии с фактическими результатами торговли параметры или вес правила могут быть динамически скорректированы для реализации самооптимизации и ENO стратегии.
Общая работа этой стратегии стабильна. В пределах разумного параметрового пространства и рыночной среды она может достичь значительной доходности. Самое большое преимущество заключается в контролируемых рисках и потенциале оптимизации. Следующий шаг будет сосредоточен на улучшении качества сигнала и включении адаптивных возможностей оптимизации. Считается, что при постоянных улучшениях эта стратегия может стать убедительным выбором в инвестиционных портфелях.
/*backtest start: 2023-11-20 00:00:00 end: 2023-11-22 08:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title="WMA Breakout",overlay=true, initial_capital=25000, default_qty_value=1, commission_type=strategy.commission.cash_per_contract, commission_value=3.02) len = input(20, minval=1, title="Length") src = input(close, title="Source") out = wma(src, len) price_drop = input(.003, "When price drops (In Ticks) Enter Long", step=.001) price_climb = input(.003, "When price climbs (In Ticks) Enter Short", step=.001) trail = input(true, "Trailing Stop(checked), Market stop(unchecked)") stop = input(10, "Stop (in ticks)", step=1) limit = input(5, "Limit Out", step=1) //size = input(1, "Limit Position Size (pyramiding)", minval=1) timec = input(true, "Limit Time of Day (Buying Side)") //Time Session sess = input("1600-0500", "Start/Stop trades (Est time)") t = time(timeframe.period, sess) //plots plot(wma(src,len)) z = if low+price_drop<out (out-low) plotarrow(z, colorup=red) a = if high-price_climb>out (high-out) plotarrow(a, colorup=lime) av=wma(src,len) //Orders if(timec) strategy.entry("Enterlong", long=true, when=z and t>1) else strategy.entry("Enterlong", long=true, when=z) if(trail) strategy.exit("Exit","Enterlong", profit=limit, trail_points = 0, trail_offset = stop ) else strategy.exit("Exit","Enterlong", profit=limit, loss = stop ) if(timec) strategy.entry("Entershort", long=false, when=a and t>1) else strategy.entry("Entershort", long=false, when=a) if(trail) strategy.exit("Exit","Entershort", profit=limit, trail_points = 0, trail_offset = stop ) else strategy.exit("Exit","Entershort", profit=limit, loss = stop )