% バンド移動平均戦略

作者: リン・ハーンチャオチャン開催日:2023年12月12日 17:47:02
タグ:

img

概要

パーセンテージバンド移動平均戦略は,トレンドフォロー戦略である.移動平均をベースラインとして使用し,価格のパーセントに基づいて上帯と下帯を計算する.価格が上帯を突破すると短く,価格が下帯を突破すると長くなります.この戦略の最大の利点は,変動範囲を自動的に調整し,異なる市場環境のトレンドを効果的に把握できることを意味します.

戦略原則

この戦略のコア指標は移動平均線である. 中央帯は単純なN日移動平均線である. 上部帯と下部帯は価格の割合変化に基づいて計算される. 具体的な式は:

上部帯 = 中部帯 + 価格 * 上部帯の割合 下帯 = 中帯 - 価格 * 下帯の割合

この場合は上帯の割合と下帯の割合が調整可能なパラメータで,デフォルトは2で,価格は2%です.

価格が上昇すると,上帯と下帯の両方が同時に向上する.価格が下がると,両帯も同時に下落する.これは市場の変動程度に基づいてチャネル幅を自動的に調整する効果を達成する.

取引戦略では,価格が上位帯を突破するとショート,価格が下位帯を突破するとロングをします.また,この戦略は,特定の月にのみ取引する条件を設定し,主要なトレンド以外の月に間違った信号を生成することを避けます.

利点分析

この戦略の最大の利点は,変動範囲は価格の変化パーセントに基づいて計算され,異なる市場状況に適応するために自動的に調整できるということです.範囲に限定された市場で誤った信号を軽減し,トレンド市場の逆転を間に合うように捉えることができます.また,月と日付選択条件を設定することで,限界月からのノイズをフィルタリングし,主要なトレンドでない月に間違った信号を生成するのを避けることができます.

リスク分析

この戦略の主なリスクは,移動平均値が遅延効果を持ち,緊急事態に即座に反応できないことである.さらに,パーセント範囲の設定は戦略のパフォーマンスにも影響する.低すぎると移動平均値の遅延問題を悪化させる.高すぎると誤った信号の確率を増やす.

また,日付と月の条件に過度に依存するリスクもあります.もし主要なトレンドが設定された月を超えて発生した場合,この戦略は機会を逃します.したがって,これらの事前設定条件も異なる製品と市場環境に応じて調整する必要があります.

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

この戦略の最適化にはまだ大きな余地があります.まず,移動平均の長さ,百分比パラメータなど,さまざまなパラメータ組み合わせをテストして最適なパラメータを見つけることができます.次に,信号信頼性を向上させるためにボリュームなどの移動平均信号を確認するために,他の指標を導入することができます.最後に,日付と月の選択条件は,異なる製品や市場環境に基づいて調整され,より柔軟になります.

例えば,主要なトレンド月は,歴史的なデータに基づいて判断することができ,その後,限界値は自動的に計算できます.異常な突破がある場合,月条件は一時的に無視され,完全に参加することができます.これらのパラメータを動的に最適化するための機械学習やその他の手段を導入することも可能です.

概要

一般的に,百分比帯移動平均戦略は,トレンドフォロー戦略として非常に実践的なものです.最大の利点は,変動範囲を自動的に調整し,市場の変化に適応する能力です.同時に,パラメータ最適化,信号フィルタリングなど,改善の余地があります.正しく使用した場合,さまざまな市場環境で安定して利益を得ることができます.


/*backtest
start: 2022-12-05 00:00:00
end: 2023-12-11 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3

strategy(title = "Percentage Band", overlay = true)


//////////////// BAND  ////////////////////////////
price=close
bandlength = input(50)
bbupmult =input(2,step=0.1,title="Multiplier for Percent upper Band")
bblowmult = input(2,step=0.1,title="Multiplier for Percent Lower  Band")

basis =  sma(close,bandlength)

devup =  (bbupmult*price)/100
devlow = (bblowmult*price)/100

upper = basis + devup
lower = basis - devlow
plot(basis, color=red)
p1 = plot(upper, color=blue)
p2 = plot(lower, color=blue)
fill(p1, p2)



/////////////////////////BAND  //////////////////////////


// Conditions



longCond = na
sellCond = na
longCond :=  crossover(price,lower)
sellCond :=  crossunder(price,upper)




monthfrom =input(6)
monthuntil =input(12)
dayfrom=input(1)
dayuntil=input(31)



if (  longCond  ) 
    strategy.entry("BUY", strategy.long, stop=close, oca_name="TREND",comment="BUY")
    
else
    strategy.cancel(id="BUY")


if ( sellCond   ) 

    strategy.close("BUY")







もっと