该策略主要利用滑动平均线和布林带来捕捉市场的趋势和波动。策略中使用了三种不同的移动平均线:简单移动平均线(SMA)、加权移动平均线(WMA)和指数移动平均线(EMA)。同时利用布林带来设定价格通道,上下轨分别作为开仓和平仓的信号。当价格突破布林带上轨时开空仓,突破下轨时开多仓。同时设置了更宽的布林带作为止损位,当价格突破止损布林带时平仓。总的来说,该策略试图在趋势产生时及时建仓,在风险加大时果断止损,以期获得稳定的收益。
Marina Parfenova学校项目机器人是一个基于滑动平均线和布林带的量化交易策略。它试图通过捕捉市场趋势获利,同时通过布林带止损线控制回撤。策略逻辑简单明了,适用范围广泛,可以根据市场特点灵活调整参数。但在实际应用中仍需注意震荡市、极端行情、参数优化等问题,并进一步细化资金管理和仓位管理规则。总的来说,该策略可以作为一个基础的量化交易框架,在此基础上可以不断优化和改进,以期获得更稳健的交易效果。
/*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")