4つの指数関数移動平均値とボリューム戦略

作者: リン・ハーンチャオチャン開催日:2023年10月9日15時05分47秒
タグ:

概要

この戦略は,複数のパラメータ設定とEOMボリューム指標を組み合わせて,複数のタイムフレームのトレンドを決定し,長期および短期的な判断の両方を伴う取引戦略を構築する.それは,異なる期間の移動平均値のマルチタイムフレーム共鳴を活用して,長期的トレンドパターンを明らかにすることを目的としています.

戦略の論理

この戦略は,異なる期間のパラメータである13,21,50および180の4つのグループEMAを使用しています.これらの4つのEMAは,価格動向を決定し,長期的な傾向パターンを明らかにするために複数の時間次元を確立します.

この戦略は,トレンドを確認するためにEOMボリューム指標を使用する. EOMは,取引量と価格変動範囲を組み合わせて,購入・販売圧力を効果的に測定する. EOMが0を超える場合,長期条件と,EOMが0未満の場合は短期条件を決定する.

この戦略には2つのオプションがあります.オプション1は,短いEMAが長いEMAを超えるとロングになり,短いEMAが長いEMAを下回るとロングになります.オプション2は,短いEMAが中間EMAを超えるとロングになり,短いEMAが中間EMAを下回るとロングになります.この2つのオプションは,より包括的なトレンド確認を可能にします.

利点

  • 複数のタイムフレームの EMA を使って傾向を特定することで,長期的な傾向パターンを明らかにできます.
  • EOM ボリューム インディケーターは,一時的な引き下げからの誤った信号を避けるために,効果的に購入/販売圧力を測定します.
  • 2つのオプション入力方法により,より包括的な傾向確認が可能
  • 層付き出口でスケーリングは,単一の出口露出を減らす

リスク

  • EMA は遅延し,急速な逆転を逃す可能性があります.
  • 音量表示器は誤った信号を与える可能性があります
  • 複数の条件基準が不透明なエントリを生む
  • 上層出口は機械的すぎるかもしれない

増進 の 機会

  • 最適パラメータを見つけるためにより多くの EMA 期間組み合わせをテストする
  • 入国確認のためのMACDなどの他の指標を追加
  • 動的ストップロスを採用してトレンドをフォローする
  • 市場状況に基づいてポジションのサイズ調整

概要

この戦略は,トレンドフォローとノイズ除去を達成するために,マルチタイムフレームEMAトレンド決定とボリュームインジケーターフィルタリングを統合している.さまざまなパラメータの組み合わせをテストし,さらに強度を高めるためにより多くのインジケーターを追加することで,最適化する余地がまだ大きい.一方,ダイナミックストップ損失とポジションサイズもパフォーマンスを大幅に最適化することができます.


/*backtest
start: 2022-10-02 00:00:00
end: 2023-10-08 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/
// © SoftKill21

//@version=4
strategy("4x ema + volume", overlay=true,initial_capital = 1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent , commission_value=0.1 )

//ema x 4
ema1l=input(13)
ema2l=input(21)
ema3l=input(50)
ema4l=input(180)

ema1=ema(close,ema1l)
ema2=ema(close,ema2l)
ema3=ema(close,ema3l)
ema4=ema(close,ema4l)

long1 = close > ema1 and ema1 > ema2 and ema2> ema3 and ema3 > ema4
long2 = crossover(ema1,ema2) and crossover(ema1,ema3)

short1 = close < ema1 and ema1 < ema2 and ema2< ema3 and ema3 < ema4
short2= crossunder(ema1,ema2) and crossunder(ema1,ema3)


//eom
length = input(14, minval=1)
div = input(10000, title="Divisor", minval=1)
eom = sma(div * change(hl2) * (high - low) / volume, length)


option1=input(true)
option2=input(false)

if(option1)
    strategy.entry("long",1,when=long1 and eom>0)
    strategy.close("long",when=short1 and eom<0)
 
if(option2)
    strategy.entry("long",1,when=long2 and eom>0)
    strategy.close("long",when=short2 and eom<0)   

もっと