バイノミアル移動平均トレンド戦略

作者: リン・ハーンチャオチャン, 日付: 2023-12-08 14:55:19
タグ:

img

概要

バイノミアル移動平均 (BMA) は,新しいタイプの移動平均指標である. 平均価格を計算するためにバイノミアル係数の半分を使用し,ユニークな計算方法,良好なスムーズ性と強力な実用性を備えています.

この戦略は,トレンドフォロー戦略に属するMACDのような取引信号を生成するために,高速BMAと遅いBMAを組み合わせます.複数のタイムフレームに適用することができ,中長期取引に適しています.

戦略の詳細

戦略名

バイノミアル移動平均トレンド戦略

戦略の論理

  1. バイノミアル移動平均 (BMA) を計算する. ユーザー設定の期間に応じて,バイノミアル係数を計算し,その半分を平均価格への重みとして取る. 例えば,期間の5で, 9つのバイノミアル係数を計算し,その半分を重み平均にします. これにより,最近のキャンドルにより重みを与え,よりスムーズになります.

  2. 速いBMA期間と遅いBMA期間を設定する.速いBMAは価格変動に敏感で,遅いBMAはより安定している.それらのクロスオーバーは取引信号を生成する.

  3. 速いBMAがスローBMAを上回ると,ロングポジションが開きます.速いBMAがスローBMAを下回ると,ショートポジションが開きます.反対信号が表示されるまでポジションを保持します.

利点分析

この戦略の最大の利点は,BMAの革新的な計算にあります. EMAとSMAと比較して,BMAは最近のキャンドルにより重みを付け,より多くの歴史的情報を保持しています. これにより,傾向をよりよく把握し,誤った信号を少なく生成できます.

BMA の 戦略 は,中長期 期間の 取引 に 適した シンプル な 方法 で,簡単 に 理解 さ れ,実行 さ れ ます.BMA の 戦略 は,中長期 期間の 取引 に 適した 戦略 です.BMA の 戦略 は,中期 期間の 取引 に 適し,中期 期間の 取引 に 適し,中期 期間の 取引 に 適し です.

リスク分析

この戦略の主なリスクは以下のとおりです.

  1. すべてのトレンドフォロー戦略と同様に,トレンドが逆転すると損失につながる可能性があります.ソリューションはストップ損失を設定したり,BMAをより敏感にするパラメータを最適化します.

  2. BMA パラメータの設定が不適切であることも戦略のパフォーマンスに影響を与える.過度に敏感な高速BMAは誤った信号を生成し,遅い遅いBMAはトレンド機会を見逃す可能性がある.最適なパラメータの組み合わせを見つけるために広範なテストが必要である.

  3. 戦略はデフォルトで全ポジションを使用します. 取引損失を制限するためにリスク優先順位に応じてポジションサイズを追加できます.

オプティマイゼーションの方向性

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

  1. 期間設定:最適なコンボを見つけるために,異なる高速BMAと遅いBMA期間をテストします.一般的に高速期間は10-30の間,遅い期間は20-60の間です.

  2. BMA重量:半分の二項係数を完全に分布させるか,最近のキャンドルにより重量を与えるなどの異なる重量化スキームをテストする.これは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)

もっと