記事"クロスプラットフォームEA:序章"についてのディスカッション

 

新しい記事 クロスプラットフォームEA:序章 はパブリッシュされました:

この記事では、クロスプラットフォームのEAを容易に開発できるメソッドを詳述します。提案メソッドは、両方のバージョンによって共有関数を統合し、互換性のない関数の派生クラスを分割します。

先に示した2つのソースファイルが同じであることに注意してください。クロスプラットフォームの互換性のある単一のソースファイルを持つことは不可能です。これは、ソースファイルがコンパイルされているかどうかによるものです:

  • MQ4ソースファイルをコンパイル、EX4ファイルの生成
  • MQ5ソースファイルをコンパイルすると、EX5ファイルになります。

両方のプラットフォーム上で動作する単一のソースファイルを持つことができない場合があります。しかし、次の図に示されているように、単一のヘッダファイルを参照するために、両方のソースファイルを有することが可能です。

ソースとヘッダ・ファイル

作者: Enrico Lambino

 

素晴らしい記事だ。読みやすく、すべてのアイデアが明確で、自分のアイデアさえも登場する...。

 
考え方(クロスプラットフォーム)は正しい。しかし、ここでは特定のメタ言語を作成し、それを使ってクロスプラットフォームのExpert Advisorを書くことが提案されている。MQL4ですべてを書くことができるため、このソリューションではメタ言語は不必要に思えます。また、Expert AdvisorsはMT4だけでなく、MT5でも動作する必要があります。kodobaseにはそのようなソリューションがあります。特に、このソリューションでは、1つのencludnikを追加することで、古いMQ4コードをMT5で起動することができます。一般的に、メタ言語を作成することは、あまり普遍的ではなく、余計なことのようにさえ思える。しかし、このトピックに関する連載が続く のは興味深い。願わくば、シソフ労働が出てこないことを。

イントロダクションそのものについてはStringConcatenateを使った例で私は切れてしまった。MT4/5でこの関数を使う人は理解に苦しむ。面倒なだけでなく、よくわからない。文字列の連結は、どちらのプラットフォームでも常に + 演算子で実現されてきた。つまり、文字列に対してStringConcatenateを使用することは、数値の合計を得るために「NumberSummary」関数を使用することに匹敵する。要するに不合理なのだ。

私の理解が正しければ、これは記事の翻訳である。だから、著者に連絡を取るには原文に書くべきだ。英語版?
 
https://www.mql5.com/ru/code/16006
MT4Orders
MT4Orders
  • 投票: 11
  • 2016.08.05
  • fxsaber
  • www.mql5.com
Параллельное использование ордерных систем MetaTrader 4 и MetaTrader 5.
 
fxsaber:
考え方(クロスプラットフォーム)は正しい。しかし、ここでは特定のメタ言語を作成し、それを使ってクロスプラットフォームのExpert Advisorを書くことが提案されている。MQL4ですべてを書くことができるため、このソリューションではメタ言語は余計なようだ。また、MT4だけでなくMT5でもEAを実行できる。
私の理解が正しければ、これは記事の翻訳である。したがって、著者に連絡するには、どうやら原文に書き込む必要があるようだ。英語版ですか?
はい
 
失礼ですが、これは一体何のためにあるのでしょうか?
 
Yuriy Asaulenko:
悪いけど、何のために?
移植はしなくていいんですね。
 
クロスプラットフォームのExpert Advisorは、クロスプラットフォームのトレーディングエンジンをベースとする場合にのみ作成可能であり、トレーディングAPIとデータアクセスはOOバージョンに置き換えられ、その内部実装はマクロ#ifdef __MQL5__で定義される。以上を考慮すると、著者の記事は少なくとも素朴である。もちろん、著者が#ifdef __MQL5__マクロを発見したことは素晴らしいが、それだけでは十分ではない。すべてのステップで#ifdefを使ったエンジンを書く必要があり、これははるかに複雑である。