이 전략은 주로 움직이는 평균과 볼링거 밴드를 활용하여 시장 추세와 변동성을 파악합니다. 간단한 움직이는 평균 (SMA), 가중화 된 움직이는 평균 (WMA), 기하급수적인 움직이는 평균 (EMA) 이라는 세 가지 다른 유형의 움직이는 평균을 사용합니다. 동시에 볼링거 밴드를 사용하여 가격 채널을 설정하며 상부 및 하부 밴드가 포지션을 열고 닫는 신호로 작용합니다. 가격이 상부 볼링거 밴드를 넘어서면 짧은 포지션을 열고, 하부 밴드를 넘어서면 긴 포지션을 열고, 더 넓은 볼링거 밴드를 스톱 로스 수준으로 설정하여 가격이 이러한 밴드를 넘어서면 포지션을 닫습니다. 전반적으로,이 전략은 트렌드가 발생하면 신속하게 포지션을 설정하고 손실이 증가할 때 결정적으로 위험을 절감하여 안정적인 수익을 목표로합니다.
마리나 파르페노바 스쿨 프로젝트 봇 (Marina Parfenova School Project Bot) 은 이동 평균과 볼링거 밴드를 기반으로 한 양적 거래 전략이다. 볼링거 밴드 스톱 로스 라인을 통해 드래운드를 제어하면서 시장 트렌드를 포착하여 수익을 얻으려고 한다. 전략 논리는 간단하고 직설적이며, 광범위한 응용 분야가 있으며, 매개 변수는 시장 특성에 따라 유연하게 조정할 수 있다. 그러나 실제 응용에서는 여전히 옆 시장, 극단적 조건, 매개 변수 최적화 등에 대한 관심이 필요하며 자본 및 위치 관리 규칙의 추가 정리가 필요하다. 전반적으로, 이 전략은 더 견고한 거래 결과를 달성하기 위해 지속적으로 최적화 및 개선 될 수있는 기본 양적 거래 프레임워크로 작용할 수 있다.
/*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")