記事"トレーディングモデルに基づくマルチエキスパートアドバイザーの作成"についてのディスカッション

 

新しい記事 トレーディングモデルに基づくマルチエキスパートアドバイザーの作成 はパブリッシュされました:

MQL5にてオブジェクト指向のアプローチを使用すると、マルチ通貨・マルチシステム・マルチタイムフレームのエキスパートアドバイザーの作成を大幅に単純化することができます。全てのタイムフレーム、全ての金融商品において、いくつものトレーディング戦略に基づいた取引をあなたのEAが行うことを想像してみてください。さらに、EAはテスターにて簡単にテストすることができ、すべての戦略において、稼働する資産管理システムがいくつもあります。

作者: Vasiliy Sokolov

 

ヴァシリー、私は正直、もっといいものを期待していた。この作品では、読者を困惑させることに成功している。

しかし、もっとシンプルに「MT5ターミナルでMQL4ロジックを使ってExpert Advisorをトレードする方法」と呼ぶこともできたはずだ。そして、これこそ注目すべき点である。
この基本に焦点を当てれば、もっとコンパクトでわかりやすいものになったはずです。

というわけで、まずはダイナミック・リストとその応用例。次に仮想オーダーのテーブル。

MQL4のすべてのロジックは、MQL5では2つのメソッドの 機能を使用して解決されます!
1.端末の履歴からストップロスとテイクプロフィットチケットの復元
2.それらのいずれかがトリガーされたとき、またはメイン・オダーが削除されたときに、それらのさらなる制御。

そして、これら2つのGENERAL 関数を説明した後、動的配列と「models-mql4-experts」の構築に移る。

保留注文は成行注文より複雑ではないが、実際の損切り注文と利益確定注文の発注を遅らせるだけである。

どういうわけか、読者には無駄なファイル<Time.mqh>が 読み込まれ、その機能はあまり美しくない。

そして、注文カウント、ロットコントロールのための関数。

どうやら、専門家と仕事をするための知識をすべて記事の中に詰め込もうとして、記事の目的そのものをこのような記事の中に埋没させてしまったようだ。

さて、そして与えられたモデルについてですが、ストップロスやテイクプロフィットをどのように注文に使うのか理解できません。IACDでもボリンジャーでも、私はストップの使用を見つけることができませんでした。

一般的に、私は記事を読んで楽しめませんでした。明るいアイデアを埋葬する不必要な重みがたくさんある。

Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
  • www.mql5.com
Основы языка / Типы данных / Объект динамического массива - Документация по MQL5
 

そう、口座履歴から(あるいは自分のファイルから)取引リストを復元しなければ、それはテスターのおもちゃであることが判明した。

 
udmurt2:

未決注文の 仕事について書かれていないのは非常に残念です。

未決注文での作業はありますが、それは記事の一番最後に書かれています。(おそらく読む忍耐がなかったのでしょう)。

全般的に、この記事は本当にわかりにくい。情報の見せ方という点では、もっとうまく構成できたはずだ。

 

to:Udmurt2

私の記事のどこにMQL4エキスパートのロジックがあると思いますか?あなたが書かれたレビューからは、この資料に対する完全な理解不足という印象を受けます。多くの点で、それはもちろん私の責任であり、おそらく本当にもっとうまく構成すべきだったのでしょう。

--------------------------------

記事の構成を改善するための具体的な提案はありますか?

同感です。多くのことが「舞台裏」に残されていました。このバージョンは1.0だと考えてください。以下が導入予定です:

1.データファイルに基づくデータのシリアライズ;

2.注文履歴によるモデル取引履歴の再構築;

3.未決済注文に基づくモデルの完全な記述 4;

4. 相互にカウントされる複雑な注文システムを使った取引モデルの記述;

5.各モデルの効率の動的制御(モデル・リストから非効率なモデルを削除)。

6.取引モデルからの外部機能の排除(資本管理機能など)。

7.マルチスレッドのサポート(MT5内部並列化のおかげで、現在は部分的に使用されています)。

...

おわかりのように、まだ検討する必要のある材料は非常に包括的であるため、別の記事、いわば後編を書く時期に来ている。この記事はゴムの記事ではない。いずれにせよ、私が自分に課した課題は解決したと思っている。そして、ここでUdmurt2は特に間違っている。提案されたアプローチの基本はダイナミック・リストであり、(なぜか彼にはそう見えたようだが)未決注文とはまったく連動していない。だからこそ、これほど注目されているのだ。大体、未決注文を使わなくても解決できない戦略はないだろう。しかし、私が提案したアプローチは、同じストップとテイクアウトをシミュレートするペンディング・オーダーの使用に何の制限も課さない。しかし、この場合、追加のチェックとプログラム・サブシステムが必要であり、特に、Trade()イベントを記述する構造があれば非常に便利である。そして、そのような構造は存在しませんが(MQL5が発展途上であるため)、存在しない可能性のために制御システムを書くのは完全な狂気の沙汰だと考えています。

ところで、最も単純なケースでは、数時間でファイルからトレード・リストアを書くことができます。というのも、私はこの解決策をただ急ごしらえで書いたものではなく、よく考えられたものにしたいと考えているからだ。いずれにせよ、後編で解決すべき興味深い問題のひとつになるだろう。

MQL5は現在開発中である。MQL5だけでなく、提案されたアプローチも時間とともに発展し、機会を得ていくだろう。人によっては、現段階ではテスターのおもちゃのように見えるかもしれない。この場合、MetaTrader 5もデモ口座用のおもちゃだと言える。しかし、MT5がデファクトスタンダードとなり、私が提案したアプローチが多通貨/多タイムフレーム/多システム取引の強力なソリューションとなる日はそう遠くないでしょう。今、重要なことは、基本を理解することです。この基本とは、私がこの記事で説明したものである。この基本を理解すれば、ペンディング・オーダーやファイルにトレードを記憶させることの利点をすべて使って、独自のトレーディング・モデルを簡単に書くことができる。

 
それと、もうひとつ。私は現役のMTSトレーダーなので、当初は私自身のために提案されたトレーディング・エンジンを書きました。このようなエンジンが必要だったのは、将来、実際の口座での 作業に使えるようにするためです。現在、実際の口座はなく、MT5への本格的な移行はまだ先です。したがって、リアル口座での取引に必要な機能を、提案したモデルの中で考え抜き、実装する時間はまだある。いずれにせよ、高度なカプセル化と柔軟なメモリ管理により、高いスケーラビリティと汎用性が実現されていると思います。例えば、リストから各取引モデルの効率制御システム、各取引モデルの個別資本設定システム(すでに実装済み)、リストに取引モデルを条件付きで追加/削除するシステム(そのモデルが効率的または非効率的である特定の形式化された特性を市場が持っている場合、そのモデルは動的にリストに追加されるか、リストから削除される)。さらに、このアルゴリズムは数百のモデルを同時に処理することができます(将来的には、標準的な手段によるマルチスレッド化を導入する予定です)。このような柔軟性と制御性を持つアプローチが他にあるでしょうか?
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете - Документация по MQL5
 
C-4:

私の記事のどこにMQL4エキスパートのロジックがあると思いますか?

冒頭を開いて読んでほしい:

では、私たちが解決しなければならない主な課題は以下の通りです:

  1. エキスパート・アドバイザーは、一度に複数の取引システムに基づいて取引する必要があります。同時に、1つの取引システムでも複数の取引システムでも同じように簡単に取引できなければなりません;
  2. Expert Advisorに含まれるすべての取引システムは、互いに競合してはならない。各取引システムは、集約されたポジションへの寄与分のみを処理し、その注文のみを処理しなければならない;
  3. どの取引システムも、商品の1つのタイムフレーム上でも、すべてのタイムフレーム上でも、一度に等しく取引しやすいものでなければならない。
  4. 集約されたシステムのいずれもが、1つの取引商品上でも、一度にすべての利用可能な商品上でも、等しく取引しやすくなければならない。

これらすべての点によって、MT4ターミナルのロジックは明確 かつ絶対的に 特定されます。

1. Magikとネットポジションがないおかげで、複数のExpert Advisorを同時に導くことができる。
2. 同じMagikとネットポジションがないおかげで、Expert同士が衝突しない。
3.どのようなタイムフレームでも取引可能
4.あらゆる商品で取引可能。

質問:MT4ターミナルにない新しい機能は何ですか?

MQL4をベースに推論を構築し、その実装を開発することができると上に書きました。

記事の構成を改善するための具体的な提案はありますか?

私なら、magik-ticketによるストップの計算から、取引Expert Advisor-mt4
のモデル作成、そして複数のExpert Advisorをコントロールする方法へと、段階を追って構築します。(リスト/非リストはその時の気分で)

このバージョンを1.0とする。
2.注文履歴によるモデル取引の履歴の再構築;
3.保留注文に基づくモデルの完全な説明;
4. 相互にカウントされる複雑な注文システムを使った取引モデルの説明;

2-4は、この記事ですぐに解決すべき内容である。それ以外はすべて邪道であり、プログラマーの裁量に任せるか、第2回の記事で解決すべき内容である。

そして、ここでUdmurt2は特に間違っている。提案されている手法の基本はダイナミック・リストであり、未決注文を扱うものではまったくない(彼にはなぜかそう見えたようだが)。だからこそ、これほど注目されているのだ。
あなたが何を言おうが、この方法(あなたの最初のタスクとこの記事の目的)の基本はリストではなく、MT4のExpert AdvisorsのロジックでMT5のネットポジションを広げ、magik-ticketを介してそのストップを処理することです。

ダイナミックリストは、その制御と会計の方法の1つに過ぎません。

このような柔軟性と制御性を持つ他のアプローチを教えてください。

MT4の専門家であればどなたでも :)))

 

C-4:

現段階ではテスターのおもちゃとしか思えない人もいるかもしれない。この場合、MetaTrader 5はデモ口座 用のおもちゃでもあると言えます。

そうです。)

しかし、MTは完成しつつある。そして、この記事で提案されているコードは、実際の口座用に書かれたものかもしれない。


ところで、Championship Expert Advisorはどうですか?リブートに悩まされていますか?

 

ワシーリー、君は働きすぎだ。時々、初心に戻ってすべてをやり直す必要があります。リニアデバイスによるMT4ターミナル操作のマザーロジックに関する基本クラスを作り直すことです。そうすれば、多くのことが明確になるでしょう。
そうでなければ、私は2番目の記事を書かなければならないでしょう :)

 
komposter:

そうだね。)

しかし、MTは現在最終調整中である。そして、この記事で提案されているコードは、本番を想定して即座に書かれたものかもしれない。

ところで、チャンピオンシップEAはどうですか?リブートで苦しみましたか?


苦しんではいるが、大きくはない。もちろん、初期化/非初期化イベントハンドラを内蔵していた。 しかし、1つ考慮していなかったことがある。それは、初期化と非初期化がオフの時間帯、たとえば土曜日に行われる可能性があることだ。これはほんの数行のコードで解決できるのだが、このような陰湿な組み合わせに気づかなかったため(まあ、すべてを考慮することはできないのだが)、どこかで多くのことが失われてしまった。

近いうちに簡単なデータ・シリアライゼーションを書いて、記事に挿入しようと思う(原則2日かかる)。それを使えば、リアルタイムの口座(デモとリアル)で作業するための本格的な製品になるでしょう。つまり、これはテスターのためのおもちゃだということですね。実際の口座で確実に使用するためのメンテナンス・コードは5-6%しか欠けていません。

抽象的な取引モデルがあるとしましょう。それは保留中の注文(ストップ、テイクアウト、エントリー・ポイント)のみを使用する。ブローカーの目から見えないように、すべてのエントリーポイントをバーチャルにする。つ目のオプションは、信頼性を高めるために、ストップとエントリーポイントをすべて保留注文にすることです。各モデルに2種類の仮想化(ペンディングと仮想)があるのは興味深い。つまり、次のようになる。switchvirtual_orders=true; - すると、すべての注文はブローカーの目から隠された仮想注文になる。一番いいのは、モデルから特別なサポートが必要なく、すべてがエンジンレベルで実装されることだ。モデルは、エントリー・ポイントの注文タイプを指定するだけでよく、ストップとテイクのタイプは、virtual_ordersスイッチに応じて、独立して選択されます。

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 

to:ウドムルト

私が何をすべきで、何をすべきでなかったかを私に言わないでほしい。私はあなたの利益に奉仕しているわけでも、あなたのために働いているわけでもありません。

あなたは自分の発言の本質すら完全に理解していないのですから、私たちの会話はナンセンスだと思っています。あなたが本当にMQL4を理解し、例えば500種類のトレーディングモデルを同時に取引するトレーディングエキスパートを書いていることを私に証明してください。例として、5つのストラテジー、20の商品、5つのタイムフレームを取り上げましょう。あなたのExpert Advisorが、少なくともテスターの中で、それらに対して明らかに機能するようになれば、その時初めて、あなたの言っている過熱したナンセンスは、本当のナンセンスではなく、知的な人の有益な発言であると認めるでしょう。このエキスパートのソースコードなしで私とコミュニケーションしようとしないでください。