三角波とのこぎり波:トレーダー向け分析ツール
はじめに
「波」と聞いてまず思い浮かぶのは、多くの場合、正弦波です。正弦波は、さまざまな種類の振動や周期的現象をモデル化し、記述するために使えます。市場サイクルもその一例です。
波動分析といえば、真っ先に思い浮かぶのがエリオット波動理論です。この理論では、価格は周期的で動くとされます。まず推進波(上昇波)があり、その後に修正波(下降波)が続きます。これらの動きはフラクタル構造を形成しており、大きな波はより小さな波で構成され、その小さな波もさらに小さな波から成り立っています。
このように、正弦波とエリオット波動は異なる概念ですが、どちらも周期性やプロセスの反復という考え方に関連しています。一見すると、こうした波動理論はすでに十分研究され尽くし、新しいものを生み出す余地はないように思えるかもしれません。しかし、古い基盤の上に新しいものを構築することは常に可能です。そして、まさにそれを本記事でおこないます。
三角波
通常、波は「波らしい形」をしているものだと考えがちです。しかし、波にはさまざまな形があります。最近、方形波の記事を読んだことがありますが、三角波を本格的に扱うのは今回が初めてです。実際、三角波はすでにMetaTraderターミナルターミナルには実装されていますが、開発元のMetaQuotesはその情報を公開していません。
期間3のSMAを3本連続で取り、その平均を求めると、MODE_SMMA方式の移動平均が得られます。計算は次のようになります。
![]()
![]()
![]()
![]()
ここで、インジケーターの「三体問題」を別の視点から見てみます。任意の線形インジケーターは単なる係数の集合です。これらの係数に対して任意の算術演算をおこなうことができます。例として、3つのSMAの合計を考えます。まず各インジケーターの係数を書き出し、同じ価格に対応する係数同士を足し合わせます。その結果、三角窓関数が得られます。
| price[0] | price[1] | price[2] | price[3] | price[4] |
|---|---|---|---|---|
| 1 | 1 | 1 | ||
| 1 | 1 | 1 | ||
| 1 | 1 | 1 | ||
| 1 | 2 | 3 | 2 | 1 |
三角窓は、より簡単な方法でも求めることができます。まずインジケーターの期間を設定し、次に以下の式を用いて係数を計算します。
![]()
次に、これらの係数を正規化する必要があります。まず、すべての係数の合計を求めます。次に、各係数をその合計で割ります。このように作られたインジケーターは価格を平滑化しますが、SMMAとの差はごくわずかです。
ここで、より複雑で興味深い課題に挑戦してみます。三角窓関数の係数を用いて、価格変動に反応するインジケーターを構築します。

このインジケーターは、2つの部分から構成されます。1つ目の部分は最も単純で、すべての係数が1です。2番目の部分はやや複雑で、まず三角窓関数の係数を計算し、その後正規化してオシレーターを作成します。正規化するには、まずすべての係数の合計を求めます。
![]()
次に、以下の式を用いて、各係数を再計算します。
![]()
実際にこのインジケーターを適用してみましょう。インジケーター期間を5とした場合、インジケーターは2つの係数配列から構成されます。
![]()
![]()
これらの係数を使って2種類の重みを算出します。
![]()
![]()
これらの重みはそれぞれ独立したインジケーターとして扱えます。W0はよく知られているSMA(単純移動平均)であり、W1は三角窓関数に基づくオシレーターです。この2種類の重みを用いることで、インジケーターの値を算出することができます。
![]()
チャート上では、このような形で表示されることになります。

これでまずは最初の成果を得ることができました。次に、このインジケーターをさらに改良してみましょう。たとえば、インジケーターの期間を24に設定します。すでに、基本となる三角波の作り方は理解しています。この期間には、期間12の波がちょうど2回収まります。また、期間8、6、4、3の波も整数回のサイクルとして収まるように調整できます。これらの波をインジケーターに追加するには、係数の計算をわずかに変更するだけです。波動周期PWがインジケーター期間に整数回含まれる場合、係数は特定の式を用いて求められます。
![]()
なお、係数の正規化や重みの計算、インジケーター値の算出の手順自体は変わりません。
もちろん、インジケーターに含める波の数が多いほど、価格の平滑化効果は高まります。しかし、短周期の波はノイズに対して敏感であり、常に有効とは限りません。そのため、インジケーター内で使用する波の数を自由に選択できるようにすると実用性が高まります。

このインジケーターの最大の利点は、価格を平滑化できることです。また、波動的な価格変動が存在する場合には、それを検出して強調することもできます。

一方で、計算やインジケーターの構築が中心基準でおこなわれるため、遅延が生じる可能性があります。次は、このラグを軽減する方法について検討していきます。
のこぎり波
価格が一方向に動く力が他の方向よりも優勢になると、トレンドが形成されます。たとえば、上昇の動きが下降の動きよりも大きく頻繁に現れる場合です。つまり、トレンドとは常に対称性の破れです。そのため、線形のトレンドを取り出すには、非対称で線形の波が必要になります。ここで適しているのがのこぎり波です。
実際、のこぎり波はすでにMetaTraderターミナル内に存在しています。しかし、繰り返しになりますが、ここではLWMA(線形加重移動平均線)を例に考えてみましょう。その係数は次のように計算できます。
![]()
つまり、LWMAは基本的に単一ののこぎり波に相当します。しかし、単一の「歯」では十分ではありません。より多くの「歯」が必要です。そのため、周期PWののこぎり波に対応する係数を計算していきます。
![]()
その他の計算手順は、三角波の場合と同様です。
のこぎり波は、あらゆる価格変動をトレンドとして解釈します。1つ目の波は全体のトレンドを示し、2つ目の波はそのトレンドを2~3に分割します(インジケーターの期間に応じて変わります)。さらに後続の波は、その分割部分をさらに細かく分けます。言い換えれば、このインジケーターはトレンドチャネルを構築していると考えることができます。チャネルの線同士が近いほど、トレンドはより明確になります。

このインジケーターには興味深い特徴があります。波の数が偶数の場合、トレンドを平均化して平滑化する傾向があります。一方、波の数が奇数の場合、トレンドをより正確に捉えようとします。
完璧さに限界はない
再び三角波に戻りましょう。インジケーターの期間を6とした場合、この期間には周期3の三角波が2つ含まれています。それぞれの波の係数は次のようになります。
![]()
価格の並び方によって、これらの波は上向きにも下向きにもなります。ここで、係数計算にわずかな修正を加えることで、両方の波を互いに独立させることができます。従来のように1つの係数体系を使うのではなく、2つの独立した係数体系を用いるのです。
![]()
![]()
このようにして、2つの波を時間軸上で分離しました。これにより、各波の方向や重みは互いに依存しなくなります。この分離によって、インジケーターはより柔軟になり、価格変動をより正確に追跡できるようになります。
同じ分離はのこぎり波にも適用できます。この場合、興味深い特徴が現れます。隣接する2つののこぎり波が異なる方向を向くと、それらは1つの三角波を形成します。
窓関数として表現されるインジケーターは非常に稀です。しかし、この波形インジケーターを線として表示するように設計し直すことも可能です。その場合、インジケーターの最後の値だけを計算すれば十分です。この方法を用いれば、トレーダーはどの要素がインジケーターに影響を与えたかを判断することはできませんが、現時点でのインジケーターの動きは把握することができます。
波のパラメータは、平均値を中心とした振動として計算されます。この平均値を除外することで、オシレーターを構築することができます。このオシレーターは異なる周期の波を合算し、その合計値から、価格が平均値からどの方向にどの程度逸脱しているかを把握できます。結果として、2つの新しいインジケーターが作成されました。

これらのインジケーターは、見た目は従来のものに似ています。しかし、波そのものを表示することはなくなっています。
取引戦略
インジケーターの構築が完了したので、次にこれらが実際の取引に適しているかどうかを検証します。まずは単純な戦略として、インジケーターと価格のクロスを用います。
- 価格がインジケーターのラインを下から上へクロスした場合、エキスパートアドバイザー(EA)は買いポジションを開き、すべての売りポジションを決済します。
- 逆に価格が上から下へクロスした場合は、売りポジションを開き、すべての買いポジションを決済します。
こうした単純なアプローチでも、戦略として十分に機能するように見えます。

次に、この戦略を少し改良してみます。価格ではなく、別のインジケーターの値を使うのです。他のルールはそのままにしておきます。波やトレンドの分離方法を変えるだけでも、結果に違いが現れる可能性があります。

さらに別の戦略では、窓関数の特性を利用します。窓関数は新しい価格を受け取ると、すべての値を更新することが可能です。たとえば、前のバーで2つの窓関数がクロスしていたとしても、新しいバーが形成されるとそのクロスは消えてしまうことがあります。逆に、クロスは現在のバーではなく過去のバーに現れる場合もあります。
この場合、EAは2つのインジケーターの全体を追跡し、どのバーでクロスが発生したとしてもポジションを開くシグナルを生成します。ただし、この方法ではシグナルが遅れる可能性があります。そのため、フィルタを追加します。シグナルは、ポジションを開く価格が前回より有利な場合のみ有効とします。買いポジションでは価格が前回より低く、売りポジションでは前回より高い場合に限ります。一見リスクが高そうですが、試す価値はあります。

この戦略には、ポジションを決済するための別の方法も追加する必要があります。たとえば、ストップロス、テイクプロフィット、トレーリングストップなどです。これにより、より安定した結果が得られる可能性があります。
三角波やのこぎり波はトレンドの分離に有効です。この特徴を活かして、次のようなルールで取引戦略を構築することができます。
- 現在のインジケーターの値が過去のすべての値より低ければ、買いポジションを開きます。
- 現在のインジケーターの値が過去のすべての値より高ければ、売りポジションを開きます。
この戦略は単純に見えますが、十分な可能性を秘めています。

別の戦略として、オシレーターを用いる方法もあります。この戦略では平均値への回帰を利用します。買いポジションを開く条件は、オシレーターが局所的な最小値に達し、その最小値が設定されたレベルより下であることです。売りポジションを開く条件は、オシレーターが局所的な最大値に達し、その最大値が設定レベルを上回ることです。

三角波やのこぎり波は非常に有用なテクニカル分析ツールです。これらの波は、取引戦略の基礎として使うことも、追加のフィルタとして使うこともできます。潜在的なエントリーポイントやエグジットポイントの特定に役立ちます。ただし、常に他の分析手法や適切なリスク管理と組み合わせて使用することが重要です。
結論
このようにして、三角波とのこぎり波を取引に活用するさまざまな方法を確認しました。単純な価格平滑化から、波動的な動きやトレンドを識別できる複雑な組み合わせの構築まで、多岐にわたるアプローチを扱いました。ただし、これらの波の応用例をすべて1つの記事で網羅することは不可能です。テーマが非常に広範であるためです。しかし、この分野はさらに発展させる余地があり、研究や応用の余地は十分にあります。最も単純な戦略であっても、これらの波に基づく手法は、適切に調整すれば利益を上げられる可能性があります。もちろん、慎重なパラメータ調整が必要です。
この記事の執筆には以下のプログラムが使用されました。
| 名前 | 種類 | 機能 |
|---|---|---|
| 波 | インジケーター |
三角波の最小期間は3、のこぎり波の最小期間は2です。波の数を調整することで、信号の低周波成分のみを残すことが可能です。 |
| Wave Lin | インジケーター | 波の最新値のみを表示します。 |
| Wave Osc | インジケーター | 波の重みを計算し、合算します。 |
| EA Wave | EA | インジケーターラインと価格のクロスに基づく単純な戦略です |
| EA Wave 2 | EA | 最後の2本のバーにおける2つのインジケーターラインのクロスに基づく戦略です。 |
| EA Wave 3 | EA | すべてのバーにおける2つのインジケーターラインのクロスに基づく戦略です。 |
| EA Wave 4 | EA | 現在のインジケーター値が最大値または最小値に到達したことに基づく戦略です。 |
| EA Wave Osc | EA | オシレーターの値に基づく戦略です。 |
MetaQuotes Ltdによってロシア語から翻訳されました。
元の記事: https://www.mql5.com/ru/articles/17595
警告: これらの資料についてのすべての権利はMetaQuotes Ltd.が保有しています。これらの資料の全部または一部の複製や再プリントは禁じられています。
この記事はサイトのユーザーによって執筆されたものであり、著者の個人的な見解を反映しています。MetaQuotes Ltdは、提示された情報の正確性や、記載されているソリューション、戦略、または推奨事項の使用によって生じたいかなる結果についても責任を負いません。
深層強化学習を用いたIlanエキスパートアドバイザーの強化
エラー 146 (「トレードコンテキスト ビジー」) と、その対処方法
初級から中級まで:インジケーター(IV)
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索