
이 전략은 시장의 추세와 변동을 포착하기 위해 주로 이동 평균과 부린을 사용합니다. 이 전략은 세 가지 다른 이동 평균을 사용합니다. 간단한 이동 평균 (SMA), 중도 이동 평균 (WMA) 및 지수 이동 평균 (EMA). 부린을 사용하여 가격 경로를 설정하고 상하 궤도가 각각 포지션 평화의 신호로 작용합니다. 가격이 부린 궤도를 돌파 할 때 상하 궤도가 포지션을 열고, 상하 궤도가 포지션을 열 때 더 많은 포지션을 열습니다.
마리나 파펜로바 학교 프로젝트 로봇 (영어: Marina Parfenova School Project Robot) 은 이동 평균과 브린밴드 (영어: Brinband) 를 기반으로 한 정량화 거래 전략이다. 그것은 시장의 추세를 포착하여 이익을 얻으려 하며, 브린밴드 (영어: Brinband) 의 정지선 (영어: Stop Loss Line) 을 통해 회전을 제어한다. 전략 논리는 간단하고 명확하며, 적용 범위는 넓으며, 시장 특성에 따라 파라미터를 유연하게 조정할 수 있다. 그러나 실제 응용에서는 여전히 불안한 시장, 극단적인 상황, 파라미터 최적화 등의 문제에 주의를 기울이고, 자본 관리 및 포지션 관리 규칙을 더욱 세밀화 할 필요가 있다.
/*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")