ムービングアベレージコンバージェンスダイバージェンス(MACD)はトレンドと勢いに基づく指標であり、ボリンゲはr バンド(BB)は、ボラティリティベースの指標です。 MACDがBBと結合する場合、一部の専門家はそれをMACD BBと呼び、他の専門家はそれをBBMACDと呼びます。 この記事では、MACDBBという名前が使用されています。 XNUMXつのテクニカル分析指標の組み合わせは、XNUMXつの指標の機能を継承し、市場動向への洞察を提供します。 私の集中的なウェブ検索から、誰がこの指標を発明したかを言う場所はありません。 誰かが知っているなら、ソースを共有してください。 ただし、多くの取引プラットフォームやフォーラムでは、このインジケーターが高度な機能として提供されています。 読者は、私の以前のXNUMXつの記事を読んで、これらXNUMXつのインジケーターとElasticsearchを使用したそれらの実装の基本をすばやく理解することをお勧めします。
記事に記載されている方程式によると、Elasticsearchを使用してMACDヒストグラムを作成する」、MACDには、短期および長期の指数加重移動平均(EWMA)が含まれます。 これらの12つの用語の一般的な方法は、26とXNUMXです。
記事「Elasticsearchを使用してボリンジャーバンド幅を計算する」、BBは、20日の価格の単純移動平均(SMA)と標準偏差(SD)に基づいて、上限(BBU)と下限(BBL)を構築します。 BBの正中線はSMAです。 MACD BBの用語から、価格の代わりにMACDを使用します。 BBLとBBUの計算は次のように説明されます。ここで、スライディングウィンドウ(ウィンドウ)は26または1であり、標準偏差(n)は一般的な方法では2またはXNUMXです。
基本的に、MACD、BBU、BBLがチャートにプロットされ、ユーザーはMACDと1つのバンドの交点を観察できます。 MACDがBBUを突破すると、強い上昇トレンド信号を示します。 同様に、MACDがBBLを突破すると、強い下向きのシグナルを示します。 ダイアグラムを使用して意味を説明する方がはるかに簡単です。 この記事では、MACDとBBを手数料無料の上場投資信託(ETF)に適用し、分析ツールとしてElasticsearchに焦点を当てます。 次の例では、「Fidelity InternationalMultifactorETF」をランダムに選択しています。 そのティッカーシンボルはFDEVです。 データは、2021年31月2021日から12年26月10日までのIEX、InvestorsExchangeによって提供された時間範囲から選択されます。 MACDで最もよく使用されるパラメーターは、短期の場合は1、長期の場合はXNUMXです。 多くのインターネット記事によると、BBを計算するとき、SMAの期間はXNUMXであり、BBの標準偏差はXNUMXです。
次の図では、MACDとそのBBL、BBU、およびSMAがプロットされています。 MACD値がBBUを上回り、先のタイムスタンプの値と比較して増分である場合、それは水色の青い点です。 MACD値がBBUを上回り、デクリメントである場合、それは青い点です。 MACD値がBBLを下回り、デクリメントである場合、それは赤い点です。 MACD値がBBLを下回り、増分である場合、それはオレンジ色の点です。 それ以外の場合は灰色の点です。 読者は、赤/オレンジの線がBBLの下にあり、青/水色の線がBBUの上にあることを簡単に確認できます。 さらに、MACD値がゼロ未満から上昇してゼロを超えると(MACDから生成された強気の信号を考慮してください)、ほとんどの場合、対応するアクアブルーのドットが密接に続きます。 同様に、MACD値がゼロより上から下がり、ゼロを超えると(MACDによって生成された弱気信号を考慮)、対応する赤い点が続きます。 線の傾きはトレンドの勢いを示しています。
しかし、MACD値がBBUやBBLからブレークスルーするポイントを典型的な値と組み合わせて説明しようとすると、下図に示すように、価格の上昇傾向または下降傾向と一致していないようです。 ボラティリティの上昇と将来の取引機会の可能性の潜在的な兆候を捉えるのは容易ではなく、方向が逆になることもあります。
ほとんどのトレーディングプラットフォームはMACDBBインジケーターを提供し、「初心者トレーダーには適していません」と同じコメントをしますが、Elasticsearchの実装はシームレスな統合と理解しやすいことを示しています。 データが入力されたElasticsearchインデックスがあり、使用されるデータマッピングが前のペーパーで説明したものと同じであるとします。 次の手順は、RESTAPIリクエスト本文のコードを示しています。
検索操作を通じてすべての関連ドキュメントを収集します
「must」句を含む「bool」クエリを使用して、シンボルFDEVおよび1年2021月31日から2021年26月1.5日までの日付のドキュメントを収集します。15取引日の移動平均の計算により、追加データが調整されます。 2021ヶ月間(1年2021月XNUMX日からXNUMX年XNUMX月XNUMX日まで)
{
"クエリ":{
"bool":{
"しなければならない": [
{"範囲":{"日付":{"gte": "2020-12-15"、 "lte": "2021-05-31"}}}、
{"term":{"symbol": "FDEV"}}
]
}
},
ファンドの毎日の典型的な価値を計算する
MACDという名前の「date_histogram」集計を使用し、パラメーター「field」を「date」、パラメーター「interval」を「1d」として、ファンドの毎日の価格を抽出します。 次に、TPという名前の「scripted_metric」集計が続き、通常の価格が計算されます。これは、最高値、最低値、および終値の平均価格に等しくなります。
"aggs":{
"MACD_BB":{
"date_histogram":{
"フィールド": "日付"、
"間隔": "1d"、
"フォーマット": "yyyy-MM-dd"
},
"aggs":{
"TP":{
"scripted_metric":{
"init_script": "state.totals = []"、
"map_script": "state.totals.add((doc.high.value + doc.low.value + doc.close.value)/ 3)"、
"combine_script": "double total = 0; for(t in state.totals){total + = t} return total"、
"reduce_script": "状態を返す[0]"
}
},
バケットの日付を抽出します
追加のデータがあるため、後続の操作では、後で範囲外の部分を除外する必要があります。 「DateStr」という名前の「min」集計は、バケットの日付を取得するためのものです。 Elasticsearchサーバーでは、日付はエポック時間で保存されます。 時間の単位はミリ秒で、タイムゾーンはUTCです。
"DateStr":{
"min":{"field": "date"}
},
複数のドキュメントを含むバケットを選択します
空のバケット(非取引日)を除外するために、STPという名前の「bucket_selector」集計を使用して、ドキュメント数が0より大きいバケットを選択します。
"STP":{
"bucket_selector":{
"buckets_path":{"count": "_ count"}、
"スクリプト": "params.count> 0"
}
},
典型的な値の毎日の12取引日と26取引日のEWMAを計算します
EWMA12という名前の「moving_fn」集計を使用します。パラメータウィンドウを12、パラメータ「buckets_path」をTP.valueとして、標準値の12取引日のEWMAを計算します。 EWMAは、パラメーターalphaを2 /(window + 1)として関数MovingFunctions.ewmaを使用して計算されます。 EWMA26の集計も同じ方法で実行できます。
"EWMA12":{
"moving_fn":{"script": "MovingFunctions.ewma(values、2 /(12 + 1))"、 "window":12、 "buckets_path": "TP.value"}
},
"EWMA26":{
"moving_fn":{"script": "MovingFunctions.ewma(values、2 /(26 + 1))"、 "window":26、 "buckets_path": "TP.value"}
},
MACDを計算する
macdという名前の「bucket_script」集計をパラメータ「buckets_path」とともに使用して、EWMA12およびEWMA26からの結果を指定します。 次に、スクリプトの式に従ってMACDインジケーターが計算されます。
"MACD":{
"bucket_script":{
"buckets_path":{
「EWMA12」:「EWMA12」、
「EWMA26」:「EWMA26」
},
"スクリプト": "params.EWMA12 --params.EWMA26"
}
},
典型的な値の毎日の10日間の単純移動平均を計算します
パラメータウィンドウを10、パラメータ「buckets_path」をMACDとして、SMA10という名前の「moving_fn」集計を使用して、MACD値の10日間のSMAを計算します。 SMAは、重み付けされていない平均関数(MovingFunctions.unweightedAvg)を使用して計算されます。
"SMA10":{
"moving_fn":{"script": "MovingFunctions.unweightedAvg(values)"、 "window":10、 "buckets_path": "MACD"}
},
典型的な値の毎日の10日間の標準偏差を計算します
SD10という名前の「moving_fn」集計を使用します。パラメータウィンドウを10、パラメータ「buckets_path」をMACDとして、10日間のMACD標準偏差を計算します。 SDは、標準偏差関数(MovingFunctions.stdDev)を使用して計算されます。
"SD10":{
"moving_fn":{"script": "MovingFunctions.stdDev(values、MovingFunctions.unweightedAvg(values))"、 "window":10、 "buckets_path": "MACD"}
},
MACDBBを計算する
BBU10およびBBL10という名前の10つの「bucket_script」集計をパラメーター「buckets_path」とともに使用して、SMA10集計およびSD10集計の結果を指定します。 次に、SMA10からBBL10とBBU10が計算され、SDXNUMXの値がプラスまたはマイナスになります。
"BBU10":{
"bucket_script":{
"buckets_path":{
「SMA」:「SMA10」、
「SD」:「SD10」
},
"スクリプト": "params.SMA + params.SD"
}
},
"BBL10":{
"bucket_script":{
"buckets_path":{
「SMA」:「SMA10」、
「SD」:「SD10」
},
"スクリプト": "params.SMA-params.SD"
}
},
MACD値のタイプを特定します
a)MACD_Diffという名前の「派生」集計をパラメータ「buckets_path」とともに使用して、MACDの値を指定し、それが先のタイムスタンプでのMACDからのインクリメントかデクリメントかを判断します。
"MACD_Diff":{
「導関数」:{
"buckets_path": "MACD"
}
},
b)MACDTypeという名前の「bucket_script」集計とパラメータ「buckets_path」を使用して、BBL10、BBU10、macd、およびMACD_Diff集計の結果を指定し、MACD値のタイプを分類します。
➤MACD_Diffがデクリメントで、macd値がBBL未満の場合は、1を入力します
➤MACD_Diffが増分で、macd値がBBL未満の場合は、2を入力します
➤MACD_Diffが増分でmacd値> BBUの場合は、3と入力します
➤MACD_Diffがデクリメントでmacd値> BBUの場合は、4と入力します
➤その他の場合は0を入力します
"MACDType":{
"bucket_script":{
"buckets_path":{
「BBL」:「BBL10」、
「BBU」:「BBU10」、
「MACD」:「MACD」、
"MACD_Diff": "MACD_Diff"
},
"script": "(params.MACD> params.BBU)?(params.MACD_Diff> 0?3:4):( params.MACD <params.BBL)?(params.MACD_Diff> 0?2:1):0 「」
}
},
出力用に追加のドキュメントを除外します
SMACD_BBという名前の「bucket_selector」集計を使用し、パラメーター「buckets_path」を「DateStr」として使用して、「script」ステートメントで指定された正しいバケットを選択します。 選択基準は、1年2021月1612137600000日以降の日付(ミリ秒単位のエポック時間XNUMX)を持つバケットです。
"SMACD_BB":{
"bucket_selector":{
"buckets_path":{"DateStr": "DateStr"}、
"スクリプト": "params.DateStr> = 1612137600000L"
}
}
}
}
},
「サイズ」:0
}
結果を収集した後、前に示したように図を描くことができます。 タイプ3のドットの色はアクアブルー、タイプ4は青、タイプ1は赤、タイプ2はオレンジ、その他は灰色です。
読者は、GitHubのオープンソースプロジェクトをさらに参照できます(MACD_BB)
備考:
I. ETFデータを提供するIEX(Investors Exchange)と、オープンソースのプロジェクトストレージを提供するGitHubに感謝します。
II。 この記事は技術的な考えに基づいており、投資アドバイスを構成するものではありません。 読者はそれを使用するときに自分の責任を負わなければなりません。
III。 記事にまだ誤りがあるかもしれません、そして私は読者に私を訂正するように促します。
IV。 それらの読者は、Elasticsearchのすべての基本的なスキルについて、ライターが作成した本を参照して興味を持っていると感じています。 「AdvancedElasticsearch7.0」、2019年9781789957754月、Packt、ISBN:XNUMX。
PlatoAi。 Web3の再考。 増幅されたデータインテリジェンス。