English Русский 中文 Español Deutsch Português
preview
Rebuyのアルゴリズム:多通貨取引シミュレーション

Rebuyのアルゴリズム:多通貨取引シミュレーション

MetaTrader 5テスター | 31 7月 2023, 10:01
268 0
Evgeniy Ilin
Evgeniy Ilin

内容


はじめに

前回の記事では、読者がおそらく知らなかったであろう便利な機能をたくさん紹介しましたが、最も興味深いのはその先にある研究や取引のシミュレーションです。ストラテジーテスターだけでは不十分なこともあります。市場を知るにはとても便利なツールですが、これは最初の一歩に過ぎません。前回の記事をよく読んでいただければ、その理由はもうお分かりでしょう。


取引シミュレーションの必要性を説明する

取引シミュレーションをおこなう理由は、どのような取引商品であれ、過去のデータの量が限られているという事実に直接あります。この問題は、私が前回の記事で提供した資料を理解するか、他の別の方法で理解することで初めて見えてきます。 

問題の本質は、単純な相場史だけでは必ずしも十分ではないということです。なぜなら、この相場史は多くのランダムな、あるいはランダムでない世界の出来事が交差して形成されるものであり、その出来事が展開するシナリオは無数にあるからです。現在、私はできるだけシンプルに物事を説明しようとしていますが、確率論の言葉に進むと同時に、前回の記事の成果を利用すれば、私たちが知っているすべての商品の相場の歴史は、違った展開になる可能性があることが理解できます。

映画『バックトゥザフューチャー』を観れば、この事実は明らかです。科学的見地からは、多くの失策やおかしな矛盾がありますが、それでもこの映画は、ここで提供されたメッセージの主旨を伝えています。メッセージの本質は、展開される出来事について1つのバージョンだけでは不十分であり、その最大数を考えるべきだということです。歴史が与えてくれるのは1つのバージョンだけで、その大きさは客観的な評価には不十分なこともあります。例えば、少し前に、多くの証券会社が最も人気のある暗号銘柄のいくつかを取得しました。これは、これらの銘柄をテストし、取引する可能性という点で非常に優れています。しかし、バーで機能するEAの持続可能な取引システムを開発するには、十分な過去のデータがないという欠点があります。

このシミュレーションによって、人工的な金融商品を作り、毎回まったく異なる方法で相場を生成することができます。これによって、数学的Rebuyモデルや、前回の記事でお話ししたその他の重要な数学的原理を研究するための、可能な限り広い枠組みが得られます。もうひとつの重要な利点は、並行取引用の独立した商品を無制限にシミュレートできることです。最終的には、テスト期間と独立した取引商品の数に制限はなくなりました。もちろん、これらは本物の相場ではありませんが、価格設定法という点では本物のものと何ら変わることはありません。


離散化ロジックを用いた価格シミュレーションの数理モデル

ここでのタスクの文脈では、「任意の離散化 」アプローチの使用は十二分です。なぜなら、強力な離散化は、このようなシステムが自動的にスプレッドにより効果的に抵抗するだけで、アルゴリズムの効率を高めるからです。それなのに、私はティックのシミュレーションも可能なアルゴリズムを構築しました。結局のところ、ティックは最小の時間枠です。ティックが到着するまでの時間は大きく異なりますが、ティック間の平均時間を計算すれば、第一近似値としてティックを模倣することができます。

この場合のバーとは、視覚的に認識しやすい一定の期間を意味します。ただし、これは便利だと言われたから便利なのであって、すべての取引ターミナルがこのパラダイムのために特別に調整されているため、そこから逃れることはできません。しかし、これは価格設定を離散化する最良の方法とはほど遠いものです。皆さんは「練行」をご存じだと思います。このような価格離散化のアプローチは、ただひとつ、時間から逃れることを目的としています。このアプローチの価値は、アプローチやトレーダーによってまったく異なります。しかし、この例は、価格系列を離散化する代替方法のひとつを示すためだけに使用します。私の理解では、この例は、ここでのタスクの文脈では、まったく異なる、なじみのない離散化ロジックを使用することになりますが、過剰な計算コストをかけることなく、非常にシンプルかつ効率的に価格設定をモデル化することを可能にするものです。

効率的で経済的なパラダイムを構築するために、次の画像をご覧ください。

パラダイム

画像は、価格のロールバックについて考えられるいくつかのシナリオを示しています。私にとってこの2つのロールバックは、どのようにでも選択できる任意の2点を示しており、その選択方法は重要ではありません。重要なのは、反転の可能性が高いポイントを任意に選べるということです。

「probable(可能)」という単語は、数学者なら誰でも、ある時点で、ある望ましい事象が起こる確率があることを即座に教えてくれるはずです。私たちの場合、ある事象は恣意的であり得ると言えます。ロールバックイベントは、価格増分の上限と下限によって特徴づけられます。この確率は次のように計算できます。

確率

上限値に達する確率と、この式から導かれる式を以下に示します。この方程式は、予測モーメントがない場合の価格上昇の数学的期待値を特徴づけます。予測モーメントの欠如は、期待値がゼロであることを意味しますが、シミュレーションでは、予測モーメントのパラメータを調整して、シミュレートされた価格設定のフラットな特性を簡単に強化または弱めることができるようにしたいと考えています。最終的には、このことがRebuyアルゴリズムにどのような影響を与えるかを理解し、Rebuyアルゴリズムを使った分散取引のための実用的な数学的モデルを手に入れることになります。その前に、この背後にある完全な計算をお見せしたいと思います。

現在のところ、これらの方程式はすべて美しく、一見有用であることがわかりますが、今のところ、商品の横ばい度(ロールバック)を調整する便利なアルゴリズムはありません。このようなアルゴリズムを開発するには、以下の値を入力する必要があります。

新しい平均値

最初の値は、実際には平均「アルファ」値です。また、任意の下降動きの後の価格のロールバック値の数学的期待値と呼ぶこともできます。2つ目の値は、ロールバック率の数学的期待値で、前回の動きに対する相対値で表されます。これらの量の本質は同じですが、唯一の例外があります。

新値計算

ここでは、これらの量がどのように関連し、どのように計算されるかをお見せしているだけです。私たちのモデルでは、平均的なロールバックの平均的な割合を設定し、平均的な価格のロールバックを決定するためにそれを使用してロジックを逆にします。平均ロールバック率は、市場横ばい度パラメータの規制値として非常に便利であることを認めなければなりません。この割合がゼロに設定されている場合、実際にはランダムな価格設定が必要となります(これは単なる例である)。ただひとつ注意したいのは、価格のドローダウンはすべて「シータ」ポイントからの相対的なものと考えていることです。この資料は完全に私のものであり、ここには他の方の作品は一滴も含まれていないため、私の表記の自由をご容赦いただければ幸いです。これらの方程式は、私が次に何をするかを理解するために必要です。

価格設定のもうひとつの重要な特徴は、ボラティリティ(価格変動率)です。このパラメータは時間に関連しており、この値を設定するための非常に便利な方法を考えなければなりません。これにより、価格決定率を簡単かつ効果的にコントロールし、取引サイクルのタイミングを正しく計算できるようになるはずです。今のところ、このすべてが複雑に見えるかもしれませんが、練習に取り掛かって、その仕組みをお見せするようになれば、もっと明確になるでしょう。まず、ボラティリティについて説明しましょう。

古典的な解釈では、ボラティリティは少し異なり、むしろ、最小値から最大値へ、あるいはその逆、最大値から最小値への相対的な値動きの可能性の度合いです。これは、値動き率を設定するには非常に不便な方法です。もっと便利な方法があり、それは一定期間の平均値動きを測定することです。そのようなセグメントがあります。それらはバーと呼ばれています。実際、1本あたりの価格変動係数の確率変数の分布法則があります。この値が大きいほど、価格変動率(変化率)は大きくなります。以下の設定を入力します。

値動きのパラメータ

「S」値のランダム分布をシミュレートすべきかどうかについては、その必要はないと言えます。ただひとつ知っておかなければならないのは、実際の価格設定は、数学的モデルで使う方法とは異なるということです。私は「S」の値を平均値のレベルに固定することを提案します。各ステップの時間はすでに固定されているので、ステップのサイズと時間的な持続時間の両方を得ることができます。これにより、取引システムの年間収益性を評価し、取引サイクルの平均時間を測定することができます。では、次の図を見て前進しましょう。

横ばい度調整


各ステップの価格設定をシミュレーションする必要があるので、ステップが下か上かは明らかです。両方向に等価なステップを設定すれば、ランダムな価格設定になります。つまり、横ばい度を調整するためには、これらのステップ確率を変える必要があります。これは、価格の起点にある種の「重力」を与え、そこから価格が上下し始めることです。ここでは、以下を実現する必要があります。  

1ステップの数学的期待値の計算

この場合、モデルを単純化するために、選択された平均価格の反転には、前回の価格の上昇または下落に費やされた時間とまったく同じ時間が必要だと仮定しました。これらの計算の目的は、1ステップの瞬間的な期待値を決定することであり、1ステップが上向きに発生する確率を計算するためです。この確率で、新しいステップのシミュレーションが調整されます。この値は、各取引商品の各ステップの後に再計算されます。

ここで非常に重要なポイントがあります。各商品を別々に記述する場合、それぞれの平均価格変動のデータを配列にする必要があります。しかし、私の課題の枠内では、すべての商品が平等であるため、価格変動の平均率という形で、一歩を表現するための一般的でより便利な特性を導入することが可能です。

相対なピッチ

この特性の利点は、現在の価格に対して不変であることです。さらに、理想的な商品を考えるなら、テスト中の損益に影響を与えないため、シミュレーションをどの価格で開始しても問題ありません。このことを理解すれば、Rebuyアルゴリズムの並行取引を、例えば1という価格から安全に開始することができます。この値を決定した後、ステップ値そのものを計算することはすでに可能です。

現在のステップ


さて、ステップを知ることで、上方へのステップがある確率を計算するのに必要なデータはすべて収集できたと言えます。そのために、ステップの数学的期待値に関するオリジナルの公式を、いくつかの置換を加えて使用します。

置換

この代入の後、上向きのステップの確率についてこの方程式を解き、最終的に欠けている確率を求めることができます。

ステップアップ確率

ただひとつ注目すべきは、これらの式はシミュレーション価格がスタート地点を下回った場合に有効だということです。しかし、価格が上昇したらどうするのでしょうか。すべてがとてもシンプルです。ミラーチャートについて考える必要があります。これができるのは、私たちが完璧な商品を考えているからです。価格チャートがある式「P = P(t)」で記述できると想像すると、商品の反転は次のようになります。

coup

この反転により、価格が開始点を上回った場合でも方程式が機能し続けます。ただひとつ理解しておかなければならないのは、価格を使って計算される式中のすべての量(たとえば、デルタ)は、すでに変換された価格のマイナス1乗を使わなければならないということです。

では、取引モデルを構築してみましょう。もともと暗号通貨のスポット取引用だったので、一方通行にしましたが、この取引モデルはFXの通貨ペアにも適しています。例えば、このモデルがRebuyの場合にのみ機能するのであれば、転売の場合にも同様に機能するということです。唯一のことは、テスト中は上半波をスキップし、下半波のみに取り組むことです。取引モデルを管理するために、以下の特徴を入力しました。

取引シミュレーション設定


買い始めは「1ステップパーセント/100」の価格から始まり、買い直しのステップは「ステップパーセント/100」に等しくなります。実際には、まだ開始価格との掛け算があるはずだが、この価格を1とみなすので、ステップの計算は大幅に簡略化されます。さらに、リカレントステップアップの可能性も導入されました。例えば、次のRebuyステップを前のステップのN倍ずつ増やすか、同じように減らすことができます。これらはすべて、対応する係数の値によって決まります。Rebuyステップは、商品の下限通貨(基準通貨ではない)で計測されます。このルールは暗号通貨にも適用されます。

モデルを単純化するため、このケースで適用される取引商品はおおよそ以下の通りであると仮定します。EURUSD、GBPUSD、NZDUSDなど、つまり、すべての取引商品の下限通貨は同じでなければなりません。これは、すでに非常に複雑なモデルを単純化したものですが、前回の記事の数学的原理を検証し、Rebuyアルゴリズムを最適化するには十分です。私たちの場合、スプレッドは手数料という形で考慮されます。一般的に、パラメータは数学的モデルのプロトタイプには十分です。Rebuyのプロセスを見てみよう。

平均化

最初のオプション(緑のリターンモーション)を使用します。これは実際にベース通貨を買い、それを青の点で売ることです。このアプローチでは、完了した取引サイクルはすべて利益になります。赤い戻りの動きを伴う売りサイクルも同様ですが、できるだけ多機能で、外国為替市場での取引と暗号通貨取引所でのスポット取引の両方に適したモデルにするため、前に言ったように省略します。

このモデルは、取引レバレッジが役割を果たさないように作られています。理論的な情報は十分に提供できたと思うので、実践的な部分をよりよく理解してもらえたと思います。私の実績を使って自分のモデルを作る人の助けになるかもしれません。


モデルのテスト

それでは、クウォート作成のさまざまなバリエーションからテストを始めてみましょう。クウォートの生成の違いを視覚的に示すために、まずモデルを以下の位置に設定してみましょう。

この設定で、ランダムな価格設定を実現します。この観点から、生成されたクウォートをいくつか見てみましょう。

ランダムなクウォートの生成

これは数学的モデルによるチャートで、デッキからランダムに取り出した2つのクウォートと、開始価格からの乖離が最も大きいもう1つの追加曲線を示しています。数理モデルでは、並列にシミュレーションされる金融商品の必要数を設定することが可能であり、その数は多くなるのは当然で、最も対称性が低く、最もボラティリティの高い金融商品が必ず存在することになります。しかし、これは確率的なプロセスの結果に過ぎないことをご理解いただきたいと思います。では、パラメータの位置を変えてみましょう。

すでにお分かりかもしれませんが、このステップでは、価格がスタート地点に戻る重力を作り出します。結果は以下のとおりです。


前の画像と現在の画像の違いに注目してください。ここではすでに、横這いの調整を望ましい方向に強制しています。曲線が開始価格に対して強く押されているのがわかります。同じことが、黒で着色された最もボラティリティの高いクウォートでも起こりました。どちらの例でも、各ツールについて正確に1000ステップをシミュレートしています。後日、この数字を増やしていじり、どのように機能するのか、どのパラメータが正確に影響を受けるのかを理解するつもりです。

人工売買をテストするためにどのようなパラメータを使用し、どのようにテストすべきかを決定する必要があります。早速、前回の記事で答えた質問を思い出してみましょう。もっと簡単でわかりやすい言い方をすれば、次のようになります。

  1. Rebuyを用いた取引システムの収益性の条件
  2. 理想的な取引商品を延々と取引しているとき、利益ラインは完全な直線になる傾向がありますか?
  3. 一定期間の取引で、商品の数が無限大に増えると、利益線は完全な直線になる傾向がありますか?

採算の状況を調べてみましょう。そのために、まずランダム価格設定を使って並行取引をおこない、その結果を見てみましょう。おおよそ以下のようになります。

エクイティ1

異なる生成で、採算の取れるカーブも採算の取れないカーブも得られました。まだ明らかではありませんが、ランダム価格設定の場合のRebuyが無駄であることの確認は、並行して取引される商品数の極端な増加かもしれません。その数を例えば100に増やし、同時に各ツールのシミュレーションステップ数を10,000に増やしたらどうなるか見てみましょう。

エクイティ2

ご覧のように、並行して取引される商品の数を増やしても、テスト期間を増やしても、目に見える効果はありませんでした。おそらく、これは前回の記事で数学的に証明された事実を裏付けるものでしょう。Rebuyアルゴリズムを含む取引システムは、完全にランダムな価格設定の場合、予測可能な瞬間がない場合、口座から資金が流出します。現段階では、1点目は理論的にも現実的にも証明されていると考えています。それでは2点目に移り、以下の設定をしてみましょう。

私のテストによって、リターンの重力は、どの読者にとっても効果を視覚的に評価するのに十分であることが判明しました。もちろん、パーセンテージを低く設定することもできますが、効果はそれほど顕著ではありません。シミュレーションのステップ数を元の1000ステップに戻しました。では、結果を見てみましょう。

エクイティ3

このグラフが、とりわけ前項の証明に追加されたものであると同時に、次の項の証明の出発点でもあることを理解するのは難しいことではないと思います。私の計画では次に、他のパラメータを変えずに、すべてのテストセグメントの継続時間を長くします。わかりやすくするために、各ツールのシミュレーションステップ数を1000から50,000まで50倍に増やしました。これはかなり大幅な増加ですが、何度もテストして結果を平均化することなく、この効果を視覚的に感じることができる唯一の方法です。結果を見てみましょう。

エクイティ4

見ての通り、曲線はより滑らかになり、直線に近づいています。これは、テスト時間が長くなるにつれて直線性係数(グラフの美しさ)を増加させるという第二の原則が、予測通りに機能していることを意味します。もちろん、これは選択した戦略が利益を生むことがわかっているという前提があってこそ成り立つことです。現段階では、第2項は理論的にも実践的にも証明されていると考えています。

次に、シミュレーションのステップ数を最初の1000ステップに戻し、逆に、並行して取引される商品の数を10倍に増やし、1000の値まで増やしてみましょう。凡例によれば、グラフの美しさが目に見えて増すはずです。それが本当かどうか見てみましょう。

エクイティ5

見ての通り、この仮説は確認されており、その効果は極めて顕著です。現段階では、3つの仮説はすべて理論的、実践的に証明されていると考えています。以下が結果です。

  1. どのような取引システムであれ、収益性を高めるための条件は、予測可能な瞬間の存在です。
  2. 取引またはバックテストの期間が長くなると、収益性の高い取引システムの曲線はより美しく、直線になります(自動ロットなし)+ [ポイント1が満たされている場合]。
  3. 1つの多通貨取引システムの取引通貨ペア数が増加するか、同時に取引されるシステム数が増加すると、取引システムの収益曲線はより美しく直線的になります+ [各システムのポイント1が満たされている場合]。

      EAのテスト

      自動取引と手動取引の両方でできるだけ効率的かつ安全に収益を得るために、Rebuyアルゴリズムを含む取引システムを正しく使用する方法を考え出しました。資金管理の計算や、取引システムを正しく組み合わせるためのその他のさまざまな状況については、もう少し後で別の記事を書くつもりです。

      Rebuyアルゴリズムが有効な戦略であることがはっきりわかるように、このセクションを追加しました。そのために、私は数学的モデルを繰り返すテストEAを作りましたが、唯一の違いは、上半分の波(売り取引サイクル)も処理することです。MetaTrader 5で同様の取引システムを作成する可能性を証明する設定をいくつか見つけました。そのうちのひとつを紹介します。

      例

      テストは2009年から2023年までの期間で、私たちの数学的モデルと同様の「28」通貨ペアすべてについて並行しておこなわれました。テストアルゴリズムの構築には、以前の記事で紹介したマルチボットテンプレートを使用しました。もちろん、利益曲線は理想的とは程遠く、このような取引のための初期預金は莫大であるべきですが、それにもかかわらず、この記事での私の仕事は、読者に既製のロボットを与えることではなく、数学的モデルに近いことを示すことです。読者が理解すべき最も重要なことは、ある種の修正を加えることで、このアルゴリズムはより安全で、より効率的で、より実行可能なものになるということです。改善の本質を自分で見つけることをお勧めします。普段は隠されているものを見せるのだから、公平だろうと思います。

      エキスパートアドバイザー(EA)とそのセット、そして数学的モデルそのものは、記事にファイルとして添付されています。必要に応じて、読者はその構造をより詳細に研究し、おそらくアイデアをさらに発展させることができます。実際、私の数学的モデルには、ここで説明した以上の使い道があります。バックテスト後、独自の出力パラメータセットにより、多くの重要な取引特性を計算します。もちろん、その機能は非常に限られていますが、証明と概算の見積もりには十分です。


      結論

      この記事では、分散投資の原則が機能すること、そしてそれを使うべきであることを証明する実践的な部分を終えました。最も重要なことは、前回の記事と合わせて、少なくとも取引の効率を高めることができる多くの重要なことを理論的にも実際的にも証明できたことです。さらに、作成されたEAの助けを借りて、10年以上にわたってRebuyアルゴリズムの生存可能性が証明されています。

      そう考えると、価格の波理論、つまり市場の横ばい度が確認されたことになります。さらに確認するために、この記事に注目されることをお勧めします。その中で著者は、私の記事で説明したのとまったく同じアルゴリズムに最大の注意を払っています。そこから、私のテストEAを改善したり、自分自身のテストEAを開発したりするために、これらのエフェクトをどのように使うかについて、さらなる知識を得ることができます。

      MetaQuotes Ltdによってロシア語から翻訳されました。
      元の記事: https://www.mql5.com/ru/articles/12579

      添付されたファイル |
      materials.zip (308.4 KB)
      時系列の周波数領域表現:パワースペクトル 時系列の周波数領域表現:パワースペクトル
      この記事では、周波数領域での時系列分析に関連する方法について説明します。予測モデルを構築する際に、時系列のパワースペクトルを調べることの有用性を強調します。この記事では、離散フーリエ変換(dft)を用いて時系列を周波数領域で分析することで得られる有用な視点のいくつかを説明します。
      データサイエンスと機械学習(第14回):コホネンマップを使って市場で自分の道を見つける データサイエンスと機械学習(第14回):コホネンマップを使って市場で自分の道を見つける
      複雑で変化し続ける市場をナビゲートする、最先端の取引アプローチをお探しですか。人工ニューラルネットワークの革新的な形態であるコホネンマップは、市場データの隠れたパターンやトレンドを発見するのに役立ちます。この記事では、コホネンマップがどのように機能するのか、そして、より賢く、より効果的な取引戦略を開発するために、どのように活用できるのかを探ります。経験豊富なトレーダーも、これから取引を始める人も、このエキサイティングな新しいアプローチを見逃す手はありません。
      MQL5を使用してカスタムドンチャンチャネル指標を作成する方法 MQL5を使用してカスタムドンチャンチャネル指標を作成する方法
      価格周辺のチャネルを視覚化するために使用できるテクニカルツールは数多くあります。これらのツールの1つが、ドンチャンチャネル指標です。この記事では、ドンチャンチャネル指標を作成する方法と、EAを使用してカスタム指標としてそれを取引する方法を学びます。
      リプレイシステムの開発—市場シミュレーション(第3回):設定の調整(I) リプレイシステムの開発—市場シミュレーション(第3回):設定の調整(I)
      まずは現状を明らかにすることから始めましょう。今やらなければ、すぐに問題になります。