1世紀前の機能で取引戦略をアップデートする
はじめに
金融市場の現状を分析することは、取引の成功にとって最も重要な基盤です。これにより、トレーダーは現在の状況を評価し、将来起こり得る価格変動を予測し、根拠のある取引判断を下すことができます。そのために、さまざまな数学的手法やモデルが用いられます。
本記事では、いくつかの新しい数学関数について議論します。もっとも、正確に言えばまったく新しいわけではありません。これらは約100年前には新しいものでした。現在では、忘れ去られている関数もあれば、依然として利用されている関数もあります。しかし、なぜか取引の分野では使われていません。この問題点を、ここで是正してみましょう。
ラーデマッヘル関数
数学的な観点から見ると、関数とは「引数」と「値」との対応関係です。たとえば、関数は次のような形をとります。
![]()
取引の分野では、このような関数が直接使われることはあまり多くありません。テクニカル分析で最もよく使われるのは窓関数です。
![]()
これらの関数の本質は非常に単純です。あらかじめ決められた数の価格データを取り、それぞれの価格に、非常に複雑で分かりにくい方法で計算された係数を掛けます。その結果をすべて足し合わせたものがインジケーターになります。つまり、インジケーターとは価格の関数です。そして、取引における最大の問題がここにあります。シンプルで分かりやすい係数をどこから持ってくるのかということです。
インジケーターの係数は、ラーデマッヘル関数を使って設定することができます。この関数の式は非常に単純です。
![]()
ここで、pは関数の次元、signは符号関数です。

この関数はさらにシンプルに見えます。たとえば、1次関数は2つの区間から成り立っています。

これらの区間の端点をゼロにつなげると、正弦波と同じ形になりますが、矩形波になります。「Quadratisch.Praktisch.Gut」(四角くて、実用的で、良い)というわけです。 しかし、この形のままでは取引には適していません。そこで、離散化する必要があります。
ラーデマッヘル関数を基にしたインジケーターを作ると仮定しましょう。まず、インジケーターの周期をNに設定します。すると、インジケーターのi番目の係数は次の式で計算できます。

たとえば、周期8、2次の離散ラーデマッヘル関数は次のようになります。

次に、この関数を使ってインジケーターを構築します。インジケーターの周期は2の累乗である必要があります。
![]()
このとき、インジケーターは零次からs次までのラーデマッヘル関数で構成されます。たとえば、周期4のインジケーターでは、零次、1次、2次の関数を使用できます。
このようなインジケーターがどのように機能するかを見てみましょう。まず、将来のインジケーターの各バーにおいて、すべてのラーデマッヘル関数の値を計算します。
| p = 0 | 1 | 1 | 1 | 1 |
| p = 1 | 1 | 1 | -1 | -1 |
| p = 2 | 1 | -1 | 1 | -1 |
次に、各関数の重みを求めます。そのために、関数の値と対応する価格を掛け、それらを合計します。その後、合計値をインジケーターの周期で割ります。こうして、各関数に対して1つずつ、合計3つの重みが得られます。

零次関数の重みは、誰もが知っているSMAです。その他の重みは、周期をずらし、短くした線形トレンドの平均速度として解釈できます。
重みが分かれば、インジケーターの値を計算できます。そのためには、重みと、そのバーに対応するラーデマッヘル関数の値を掛け合わせます。簡単に言えば、重みを計算するときは価格を入力し、行方向に合計し、インジケーターを計算するときは重みを入力し、列方向に合計します。その結果、4つのインジケーター値が得られます。

つまり、1つの価格変化がインジケーター全体に影響します。一方では、インジケーターが何を描いているのかが見えます。もう一方では、新しいデータに応じて、価格変動モデルそのものを更新しているとも言えます。
このようなインジケーターがチャート上でどのように見えるか、想像できますか。構築方法にはいくつかの選択肢があります。必ずしもすべてのラーデマッヘル関数を使う必要はなく、低次の関数だけに制限することも可能です。たとえば、周期16、0〜2次の関数で構築したインジケーターは次のようになります。

ラーデマッヘル関数を用いたインジケーターの最大の特徴は、価格を平滑化しようとしないという点です。価格のあらゆる変化を、複数の線形トレンドの組み合わせとして捉え、それらの平均レベルを導き出します。
ウォルシュ関数
任意の時系列は三角多項式を用いてモデル化できます。価格の動きは非常に複雑になることがありますが、正弦と余弦比率を適切に選べば、多項式の値と時系列の値を正確に一致させることが可能です。
しかし、正弦と余弦の計算には手間がかかります。ウォルシュ関数を用いることで、これらの計算を大幅に簡略化することができます。通常、これらの関数は次のように定義されます。定義を確認すると、なぜトレーダーの間であまり使われないかが理解できます。
一般に、古典的なウォルシュ関数の定義は私たちには適していません。簡単で分かりやすいものが必要です。そこで、次数pの関数は次のように計算します。

この方法でウォルシュ関数を定義すると、離散フーリエ変換の非常に離散的なアナログを構築できます。余弦関数は変換の実部に対応し、正弦関数は虚部に対応します。正弦関数はトレンドを追跡し、余弦関数はトレンドの変化のタイミングを捉えます。この組み合わせにより、インジケーターは価格を滑らかにし、関数の次数が高いほど滑らかさが増します。

唯一の制約は、関数の次数がインジケーターの周期を超えることはできないという点です。たとえば、周期8のインジケーターを使用する場合、零次関数から7次関数までを使うことができます。
システムを破って自由に取引する
これまで見てきた関数は、すでにその有用性を証明しています。ご自分のスマートフォンをご覧ください。その内部にはどこかでウォルシュ関数が使われています。しかし…どのビジネスにも必ず「しかし」が存在します。それが存在しない場合、すべてが本当に完璧であるか(それはまずあり得ません)、あるいは何かを教えてもらえていないかのどちらかです。ここではルールを破ってみましょう。ただし、無鉄砲にではなく、視野を広げるための挑戦としてです。
ラーデマッヘル関数は正弦に基づいて構築されます。正弦は奇関数です。
![]()
意味を正確に理解している人は多くありません。しかし(再び、「しかし」)、この奇関数性を利用することで、価格変動のトレンドパターンを可視化することが可能です。では、価格帯を平滑化したい場合はどうでしょうか。その場合は、偶関数が必要です。たとえば、余弦です。
p次のラーデマッヘル関数の平滑化バージョンは、次のように定義できます。

この関数を用いて構築したインジケーターもトレンドを追跡します。しかし、このトレンドはインジケーターの中心を基準として測定されます。言い換えれば、トレンドの方向が変化する瞬間を示すことになります。

ウォルシュ関数の体系は、三角多項式の体系、あるいはフーリエ変換に類似しています。これらの関数は元々、この変換を簡単に置き換えるために開発されました。ウォルシュ関数は精度では劣りますが、その計算は非常に高速で、ステップ数も最小限で済みました。当時のコンピュータにとって、この点は極めて重要でした。
しかし(また「しかし」です)、他にも別の変換を利用して別の体系を構築することができます。それがハートレー変換です。この変換は正弦と余弦の和に基づいています。この関数の比率は、次のように計算できます。

関数は対称にすることもでき、その場合は価格を平滑化します。あるいは非対称にすれば、トレンドを追跡する関数になります。これらの関数を用いたインジケーターは、次のようになります。

次におこなう変更は、インジケーターの表示方法に関するものです。任意の零次関数はSMAと同等です。しかし、私たちはSMAがチャート上で線として表示されることに慣れています。そこで同じことをおこない、各バーでインジケーターの最後の値のみを計算し、チャート上に表示します。こうすることで、通常の線として表示されます。

これらの関数を基にしたオシレーターも構築できます。インジケーター自体はわずかな変更だけで済みます。零次関数の比率はすべてゼロに設定してください。すると、得られるオシレーターは、線形インジケーターのSMAに対する変動を示すことになります。

最後の2つのインジケーターは差分を用いて計算されるため、ラグは小さくなります。これは取引においてプラスの影響をもたらす可能性があります。
取引戦略
さて、これらのインジケーターをどのように取引に活用できるかを見てみましょう。
最初の戦略では、インジケーターのトレンド追跡能力を活用します。戦略のルールは非常にシンプルです。
- 現在の価格がインジケーターの最小値を下回り、前の価格が現在価格を上回っていた場合、買いポジションを建てて売りポジションを決済します。
- 現在の価格がインジケーターの最大値を上回り、前の価格が現在価格を下回っていた場合、売りポジションを建てて買いポジションを決済します。
シンプルながら、この戦略は比較的効果的に見えます。

線形インジケーターを基に、価格とインジケーター線がクロスするタイミングでシグナルを生成する戦略も構築できます。
- 現在の価格がインジケーター線を上回り前の価格が下回っていた場合、買いポジションを建てて売りポジションを決済します。
- 現在の価格がインジケーター線を下回り前の価格が上回っていた場合、売りポジションを建てて買いポジションを決済します。

テスト結果はやや平凡ですが、複数のインジケーターを併用することで、それぞれのパラメータに応じたシグナルを生成し、小さな利益を積み重ねることが可能です。
戦略を少し改良することもできます。価格の代わりに別のインジケーターの値を使う方法です。直感的には、1つは平滑化用、もう1つはトレンド追跡用にするのがよいでしょう。こうした変更によって、より洗練されたシグナルを得ることができます。

前述の関数を基にしたオシレーターを使っても、シグナルを生成できます。
まずは単純な方法を試してみます。オシレーター線がゼロをクロスしたときにシグナルを生成します。オシレーターの符号がマイナスからプラスに変わった場合、買いポジションを建てて、売りポジションを決済します。符号がプラスからマイナスに変わった場合、逆のシグナルを生成します。
このアプローチはあまり信頼性が高いとは言えず、実際の運用ではかなり疑問の残る手法です。

戦略を改良すると、次のようになります。オシレーターが設定した最小値に達した場合、買いポジションを建てます。インジケーターの値が設定した一定レベルを超えた場合、売りポジションを建てます。ポジションはオシレーターがゼロをクロスした時点で決済します。
このようにエントリーシグナルのルールを変えることで、結果はやや改善されます。

結果に満足できなければ、いつでも設定を変更して試すことができます。

ご覧の通り、新しいインジケーターを取引に活用することは十分に理にかなっています。同時に、この記事で紹介した関数を用いれば、より複雑な戦略を構築することも可能です。1次以上のすべての関数は独立したオシレーターです。異なるタイプ、次数、周期の関数を組み合わせて、オシレーターのバンクを構築できます。これらのインジケーターを基にすれば、より精度の高い取引シグナルを得ることができます。
結論
取引における「新しく古い」関数の活用は、価格変動の分析や取引判断に新たな可能性をもたらします。これらの関数は、価格挙動に潜むパターンを抽出し、将来の変動を予測するのに役立ちます。これを基に、より効果的な取引戦略を構築することも可能です。さらに、ラーデマッヘル関数やウォルシュ関数を用いることで、ノイズを除去し、予測精度を向上させることもできます。
記事の執筆にあたり、以下のプログラムを使用しました。
| 名前 | 種類 | 機能 |
|---|---|---|
| New Function | インジケーター |
|
| New Function Lin | インジケーター | 選択した関数体系の最新値を計算し、チャート上に表示 |
| New Function Osc | インジケーター | 1次以上の関数を用いて構築されたオシレーター |
| EA New Function | EA | 関数の最小/最大値からの現在価格の偏差を利用してシグナルを生成 |
| EA New Function Lin | EA | 価格がNew Function Linインジケーター線をクロスしたときにシグナルを生成 |
| EA New Function Lin 2 | EA | 2本のNew Function Linインジケーター線がクロスしたときにシグナルを生成 |
| EA New Function Osc | EA | New Function Oscインジケーター線がゼロをクロスしたときにシグナルを生成 |
| EA New Function Osc 2 | EA | New Function Oscインジケーター線が指定レベルをクロスしたときにシグナルを生成。 レベル値はLvlBuyとLvlSell入力で設定 |
MetaQuotes Ltdによってロシア語から翻訳されました。
元の記事: https://www.mql5.com/ru/articles/17252
警告: これらの資料についてのすべての権利はMetaQuotes Ltd.が保有しています。これらの資料の全部または一部の複製や再プリントは禁じられています。
この記事はサイトのユーザーによって執筆されたものであり、著者の個人的な見解を反映しています。MetaQuotes Ltdは、提示された情報の正確性や、記載されているソリューション、戦略、または推奨事項の使用によって生じたいかなる結果についても責任を負いません。
IBMの量子コンピュータを使ってすべての価格変動パターンを解析する
取引におけるニューラルネットワーク:2次元接続空間モデル(最終回)
エラー 146 (「トレードコンテキスト ビジー」) と、その対処方法
取引におけるニューラルネットワーク:2次元接続空間モデル(Chimera)
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索