二項移動平均トレンド戦略


作成日: 2023-12-08 14:55:19 最終変更日: 2023-12-08 14:55:19
コピー: 0 クリック数: 704
1
フォロー
1621
フォロワー

二項移動平均トレンド戦略

概要

二項式移動平均 (Binomial Moving Average,略称BMA) は,新しい種類の移動平均指標である.二項式係数の半分を使って平均値を計算し,計算方法が独特で,滑らかで,実用性が高いという利点がある.

この戦略は,速いBMAと遅いBMAを組み合わせて,MACDのような取引シグナルを形成し,トレンドフォロー戦略に属します. それは,複数の周期で使用でき,中長線操作に適しています.

戦略の詳細

戦略名

二項式移動平均トレンド戦略

戦略原則

  1. 二項移動平均 ((BMA) を計算する.これは,ユーザが設定した周期長度に応じて二項係数を計算し,その半分を重平均価格として取る.例えば,周期長度が5である場合,二項係数の9倍を計算し,その半分を重加平均にする.これは,最近の数根のK線を重量化して,滑らかさを高める.

  2. 急速BMA周期と遅いBMA周期を設定します. 急速BMAは価格変化に敏感で,遅いBMAは安定しています. 交差すると取引信号が生じます.

  3. 速いBMA上を通過すると,多作;速いBMA下を通過すると,空作.場内に入ると,逆転信号が出るまで,ポジションを保持する.

優位分析

この策略の最大の利点は,BMA指標の計算方法が新しく,移動平均の優位性を強化し,平滑性と実用性を向上させることにある.EMAとSMAと比較して,BMAは最近のK線に重みを与え,同時により多くの歴史的情報を保持している.これは,トレンドをよりよく捉え,偽信号を少なくする.

さらに,BMAの組み合わせは,移動平均の優位性を十分に発揮し,多くのノイズをフィルターし,トレンドの転換点でのみ取引信号を生成します.戦略自体は,論理的にシンプルで,理解し,実行しやすく,中長線操作に適しています.

リスク分析

この戦略の主なリスクは,

  1. すべてのトレンド追跡戦略と同様に,トレンドが逆転すると損失が生じやすい. 解決策は,ストップを設定するか,またはBMAをより敏感にするためにパラメータを最適化することです.

  2. BMAパラメータの設定が不適切であることも戦略の効果に影響する.高速BMAが過度に敏感である場合,偽信号が増加する.遅いBMAが過度に遅れている場合,トレンドのチャンスを逃す可能性があります.最適なパラメータを見つけるために多組み合わせテストが必要です.

  3. この戦略では,デフォルトで全ポジション取引を行い,リスク好みに応じてポジション管理を設定して,単発損失を低減することができる.

最適化の方向

この戦略の主要な最適化方向はBMA自身と組み合わせパラメータのテストである.

  1. サイクル設定:異なる高速BMAサイクルと遅いBMAサイクルをテストし,最適なパラメータの組み合わせを見つけます.一般的には,高速周期は10〜30,遅い周期は20〜60の間です.

  2. BMA重量:異なる重量配分方法をテストすることができる.全部分二項式係数の半分,または最近の数K線を優先する.これはBMAの平らさをさらに向上させる可能性がある.

  3. フィルター条件: 価格突破や取引量増加などのフィルター条件を設定して,不合理な信号を回避できます.

  4. リスク管理のテストは,ストップ・ローズ・メカニズムやポジション管理によっても可能である.

要約する

この戦略は,二項式移動平均というユニークな指標を初めて提示し,移動平均の計算方法を強化し,戦略の全体的な実用性と安定性を向上させています.速い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)