슬라이딩 평균과 볼린저 밴드 양적 거래 전략

SMA WMA EMA
생성 날짜: 2024-04-26 11:45:05 마지막으로 수정됨: 2024-04-26 11:45:05
복사: 4 클릭수: 596
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

슬라이딩 평균과 볼린저 밴드 양적 거래 전략

개요

이 전략은 시장의 추세와 변동을 포착하기 위해 주로 이동 평균과 부린을 사용합니다. 이 전략은 세 가지 다른 이동 평균을 사용합니다. 간단한 이동 평균 (SMA), 중도 이동 평균 (WMA) 및 지수 이동 평균 (EMA). 부린을 사용하여 가격 경로를 설정하고 상하 궤도가 각각 포지션 평화의 신호로 작용합니다. 가격이 부린 궤도를 돌파 할 때 상하 궤도가 포지션을 열고, 상하 궤도가 포지션을 열 때 더 많은 포지션을 열습니다.

전략 원칙

  1. 세 가지 다른 주기의 이동 평균을 계산합니다: 느린 SMA, 빠른 EMA 및 중간 WMA, 각각 시장의 장기, 단기 및 중기 추세를 반영합니다.
  2. 가격 기준 차차에 따라 두 개의 부린 띠를 계산한다: 개장 부린 띠 (上下轨道距离较近) 와 중지 부린 띠 (上下轨道距离较宽). 개장 부린 띠는 개장 부린 띠를 사용하며, 중지 부린 띠는 평점 부린 띠를 사용한다.
  3. 빠른 EMA 위를 뚫고 창고 풀린이 올라올 때, 공백 상위 포지션이 열린다. 빠른 EMA 아래를 뚫고 창고 풀린이 내려올 때, 다중 상위 포지션이 열린다. 이것은 가격이 평균에서 더 많이 이탈한다는 것을 의미하며, 추세가 발생할 수 있다.
  4. 일단 포지션을 개시한 후, 가격이 더 이상 상향으로 침투하면, 모든 다수 포지션을 평행한다. 가격이 더 이상 하향으로 침투하면, 모든 공백 포지션을 평행한다. 이것은 손실을 제어하기 위해, 트렌드 반향이 발생할 경우, 최종 손실이다.
  5. 이 과정이 계속 반복되므로 전략은 시장 추세에 따라 포지션을 유연하게 조정할 수 있으며, 안정적인 수익을 얻기 위해 적시에 손실을 중단 할 수 있습니다.

전략적 이점

  1. 3개의 다른 속도의 이동 평균을 고려하여 다양한 수준의 시장 동향을 포괄적으로 포착합니다.
  2. 부린 대역을 입시해 평지 포지션 개설 조건으로 시장의 변동에 따라 동적으로 조정할 수 있고, 상황에 대해 유연하게 대응할 수 있다.
  3. 부린벨트를 설정하고, 회수할 수 있도록 통제하고, 시장의 급격한 변동이 있을 때 평평한 위치를 결정하여 손실을 확대하지 않도록하십시오.
  4. 논리가 명확하고, 규칙이 간단하며, 구현과 최적화가 쉽다.
  5. 적용 범위는 넓고, 여러 시장과 여러 기간에 걸쳐 적용될 수 있다.

전략적 위험

  1. 불안한 시장에서 빈번하게 상장을 하는 것은 거래비용을 많이 발생시켜 수익을 훼손할 수 있다.
  2. 트렌드 전환 초기에는 전략이 여전히 원래의 트렌드 방향으로 거래되어 손실이 발생할 수 있습니다.
  3. 급격한 가격 상승과 같은 극단적인 상황에서는, 브린 벨트를 막는 것은 위험을 잘 통제하지 못할 수 있습니다.
  4. 매개 변수 선택이 잘못되면 (예를 들어, 이동 평균 주기, 브린 대역폭 등) 전략이 무효화 될 수 있습니다.
  5. 시장의 흔들림이 지속된다면, 전략은 오랜 기간 동안 명백한 트렌드 기회를 잡지 못할 수 있습니다.

전략 최적화 방향

  1. 이동 평균 주기와 브린 대역폭 변수를 적절히 확대하여 불안정한 시장에서 거래 빈도와 비용을 줄일 수 있습니다.
  2. 더 많은 기술 지표 또는 시장 감정 지표를 필터로 도입하여 포지션 개시 신호의 정확성을 높이고 트렌드 초기에 발생할 수있는 손실 거래를 피하십시오.
  3. 극단적인 상황에 대해 특별한 규칙을 설정합니다. 예를 들어, 리스크를 제어하기 위해 새로운 포지션을 잠정 중단합니다.
  4. 매개 변수를 최적화하여 현재 시장에 가장 적합한 매개 변수 조합을 찾고, 전략의 안정성을 향상시킵니다.
  5. 포지션 관리 및 재무 관리 규칙을 추가하여 전략적 위험을 더욱 제어하기 위해 포지션을 트렌드 강도 또는 수익에 따라 조정하고, 총 스톱 라인을 설정합니다.

요약하다

마리나 파펜로바 학교 프로젝트 로봇 (영어: 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")