Эта стратегия в основном использует скользящие средние и полосы Боллинджера для улавливания рыночных тенденций и волатильности. Она использует три различных типа скользящих средних: простую скользящую среднюю (SMA), взвешенную скользящую среднюю (WMA) и экспоненциальную скользящую среднюю (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")