この戦略は,2つの異なる周期の弾性加重移動平均 ((EVWMA) を用いて交差操作を行い,買いと売りの信号を生成する. 短い周期線を長い周期線に横断すると買い信号が生成し,短い周期線を長い周期線に横断すると売り信号が生成する.
この戦略は,異なる周期のEVWMA線を計算し,それらを交差操作させることで,トレンドの変化を判断する.
具体的には,まず2つのEVWMA線を計算します.
短周期線m1,周期length1, 既定は5
周期長がm2で,周期長が2で,デフォルトは40です.
次に,m1とm2の交差を,クロスオーバーとクロスアンダー関数で判断する.
m1をm2に穿えると,買取信号が生成され,long操作が実行されます.
m1を下にm2を突破すると,出売信号を生じ,ショート操作を実行する.
ここで注意すべきは,EVWMAは通常の移動平均とは異なり,価格の変化により迅速に反応できるように,最近のデータにより高い重みを与えます.計算式は次のとおりです.
data = (nz(data[1]) * (nb_floating_shares - volume)/nb_floating_shares) + (volume_price/nb_floating_shares)
そして,nz ((data[1]) は前期のEVWMA値を表示し,nb_floating_sharesはその期間の総取引量を表し,volumeは現在の期間の取引量を表し,volume_priceは現在の期間の取引量を表します.このようにして,最近のデータにより高い重みを与える効果が実現されます.
この戦略の利点は以下の通りです.
EVWMAを使用すると,価格の変化に迅速に反応し,収益の機会を向上させることができます.
双EVWMA線交差を使用すると,トレンドの転換点を発見し,タイムリーに入場できます.
操作が簡単で実現しやすい
異なる市場環境に対応するカスタマイズ可能なサイクル長さ
複雑なパラメータの最適化を必要とせず,簡単に固定します.
この戦略にはいくつかのリスクがあります.
双線交差は市場騒音をフィルターできず,無効な信号を大量に発生させる可能性があります.
逆転を逃す危険性がある
危険を効果的に制御できない無傷防止装置
パラメータ最適化不足,不適切なライン周期設定が効果を損なう
この戦略は以下の点で最適化できます.
ストップ・ストップ・ストップ・ストップ・ストップ・ストップ・ストップ
線の周期長を最適化し,最適なパラメータを選択
取引量指標のフィルタリング信号を追加し,無効取引を減らす
他の指標と組み合わせると,トレンドが逆転し,逃した機会を減らす
動的最適化パラメータ,市場の変化に応じて調整ラインの周期長
多頭市場と空頭市場を区別し,異なるパラメータを使用
機械学習のアルゴリズムを組み込み,ビッグデータ訓練を活用し,買い物タイミングを判断する.
弾力的な重量移動平均クロス戦略Overall, this elastic weighted moving average cross strategyは,計算して双EVWMA線クロス操作をさせることで,トレンドの変化を効果的に発見し,取引シグナルを生成することができる.戦略はシンプルで使いやすいが,いくつかのリスクと最適化方向がある.停止障害機構の最適化,パラメータ選択,その他の指標の組み合わせなどの手段によって,この戦略を強化し,実際の取引により適したものにすることができる.全体的に,この戦略は移動平均クロス型の戦略の有益な探索であり,さらなる研究と応用に値する.
/*backtest
start: 2023-08-18 00:00:00
end: 2023-08-26 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy("Elastic Volume Weighted Moving Average Cross Strategy", shorttitle="EVWMA Cross", overlay=true)
length1=input(5, title="EVWMA Short")
length2=input(40, title="EVWMA Long")
nbfs1=sum(volume, length1)
nbfs2=sum(volume, length2)
medianSrc=close
calc_evwma(price, length, nb_floating_shares) =>
data = (nz(data[1]) * (nb_floating_shares - volume)/nb_floating_shares) + (volume*price/nb_floating_shares)
data
m1=calc_evwma(medianSrc, length1, nbfs1)
m2=calc_evwma(medianSrc, length2, nbfs2)
if (crossover(m1, m2))
strategy.entry("MA2CrossLE", strategy.long, comment="MA2CrossLE")
if (crossunder(m1, m2))
strategy.entry("MA2CrossSE", strategy.short, comment="MA2CrossSE")
p1=plot(m1,color=orange,linewidth=2, title="evwma")
p2=plot(m2,color=orange,linewidth=2, title="evwma")