
이진법 이동 평균 (Binomial Moving Average, 약칭 BMA) 은 새로운 유형의 이동 평균 지표이다. 이진법 인수의 절반을 사용하여 평균 가격을 계산하며, 계산 방식이 독특하고, 평탄하고, 실용성이 강하다는 장점이 있다.
이 전략은 빠른 BMA와 느린 BMA를 조합하여 MACD와 유사한 거래 신호를 형성하며, 트렌드 추적 전략에 속한다. 그것은 여러 주기에 사용할 수 있으며, 중·장선 거래에 적합하다.
이항 이동 평균 트렌드 전략
이차 이동 평균을 계산한다 (BMA). 이는 사용자가 설정한 주기 길이에 따라 이차 계수를 계산하고, 그 값의 절반을 중도 평균 가격으로 취한다. 예를 들어, 주기 길이가 5인 경우 9배의 이차 계수를 계산하고, 그 절반을 중도 평균으로 취한다. 이것은 최근 몇 개의 K 선의 무게를 더 크게 하고, 평탄성을 더 좋게 만든다.
빠른 BMA 주기와 느린 BMA 주기를 설정하십시오. 빠른 BMA는 가격 변화에 더 민감하고 느린 BMA는 더 안정적입니다. 그들의 교차는 거래 신호를 생성합니다.
빠른 BMA 위쪽에서 느린 BMA를 통과할 때, 더 많이 한다. 빠른 BMA 아래쪽에서 느린 BMA를 통과할 때, 공백을 한다. 경기장에 들어온 후, 역전 신호가 나타나기 전까지 포지션을 유지한다.
이 전략의 가장 큰 장점은 BMA 지표의 계산 방식이 새롭고, 이동 평균의 장점을 강화하여 부드러움과 실용성을 향상시킨다는 것입니다. EMA와 SMA에 비해 BMA는 최근 몇 개의 K 선에 더 많은 무게를 주며, 더 많은 역사적 정보를 유지합니다.
또한, 빠른 느린 BMA의 조합은 이동 평균의 장점을 충분히 발휘합니다. 그것은 많은 소음을 필터링하여 트렌드 전환점에서만 거래 신호를 생성합니다. 전략 자체는 논리적으로 간단하고 이해하기 쉽고 실행되며 중장선 운영에 적합합니다.
이 전략의 주요 위험은 다음과 같습니다.
모든 트렌드 추적 전략과 마찬가지로, 트렌드가 반전되면 손실이 발생할 수 있습니다. 해결책은 스톱로스를 설정하거나, BMA를 더 민감하게 만드는 최적화 매개 변수를 설정하는 것입니다.
BMA 매개 변수 설정이 잘못되면 전략 효과에도 영향을 미칩니다. 빠른 BMA가 너무 민감하면 가짜 신호가 증가합니다. 느린 BMA가 너무 뒤떨어지면 트렌드 기회를 놓칠 수 있습니다.
이 전략은 기본으로 풀 포지션 거래를 하고, 리스크 선호도에 따라 포지션 관리를 설정하여 단독 손실을 줄일 수 있다.
이 전략의 주요 최적화 방향은 BMA 자체와 조합 매개 변수의 테스트이다.
사이클 설정: 서로 다른 빠른 BMA 사이클과 느린 BMA 사이클을 테스트하여 최적의 파라미터 조합을 찾습니다. 일반적으로 빠른 사이클은 10-30 사이, 느린 사이클은 20-60 사이입니다.
BMA 무게: 다른 무게 분배 방식을 테스트할 수 있으며, 전체 부분에서 이분법 인수의 절반, 또는 최근 몇 개의 K 선에 더 많은 중점을 둡니다. 이것은 BMA의 평탄성을 더욱 향상시킬 수 있습니다.
필터 조건: 가격 돌파, 거래량 증가 등의 필터 조건을 설정하여 불합리한 신호를 방지할 수 있다.
손해 차단 장치, 포지션 관리도 테스트 할 수 있으며, 위험을 통제 할 수 있습니다.
이 전략은 최초로 이진 이동 평균이라는 독특한 지표를 제시하고, 이동 평균을 계산하는 방법을 강화하여 전략의 전반적인 실용성과 안정성을 모두 향상시킵니다. 빠른 BMA와 느린 BMA의 교차는 간단한 효과적인 거래 신호를 생성합니다. 이 전략의 평형 매개 변수와 위험 제어는 추가적으로 최적화 할 수있는 공간이 있으며, 매우 유망한 트렌드 추적 전략입니다.
/*backtest
start: 2022-12-07 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © HosseinDaftary
//@version=4
strategy("Binomial Moving Average","BMA", overlay=true, margin_long=100, margin_short=100 ,max_bars_back=96)
//Binomial Moving Average:This type of moving average that is made by myself and i did not see anywhere before uses the half of binomial cofficients for
//averaging the prices for example if the period be 5 then we use the 9 degree binomial cofficients(that yields 10 cofficients) and use half of them.
//we use 126/256 for last bar,84/256,36/256,9/256 and finally use 1/256 for 5th bar. Seemingly this MA works better than EMA.
fa_ma=input(title='Fast MA',defval=10)
sl_ma=input(title='Slow MA',defval=30)
fac(n)=>
fact=1
for i= 1 to n
fact:=fact*i
fact
cof= array.new_float(sl_ma)
hn_ma(price,length)=>
sum=1.0
sum1=0.0
array.set(cof,length-1,1)
for i=2 to length
array.set(cof,length-i,fac(2*length-1)/(fac(i-1)*fac(2*length-i)))
sum:=sum+array.get(cof,length-i)
for i=0 to length-1
array.set(cof,i,array.get(cof,i)/sum)
sum1:=sum1+array.get(cof,i)*price[i]
sum1
hn1=plot(hn_ma(close,sl_ma) , color=#00ff00)
hn2=plot(hn_ma(close,fa_ma) ,color=#ff0000)
fill(hn1,hn2,color=hn_ma(close,fa_ma)>hn_ma(close,sl_ma)?color.green:color.red)
longCondition = crossover(hn_ma(close, fa_ma), hn_ma(close, sl_ma))
if (longCondition)
strategy.entry("Long", strategy.long)
shortCondition = crossunder(hn_ma(close, fa_ma), hn_ma(close, sl_ma))
if (shortCondition)
strategy.entry("Short", strategy.short)