EVWMAとボリンジャー帯に基づいたEVWBB戦略

作者: リン・ハーンチャオチャン,日付: 2023年11月2日 15:27:28
タグ:

img

概要

この戦略は,ボリンジャーバンドのベースラインとしてEVWMAを使用します.価格が上部バンドを突破すると長行し,価格が下部バンドを突破すると短行します.

戦略の論理

この戦略は,最初に過去30期間の総容量を vol_periodとして計算し,次に EVWMA を公式で計算します. (前の EVWMA x (vol_period - 現在の容量) + 現在の容量 x 閉じる) / vol_period.

ボリンジャー帯のベースはEVWMAとして設定され,上下帯はベース ± 2 * stdev ((近) である. ストラテジーは,価格が上帯を突破するとロングになり,価格が下帯を突破するとショートになる.ストップロスはベースレベルに設定される.

利点分析

  1. EVWMAは移動平均値よりも価格変化を反映し,より平らな線を生み出します.

  2. ボリンジャー・バンドは価格変動の上限と下限を明確に示し,ブレイクアウトを簡単に把握できます

  3. トレンドインジケーター EVWMA と波動性インジケーター Bollinger Bands を組み合わせることで,エントリのタイミングがより正確になります.

  4. ベースレベルでのストップロスはリスクを制御するのに役立ちます

リスク分析

  1. EVWMAは,巨大な市場変動の際に価格の変化を時間的に反映できず,市場への参入機会を逃してしまう可能性があります.

  2. 波リンジャー帯は,範囲限定の市場において,不必要なエントリを誘発する,ウィップソーに傾向があります.

  3. ポジションのサイズ化や保有期間管理の欠如は,不満足な利益や損失の拡大につながる可能性があります.

  4. 利益目標の欠如は,合理的な目標を超えたポジションを保持するリスクです.

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

  1. 最適なバックバック期間を見つけるために異なるパラメータ設定をテストします.

  2. 入力シグナルを洗練するためにMACDのようなフィルターを追加してみてください

  3. 取引を管理するために固定保持期間を導入する.

  4. 合理的な利益目標を定義するために利益目標を設定します

  5. 市場の状況に基づいてポジションサイズを調整する.

概要

この戦略は,EBWMAとボリンジャーバンドの強みを組み合わせて,ブレイクアウトを捕捉することでトレンドを追跡する.その利点は合理的な指標組み合わせ,正確なエントリー,効果的なリスク制御である.しかし,不適切なパラメータ調整と取引管理の欠如は問題であり続けている.パラメータ最適化,利益ターゲット,ストップ損失,ポジションサイジングのさらなる改善は,その安定性と収益性を向上させることができる.全体として,戦略論理は健全であり,実用的な価値と開発の可能性を示している.


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

//@version=4
strategy("EVWBB Strategy [QuantNomad]", shorttitle="EVWBB Strategy [QN]", overlay=true)

// Inputs
sum_length = input(30,  title = "Length", type = input.integer)
mult       = input(2.0, minval=0.001, maxval=50)
 
// Calculate Volume Period
vol_period = sum(volume, sum_length)

// Calculate EVWMA
evwma = 0.0
evwma := ((vol_period - volume) * nz(evwma[1], close) + volume * close) / (vol_period)

basis = evwma
dev = mult * stdev(close, sum_length)

upper = basis + dev
lower = basis - dev

plot(basis, color=color.red)
p1 = plot(upper, color=color.blue)
p2 = plot(lower, color=color.blue)
fill(p1, p2)

buyEntry = crossover(close, lower)
sellEntry = crossunder(close, upper)

strategy.entry("BBandLE", strategy.long,  stop = upper , oca_name = "BollingerBands",  comment="BBandLE")
strategy.entry("BBandSE", strategy.short, stop = lower,  oca_name = "BollingerBands", comment="BBandSE")

strategy.exit("BBand L SL", "BBandLE", stop = basis)
strategy.exit("BBand S SL", "BBandSE", stop = basis)

もっと