오시슬레이션 밸런스 전략은 무게 가중 이동 평균과 기본 룩백 기간을 사용하여 다음 틱의 가격 움직임을 예측하는 간단한 전략이다. 높은 것과 낮은 기준으로 오픈에 비해 현재 폐쇄 지위를 계산하고, 다른 기간의 기하급수적인 이동 평균을 계산하고, 마지막으로 역사적 데이터에 기초하여 일반적인 가격 추세를 판단합니다.
이 전략은 먼저 오픈에 대한 닫힌 포지션을 계산합니다.BoP = (close - open) / (high - low)
그 다음에는 3, 6, 9, 12 및 18 기간의 EMA를 계산합니다.
다른 색상의 EMA를 그리는 것은 짧은 기간 라인이 먼저 방향을 변경하는 것을 보여줍니다. 더 긴 기간 라인은 지원과 저항을 제공합니다. EMA 사이의 영역을 채우는 것은 라인 사이의 가격 오스실레이션을 더 직관적으로 볼 수 있습니다.
또한 이 EMA의 수학적 평균을 통해 포괄적인 선을 얻을 수 있습니다. 지난 두 기간 동안 이 선의 변화를 살펴보면 다음 기간의 트렌드를 예측합니다. 포괄적인 선이 상승하면 길게 이동합니다. 떨어지면 짧게 이동합니다.
이 방법으로, 그것은 역사적인 데이터에 기초하여 일반적인 미래 추세를 추정합니다. 매우 간단하지만, 시각적 EMA 및 채우는 가격 변동을 명확하게 보여줍니다.
이 전략의 장점은 다음과 같습니다.
이 원칙은 간단하고 이해하기 쉽고 적용하기 쉽습니다.
복잡한 가격 역사를 단순 포괄적인 선으로 집계하여 방향별로 입출점을 판단합니다.
복수의 기간 EMA의 조합은 더 포괄적인 참조를 제공합니다. 짧은 기간 라인은 특정 진입을 결정하고 긴 기간 라인은 일반적인 경향을 결정합니다.
EMA 사이를 채우면 명확한 가격 변동을 볼 수 있는 직관적인 시각적 효과를 만듭니다.
손해를 멈추거나 수익을 취할 필요가 없습니다. 불필요한 거래를 피합니다.
이 전략의 위험은 다음과 같습니다.
예측은 과거의 데이터에만 근거하고 미래 발생을 보장하지 않습니다. 트렌드와 핵심 수준으로 확인되어야합니다.
사건 으로 인한 급격 한 가격 변화 는 부정확 한 예측 을 초래 할 수 있다. 적절 한 위험 통제 가 필요 하다.
여러 EMA는 혼란스러운 신호를 생성 할 수 있습니다. 무게는 최적화되어야합니다.
높은 거래 빈도가 발생할 수 있고 불필요한 거래를 줄이기 위해 간격 통제가 필요합니다.
전략 신호가 늦어지면서 늦은 진입과 조기 스톱 손실이 발생할 수 있습니다.
이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.
더 명확한 신호를 위해 EMA 가중치를 최적화하십시오. 예를 들어 중장기 EMA 가중치를 증가하십시오.
트렌드 인디케이터 확인을 추가하여 역 트렌드 트레이드를 피합니다. 예를 들어 ADX를 사용하여 트렌드 강도를 결정합니다.
잘못된 신호를 줄이기 위해 주요 지원 및 저항 수준에 필터를 추가합니다.
불필요한 오픈 포지션을 피하기 위해 엔트리 규칙을 최적화하십시오. 트렌드 필터 또는 볼륨 확인을 추가 할 수 있습니다.
곡선 스톱 손실이나 ATR 스톱 손실과 같은 스톱 손실 방법을 최적화합니다.
감정 지표를 추가하여 상위와 하위 추격을 피하십시오. 예를 들어, 긴 / 짧은 비율 및 자금 흐름.
거래 빈도를 낮추기 위해 간격을 조절하거나 오버 트레이딩을 피하기 위해 거래 수를 최적화합니다.
오시슬레이션 밸런스 전략은 가격 오시슬레이션을 계산하고 여러 기간의 EMA를 시각화하여 간단하고 직관적으로 입점과 출구를 판단합니다. 예측 지연 및 잘못된 신호와 같은 위험이 존재하지만 필터, 스톱 로스 방법 등을 추가하여 최적화 할 수 있습니다. 트렌드 거래 시 유용한 참조를 제공합니다. 이 전략은 빈번한 단기 거래자와 시각 패턴 분석자에게 적합합니다.
/*backtest start: 2022-10-13 00:00:00 end: 2023-10-19 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="Balance of Power", format=format.price, precision=2) BoP = (close - open) / (high - low) p1 = plot(ema(BoP,18),color=color.purple) p2 = plot(ema(BoP,12),color=color.blue) p3 = plot(ema(BoP,9),color=color.green) p4 = plot(ema(BoP,6),color=color.yellow) p5 = plot(ema(BoP,3),color=color.orange) p6 = plot(BoP, color=color.red) sumEMA = (avg(BoP,ema(BoP,3),ema(BoP,6),ema(BoP,9),ema(BoP,12),ema(BoP,18))) plot(sumEMA,color=color.gray) fill(p1,p2,color.purple) fill(p2,p3,color.blue) fill(p3,p4,color.green) fill(p4,p5,color.yellow) fill(p5,p6,color.orange) projected = sumEMA + (sumEMA - sumEMA[2]) p7 = plot(projected, linewidth=2, color=color.white) fill(p6,p7,color.red) //strategy.exit("exitx","Exit",when=cross(projected,0)) strategy.entry("Long",true,1,when=crossover(projected,0)) strategy.entry("Short",false,0,when=crossunder(projected,0))