이분법 이동 평균 (BMA) 은 새로운 유형의 이동 평균 지표이다. 이분법 계수의 절반을 사용하여 평균 가격을 계산하며 독특한 계산 방법, 좋은 매끄럽고 강력한 실용성을 갖추고 있습니다.
이 전략은 트렌드를 따르는 전략에 속하는 MACD와 같은 거래 신호를 생성하기 위해 빠른 BMA와 느린 BMA를 결합합니다. 여러 시간 프레임에 적용 할 수 있으며 중장기 거래에 적합합니다.
이분법 이동평균 트렌드 전략
이분법 이동 평균 (BMA) 을 계산한다. 사용자 설정 기간에 따라 이분법 계수를 계산하고 그 중 절반을 평균 가격에 가중으로 취한다. 예를 들어, 기간 5과 함께 9개의 이분법 계수를 계산하고 그 절반을 가중 평균으로 취한다. 이것은 최근 촛불에 더 많은 무게를 부여하고 더 나은 매끄럽다.
빠른 BMA 기간과 느린 BMA 기간을 설정하십시오. 빠른 BMA는 가격 변화에 더 민감하며 느린 BMA는 더 안정적입니다. 그들의 크로스오버는 거래 신호를 생성합니다.
빠른 BMA가 느린 BMA를 넘으면 긴 포지션이 열립니다. 빠른 BMA가 느린 BMA를 넘으면 짧은 포지션이 열립니다. 반대 신호가 나타날 때까지 포지션을 유지하십시오.
이 전략의 가장 큰 장점은 BMA의 혁신적인 계산에 있다. 그것은 향상된 부드러움과 실용성으로 움직이는 평균의 강점을 향상시킨다. EMA와 SMA와 비교하면 BMA는 더 많은 역사적 정보를 유지하면서 최근의 촛불에 더 많은 무게를 부여한다. 이것은 추세를 더 잘 파악하고 더 적은 잘못된 신호를 생성 할 수 있게 한다.
또한, 빠른 및 느린 BMA 조합은 이동 평균의 장점을 최대한 활용합니다. 많은 잡음을 필터링하고 트렌드 전환점에만 신호를 생성합니다. 전략 자체는 이해하기 쉽고 구현하기 쉽습니다. 중장기 거래에 적합합니다.
이 전략의 주요 위험은 다음과 같습니다.
모든 트렌드를 따르는 전략과 마찬가지로 트렌드가 역전되면 손실로 이어질 수 있습니다. 솔루션은 BMA를 더 민감하게 만들기 위해 Stop Loss를 설정하거나 매개 변수를 최적화합니다.
부적절한 BMA 매개 변수 설정은 전략 성능에도 영향을 미칩니다. 지나치게 민감한 빠른 BMA는 잘못된 신호를 생성 할 수 있으며 느린 느린 BMA는 트렌드 기회를 놓칠 수 있습니다. 최적의 매개 변수 조합을 찾기 위해 광범위한 테스트가 필요합니다.
전략은 기본으로 전체 포지션을 사용합니다. 거래당 손실을 제한하기 위해 위험 선호도에 따라 포지션 크기를 추가 할 수 있습니다.
주요 최적화 방향은 BMA 자체와 매개 변수 조합의 테스트입니다.
기간 설정: 최적의 조합을 찾기 위해 다른 빠른 BMA와 느린 BMA 기간을 테스트하십시오. 일반적으로 빠른 기간은 10-30 사이이며 느린 기간은 20-60 사이입니다.
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)