
오징어 균형 전략은 가중 이동 평균과 기본 회귀 기간을 사용하여 다음 순간의 가격 움직임을 예측하는 간단한 전략이다. 그것은 현재 폐쇄 가격에 대한 개시 가격의 위치 비율을 계산하여, 그 다음 다양한 주기에서 지수 이동 평균을 계산하여, 마지막으로 역사적 데이터와 결합하여 가격의 대략적인 움직임을 판단한다.
이 전략은 먼저 상장 가격에 대한 상장 가격의 위치 비율을 계산합니다:BoP = (close - open) / (high - low)그리고 3, 6, 9, 12, 18 주기의 지수 이동 평균을 계산합니다.
다른 색의 이동 평균을 그리는 것으로, 짧은 주기선들이 우선적으로 변하는 것을 볼 수 있고, 긴 주기선들은 지원과 저항을 제공한다. 다른 이동 평균들 사이의 영역을 채우면, 다른 평준선들 사이의 가격의 변동을 보다 직관적으로 볼 수 있다.
이 평균의 수학적 평균을 계산하여 합성 평균을 얻습니다. 그리고 이 합성 평균이 지난 두 주기에 변화한 것을 보고 다음 주기에 어떤 변화를 예상할 수 있는지 예측합니다. 합성 평균이 올라간다면 더 많이 할 수 있고, 떨어지면 더 적게 할 수 있습니다.
이렇게 하면, 역사적인 데이터를 이용해서 대략적인 미래 추세를 계산할 수 있습니다. 매우 간단하지만, 시각적인 평균선과 채우기를 결합하면, 가격의 변동 상황을 직관적으로 볼 수 있습니다.
이 전략은 다음과 같은 장점을 가지고 있습니다.
원칙은 간단하고 이해하기 쉽고 실행하기 쉽다.
복잡한 가격 역사를 간단한 종합평균선으로 집약하고, 평평선의 방향을 통해 매매점을 판단한다.
여러 주기의 평균선 조합, 더 포괄적인 참조를 제공한다. 짧은 주기선은 특정 매매 시기를 결정하고, 긴 주기선은 큰 흐름을 결정한다.
평행선 사이의 영역을 채우면 가격의 진동이 명확하게 보이는 직관적인 시각적 효과를 얻을 수 있다.
이 경우, 이 거래는 무용지물이 될 수 있습니다.
이 전략에는 다음과 같은 위험도 있습니다.
예측은 과거 데이터에 기초하여 이루어지는 것이 아니며, 미래가 반드시 일어날 수 있는 것은 아니다. 추세와 핵심 가격과 결합하여 검증해야 한다.
급격한 가격 변동으로 인한 갑작스러운 사건으로 예측 결과가 정확하지 않을 수 있습니다.
여러 개의 평균선은 혼란 신호를 생성할 수 있으며, 무게를 최적화해야 한다.
거래의 빈도가 너무 높을 수 있으므로 불필요한 거래를 줄이기 위해 간격을 조절해야합니다.
전략 신호의 지연은 너무 늦게 들어가거나 너무 일찍 멈출 수 있습니다.
이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.
평균선의 무게를 최적화하여 신호를 더 명확하게 만든다. 예를 들어, 중·장선 주기 평균선의 무게를 증가시킨다.
트렌드 지표의 확인을 추가하고 역전 거래를 피하십시오. 예를 들어, ADX를 사용하여 트렌드가 강하다는 것을 판단하십시오.
중요한 지지 저항 영역에 필터링 조건을 추가하여 잘못된 신호를 줄여줍니다.
구매 및 판매 조건을 최적화하여 부득이한 입장을 피하십시오. 트렌드 필터를 설정하거나 볼륨 확인을 증가시킬 수 있습니다.
커브 스톱 또는 ATR 스톱을 사용하는 것과 같은 손실을 최적화하는 방법
감정 지표를 추가하여 상승과 하락을 추적하는 것을 피하십시오. 예를 들어, 오공 지표, 자금 흐름 등이 있습니다.
통제 간격, 거래 빈도를 낮추기 위해. 또는 거래 횟수를 최적화하여 과도한 거래를 피하기 위해.
진동 균형 전략은 가격의 진동 지표를 계산하여, 다중 주기 평균선의 시각적 효과와 결합하여, 간단한 직관적인 매수점 판단 방법을 형성한다. 예측 지연과 잘못된 판단의 위험이 존재하지만, 필터 조건, 중지 방식 등을 추가하여 최적화 할 수 있으며, 트렌드 거래시 보조 REFERENCE. 이 전략은 짧은 선의 빈도 거래와 시각적 형태 분석자에게 적합하다.
/*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))