記事"MetaTraderプログラムを簡単かつ迅速に開発するためのライブラリ(第10部): MQL4との互換性 - ポジションオープンイベントと指値注文発動イベント"についてのディスカッション

 

新しい記事 MetaTraderプログラムを簡単かつ迅速に開発するためのライブラリ(第10部): MQL4との互換性 - ポジションオープンイベントと指値注文発動イベント はパブリッシュされました:

前の記事では、MetaTrader 5とMetaTrader 4プラットフォーム用のプログラムの開発を単純化するための大規模なクロスプラットフォームライブラリの作成を始めました。第9部では、MQL4を使用するためのライブラリクラスの改善を開始しました。ここでは、MQL4との完全な互換性を確保するために、ライブラリの改善を続けます。

テスト

適用された変更を確認しましょう。TestDoEasyPart10.mq4をコンパイルし、テスターで起動し、ポジションを開始および決済し、未決注文を出して、それらのいずれかが発動するまで待機します。ストップレベルとトレーリングがアクティブになっていることを確認します(ポジションと未決注文を変更します)。ライブラリがMQL4用に「確認」したすべてのイベントは、テスターの操作ログに表示されます。


テスターの操作ログを注意深く観察すると、ライブラリはまだ終値を確認できないことがわかります。BuyLimit#3の未決注文が発動すると、操作ログのエントリは[BuyLimit #3]が発動して、Buy #3ポジションにつながったことを通知します。これで、ライブラリは未決注文の発動イベントを確認し、ポジションの発信元の注文を認識できます。また、変更機能にはわずかな欠落が見られます。トレーリングで変更されたBuyStop #1未決注文のラベルが赤になります。ただし、ライブラリはすべての注文およびポジションの変更イベントを確認します。

作者: Artyom Trishkin

 

MT4にはバグがあり、←Backspace キーを押すと、HIDDENオブジェクトを含むすべてのオブジェクトが削除されます。

そのため、←Backspace キーを押すことで、簡単にインターフェイス全体を削除することができます。

一般的に、MT4のコードには、コントロールを 削除して再作成するためのレスポンスが欠けています。

 
Andrey Voytenko:

MT4では、←Backspace キーを押すと、HIDDENオブジェクト(あってはならないもの)を含むすべてが削除されるバグがあります。

そのため、←Backspaceを 押すことで、簡単にインターフェイス全体を削除することができます。

一般的に、MT4のコードには、コントロールを削除して再作成するためのレスポンスが欠けています。

これらはコントロールでは ありません。テストボタンです。グラフィカルなライブラリシェルが登場します。後ほど。警告をありがとう。
 

Trade.mqhはMT4用に作られました

Готовые советники из Мастера MQL5 работают в MetaTrader 4
Готовые советники из Мастера MQL5 работают в MetaTrader 4
  • www.mql5.com
Клиентские терминалы MetaTrader 4 и MetaTrader 5 предоставляют своим пользователям возможность легко создавать прототипы программ на языке MQL с помощью встроенного Мастера (MQL Wizard). Мастера обоих версий терминалов очень похожи, но все же имеют одно важное отличие. В Мастере MetaTrader 5 есть пункт генерации готовых советников, а в...
 
私はそれを
#ifdef __MQL5__
  #define __MQL5_NEW__
#else // __MQL5__
  #define __MQL4_NEW__
#endif // __MQL5__
にすることを提案する。そして、すべての条件をNew-variantに変更する。そうすれば、MT5ではライブラリのmt4-variantを、MT4ではライブラリのmt5-variantを実行できるようになる。
 
fxsaber:
私は聖書の一番最初にそうすることを提案する。そして、すべての条件をNew-variantに変更する。そうすれば、MT5でライブラリのmt4-variantを実行し、MT4でライブラリのmt5-variantを実行することが可能になる。
つまり、ライブラリのバリアントは 1 つだけです。
 
Artyom Trishkin:
ライブラリは1種類しかありません。

MT5でライブラリのMT4-logicを実行できるようにしたい。

 
fxsaber:

MT4のライブラリロジックをMT5で実行できるようにしたい。

ロジックはどちらのプラットフォームでも同じなので、この提案は理解できません。実装は若干異なります。
 
Artyom Trishkin:
ロジックはどちらのプラットフォームでも同じなので、その提案は理解できなかった。実装は若干異なります。

私はMT4Ordersをあなたのライブラリの前に接続しています。そして、私はMT4バリアントをあなたのライブラリに関与させたい。

これを解決するには2つの方法があります。

  1. ライブラリのすべてのソースで __MQLX__ を置き換える。つまり、半自動的にではあるが、ライブラリ自体を変更する。
  2. 上で示したようにマクロを作成する。そうすれば、MT4-logicをMT5に組み込むために、ライブラリを変更する必要はありません。


自分のライブラリをMT5だけで、しかも2つのロジックモードで比較してみるのも面白いと思います。


ZY また、あなたのライブラリをバーチャルで実行できるようにしたいです。そのためには、ライブラリのMT4スタイルの部分にアクセスする必要があります。

 
fxsaber:

私はMT4Ordersをあなたのライブラリの前に接続しています。そして、私はあなたのライブラリのMT4バリアントを使用したい。

これを解決するには2つの方法があります

  1. ライブラリのすべてのソースで __MQLX__ を置き換える。つまり、半自動的にではあるが、ライブラリ自体を変更する。
  2. 上で示したようにマクロを作成する。そうすれば、MT4-logicをMT5に組み込むために、ライブラリの何かを変更する必要はありません。


あなたのライブラリをMT5専用にして、2つのロジックモードで比較してみるのも面白いと思います。


ZY また、あなたのライブラリをバーチャルで実行できるようにしたいです。そのためには、ライブラリのMT4スタイルの部分にアクセスする必要があります。

私たちはこれについて議論することができます。ただし、内輪で。今のところ、ライブラリは同じ方法で開発される予定です。ライブラリは独立したユニットとして構想されました。MQL4スタイルでもMQL5スタイルでも矛盾しない同じロジックで、すべてが共通です。

ZY ライブラリのMQL4スタイルの部分が何を意味しているのか理解できません。そこに分離はない。ライブラリーの中で言及されている場所を示してくれ。

 
Artyom Trishkin:

話し合いはできる。ただし、内輪で。その間、ライブラリーは同じ方法で開発されるでしょう。ライブラリーは独立したユニットとして構想されました。MQL4スタイルでもMQL5スタイルでも矛盾しない同じロジックで、すべてが共通です。

MT4スタイルのロジックでMT5で動作するライブラリのバージョンをお送りしました。

ZY ライブラリのMQL4スタイルの部分が何を意味しているのか理解できません。そこには何の分離もありません。ライブラリのどこにそのような記述があるのか、示してください。

要は、クロスプラットフォームのライブラリは、MQL5スタイルのライブラリよりもMQL4スタイルのライブラリの部分の方が操作可能な確率が高いということです。そのため、クロスプラットフォームライブラリを使う場合は、そのMQL4形式のロジックをMT5で使うのがいい。MT5の方が信頼性が高いからです。


MT5では、MQL5スタイルのロジックはバグ検出に時間がかかると思いますが、MQL4スタイルのロジックは最低限のバグしかなく、致命的なバグはないと思います。