
Обзор
В этой стратегии используются три различных типа движущихся средних: простое движущееся среднее (SMA), весовое движущееся среднее (WMA) и индексное движущееся среднее (EMA). При этом используются движущиеся средние для установления ценового канала, а верхние и нижние колеи - как сигналы для открытия позиций.
Стратегический принцип
- Вычисляются движущиеся средние по трем различным периодам: медленная SMA, быстрая EMA и средняя WMA, которые отражают долгосрочные, краткосрочные и среднесрочные тенденции рынка соответственно.
- В зависимости от разрыва в ценовых стандартах рассчитываются две группы бурин-поясов: бурин-пояса открытия (ближе к верхнему и нижнему треку) и бурин-пояса остановки (шире к верхнему и нижнему треку). Бурин-пояса открытия используется для открытия позиций, а бурин-пояса остановки используется для остановки позиций.
- Когда быстрая EMA открывает позицию с пустыми позициями, открывается пустое положение; когда быстрая EMA открывает позицию с многочисленными позициями, открывается многочисленное положение. Это означает, что цена отклоняется от средней величины, и может быть тенденция.
- После открытия позиции, если цена в дальнейшем будет идти вверх, то все многоголовые позиции будут ликвидированы. Если цена в дальнейшем будет идти вниз, то все пустые позиции будут ликвидированы. Это делается для контроля убытков.
- Вышеуказанный процесс цикличен, что позволяет стратегии гибко корректировать позиции в соответствии с тенденциями рынка и своевременно прекращать убытки в надежде на стабильную прибыль.
Стратегические преимущества
- Для того, чтобы в полной мере охватить рыночные тенденции на различных уровнях, учитываются три различных скорости движущихся средних.
- Введение буринской полосы в качестве условия для открытия позиции, которая может быть динамично скорректирована в зависимости от волатильности рынка и гибко реагировать на ситуацию.
- Настройка зоны стоп-убытков, контроль отступлений и ликвидация позиций при резких рыночных колебаниях, чтобы избежать расширения убытков.
- Логика ясна, правила просты, их легко реализовать и оптимизировать.
- Широко распространяется, может работать на разных рынках и в разные периоды времени.
Стратегический риск
- В условиях нестабильного рынка, частое открытие позиций может привести к значительным расходам на торговлю, что может привести к потере прибыли.
- В начале трендового поворота стратегия может оставаться в трендовом направлении и привести к определенным потерям.
- Для экстремальных ситуаций, таких как быстрые скачки цен, риск может быть недостаточно хорошо контролирован.
- Неправильно выбранные параметры (например, периодичность скользящей средней, пропускная способность Блинна и т. д.) могут привести к неэффективности стратегии.
- Если рынок продолжает колебаться, стратегии могут долгое время не уловить очевидные возможности для тренда.
Направление оптимизации стратегии
- Увеличение циклов скользящих средних и параметров полосы пропускания Бринга, чтобы снизить частоту и стоимость торговли в нестабильных рынках.
- Введение большего количества технических или рыночных настроений в качестве фильтров для повышения точности сигналов открытия позиции и избежания убыточных торгов, которые могут возникнуть в начале тренда.
- Для контроля риска устанавливаются специальные правила для экстремальных ситуаций, таких как приостановка открытия новых позиций во время взлета.
- Оптимизация параметров, поиск наиболее подходящего для текущего рынка сочетания параметров, повышение устойчивости стратегии.
- Добавление правил управления позициями и управлением капиталом, таких как корректировка позиций в зависимости от силы тенденции или прибыльности, установка общей линии стоп-лосса и т. д., для дальнейшего контроля стратегического риска.
Подвести итог
Робот проекта школы Марина Парфенова - это стратегия количественного трейдинга, основанная на скользящих средних и бринговых полосах. Она пытается извлечь выгоду из рыночных тенденций, одновременно контролируя обратный ход через бринговые остановки. Логика стратегии проста, понятна, имеет широкий спектр применения и позволяет гибко корректировать параметры в зависимости от рыночных особенностей.
Исходный код стратегии
/*backtest
start: 2024-03-01 00:00:00
end: 2024-03-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy ("Marina Parfenova School Project Bot", overlay = true)
sma(price, n) =>
result = 0.0
for i = 0 to n - 1
result := result + price [i] / n
result
wma(price, n) =>
result = 0.0
sum_weight = 0.0
weight = 0.0
for i = 0 to n - 1
weight := n - 1
result := result + price [i]*weight
sum_weight := sum_weight + weight
result/sum_weight
ema(price, n) =>
result = 0.0
alpha = 2/(n + 1)
prevResult = price
if (na(result[1]) == false)
prevResult := result[1]
result := alpha * price + (1 - alpha) * prevResult
/// Настройки
n_slow = input.int(50, "Период медленной скользящей средней", step=5)
n_fast = input.int(4, "Период быстрой скользящей средней")
n_deviation = input.int(30, "Период среднеквадратического отклонения", step=5)
k_deviation_open = input.float(1.2, "Коэффициент ширины коридора покупки", step=0.1)
k_deviation_close = input.float(1.6, "Коэффициент ширины коридора продажи", step=0.1)
// ----- Линии индикаторов -----
// Медленная скользящая
sma = sma(close, n_slow)
plot(sma, color=#d3d3d3)
// Линии Боллинджера, обозначающие коридор цены
bollinger_open = k_deviation_open * ta.stdev(close, n_deviation)
open_short_line = sma + bollinger_open
plot(open_short_line, color=#ec8383)
open_long_line = sma - bollinger_open
plot(open_long_line, color=#6dd86d)
bollinger_close = k_deviation_close * ta.stdev(close, n_deviation)
close_short_line = sma + bollinger_close
plot(close_short_line, color=#e3e3e3)
close_long_line = sma - bollinger_close
plot(close_long_line, color=#e3e3e3)
// Быстрая скользящая
ema = ema(close, n_fast)
plot(ema, color = color.aqua, linewidth = 2)
// ----- Сигналы для запуска стратегии -----
// если ema пересекает линию open_short сверху вниз - сигнал на создание ордера в short
if(ema[1] >= open_short_line[1] and ema < open_short_line)
strategy.entry("short", strategy.short)
// если ema пересекает линию open_long снизу вверх - сигнал на создание ордера в long
if(ema[1] <= open_long_line[1] and ema > open_long_line)
strategy.entry("long", strategy.long)
// если свеча пересекает верхнюю линию коридора продажи - закрываем все long-ордера
if (high >= close_short_line)
strategy.close("long")
// если свеча пересекает нижнюю линию коридора продажи - закрываем все short-ордера
if (low <= close_long_line)
strategy.close("short")