記事"MetaTraderプログラムを簡単かつ迅速に開発するためのライブラリ(第9部): MQL4との互換性 - データの準備"についてのディスカッション

 

新しい記事 MetaTraderプログラムを簡単かつ迅速に開発するためのライブラリ(第9部): MQL4との互換性 - データの準備 はパブリッシュされました:

前の記事では、MetaTrader 5とMetaTrader 4プラットフォーム用のプログラムの開発を単純化するための大規模なクロスプラットフォームライブラリの作成を始めました。第8部では、注文とポジションの変更イベントを追跡するためのクラスを実装しました。ここでは、MQL4と完全な互換性を備えさせることでライブラリを改善します。

ライブラリの改善

DoEasyライブラリのルートフォルダーで、新しいToMQL4.mqhインクルードファイルを作成します。ここでは、MQL4に必要なすべての定数と列挙について説明します。MQL4でコンパイルするためにはこのファイルをDefines.mqhファイルの冒頭にインクルードします

//+------------------------------------------------------------------+
//|                                                      Defines.mqh |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                             https://mql5.com/ja/users/artmedia70 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://mql5.com/ja/users/artmedia70"
//+------------------------------------------------------------------+
//| ファイルをインクルードする                                          |
//+------------------------------------------------------------------+
#ifdef __MQL4__      
#include "ToMQL4.mqh"
#endif               
//+------------------------------------------------------------------+

その後、MQL4ライブラリ全体が、コンパイル中にToMQL4.mqhファイルに書き込まれた内容を確認できるようになります。

NumPad Homeを押すか、一番上までスクロールして、エディターのツールボックスの[エラー]タブにあるエラーリストの最初に移動しましょう。最初のエラーをダブルクリックします。

作者: Artyom Trishkin

 

こんにちは。Expert Advisorの試用版が気に入りました。様々なインジケーターやその組み合わせからシグナルやフィルターを受け取ったり、ボタンを押すことで手動でコントロールしたりするカーネルとして使ってみたいと思っています。

このようなExpert Advisorの最初のものをすでにご覧になり、このフォーラムの隣のスレッドで私がそれに命を吹き込むのを助けてくださいました。

このトライアルEAで、プログラムでボタンを押す方法を教えていただけますか?

適切な関数はありますか?

または、どのようにするのがベストか教えてください。

 
Sergey Voytsekhovsky:

こんにちは。Expert Advisorの試用版が気に入りました。様々なインジケータやその組み合わせからシグナルやフィルタを受信したり、ボタンを押すことで手動で制御したりするカーネルとして使ってみたいと思います。

このようなExpert Advisorの最初のものをすでにご覧になり、このフォーラムの隣のスレッドで私がそれに命を吹き込むのを助けてくれました。

あなたのトライアルEAでプログラムでボタンを押す方法を教えていただけますか?

適切な関数はありますか?

または、どのようにするのがベストか教えてください。

記事で紹介されているExpert Advisorは、あくまでテストEAです。口座での取引に使用するには適していません。このExpert Advisorで作成されたボタンも、以降の記事で追加される新しいライブラリ機能を素早くテストするための普通のオブジェクトのセットに過ぎません。将来、ライブラリのグラフィカルなシェルを作成する際には、これらの単純なボタンは、ライブラリのグラフィカルな機能を使用して作成されたボタンに置き換えられます。

また、通常のトレード機能の 呼び出しであれば、何のために「ソフトウェアボタンを押す」必要があるのでしょうか?プログラムからすぐにトレード機能を呼び出せるのに、なぜソフトウェアボタンを押してトレード機能を呼び出すのでしょうか?これが「ソフトウェアボタン押し」になります。

 
Artyom Trishkin:

記事で紹介しているExpert Advisorは、あくまでもテスト用のExpert Advisorです。口座での取引に使用するには適していません。また、このExpert Advisorで作成されたボタンは、以降の各記事で追加される新しいライブラリ機能を素早くテストするための普通のオブジェクトのセットに過ぎません。将来、ライブラリのグラフィカルなシェルを作成する際には、これらの単純なボタンは、ライブラリのグラフィカルな機能を使用して作成されたボタンに置き換えられます。

また、通常のトレード機能の 呼び出しであれば、何のために「ソフトウェアボタンを押す」必要があるのでしょうか?プログラムから即座にトレード機能を呼び出せるのに、なぜソフトウェアボタンを押してトレード機能を呼び出すのでしょうか?これはボタンの「ソフトウェアクリック」になります。

ポイントは、トレード機能、クラス、データ、すべてがすでにリンクされているということです。わざわざこちら側を気にする必要はなく、ただボタンを押せばいいのです。そして、それを手に入れるための経験と時間が壊滅的に不足している。

このようなカーネルを使えば、取引実行の仕組みよりも、取引決定のアルゴリズムに時間を割くことができる。もちろん、意思決定の実行も重要だが、それは少し先延ばしにできる。

私はそうやって頭を整理した。

 
Sergey Voytsekhovsky:

重要なのは、トレード関数、クラス、データなど、すべてがすでにそこにリンクされているということだ。こちら側を心配する必要はなく、ただボタンをクリックするだけでいい。そして、私はそれを手に入れるための経験と時間が圧倒的に不足している。

このようなカーネルを使うことで、取引執行の仕組みよりも、取引意思決定のアルゴリズムにより多くの時間を割くことができる。もちろん、意思決定の実行も重要だが、それは少し先延ばしにできる。

私はそうしてきた。

徐々にライブラリに多くの機能が追加され、アルゴリズムを思い通りに操作するのがとても簡単になるでしょう。そしてこれこそが、このライブラリーが考案された目的なのだ。

現在、そのような機能はありませんが、MQL5の標準ライブラリに 含まれるCTradeトレーディング・クラスで テスト用Expert Advisorがどのように動作するかを確認し、必要なトレーディング関数を呼び出すために同様の構造を記述することができます。また、MQL4用のテスター取引関数の呼び出しもあります(テストEA内)。

Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека MQL5 написана на языке MQL5 и предназначена для облегчения написания программ (индикаторов, скриптов, экспертов) конечным пользователям. Библиотека обеспечивает удобный доступ к большинству внутренних функций MQL5.
 
Artyom Trishkin:

徐々にライブラリに多くの機能が追加され、アルゴリズムを思い通りに作業するのが非常に簡単になるだろう。そしてこれこそが、このライブラリーが設計された目的なのだ。

現在、そのような機能はありませんが、MQL5の標準ライブラリに 含まれるCTradeトレーディングクラスを使って、テスト用Expert Advisorがどのように動作するかを確認し、必要なトレーディング関数を呼び出すために同様の構造を記述することができます。そこに(テストEAに)MQL4用のテスター取引関数の呼び出しがあります。

ありがとうございます。

 
Sergey Voytsekhovsky:

こんにちは。Expert Advisorの試用版が気に入りました。様々なインジケーターやその組み合わせからシグナルやフィルターを受け取ったり、ボタンを押すことで手動でコントロールしたりするカーネルとして使ってみたいと思っています。

このようなExpert Advisorの最初のものをすでにご覧になり、このフォーラムの隣のスレッドで私がそれに命を吹き込むのを助けてくれました。

あなたのトライアルEAでプログラムでボタンを押す方法を教えていただけますか?

適切な関数はありますか?

または、どのようにするのがベストか教えてください。

こんにちは!

セルゲイ、君も同じような状況にあるようだから、応援するよ。

確かに記事は素晴らしいですが、書かれたコードをどう 使うかについての情報はほとんどありません。一般的に言って、ライブラリは実装を隠し、実用的なタスクのための明確なインターフェイスを提供するために価値があります。https://docs.mql4.com/strings/stringsubstr 関数のヘルプには、その内部については一言も書かれていない。入力されるパラメーター、その処理結果、そして例についての説明。これが私が見たいものだ。

そう、アルテム、あなたは間違いなく才能あるプログラマーだ。しかし、アプリケーション・エンジニアはできるだけ早く別のアルゴリズムを開発する必要があるのであって、啓蒙を求めて何百行もの他人のコードに何時間も費やす必要はない。ここまでの一連の記事は、より理論的なものである。

これは、このトピックに関する私の最初の投稿ではない)。決してこの連載の良さを軽視したいわけではない。それどころか、私はArtemさんがフォーラムのメンバーの要望を考慮し、良い映画が引用されるように、書かれたライブラリがEAで熱心に使われるようになることを願っています。

StringSubstr - String Functions - MQL4 Reference
StringSubstr - String Functions - MQL4 Reference
  • docs.mql4.com
StringSubstr - String Functions - MQL4 Reference
 
Nikolai Karetnikov:

こんにちは!

セルゲイ、僕は君を応援するよ。

確かに記事は素晴らしいですが、書かれたコードをどう 使うかについての情報はほとんどありません。一般的に言って、ライブラリは実装を隠し、実用的なタスクのための明確なインターフェイスを提供するために価値があります。https://docs.mql4.com/strings/stringsubstr 関数のヘルプには、その内部については一言も書かれていない。入力されるパラメーター、その処理結果、そして例についての説明。これが私が見たいものだ。

そう、アルテム、あなたは間違いなく才能あるプログラマーだ。しかし、アプリケーション・エンジニアは、悟りを求めて何百行もの他人のコードに何時間も費やすのではなく、実用的な課題を解決する必要があるのだ。これまでの一連の記事は、より理論的なものだ。

これはこのトピックに関する最初の投稿ではない)。決してこの連載の良さを軽視したいわけではない。それどころか、私はArtemさんがフォーラムのメンバーの要望を考慮し、良い映画が引用されるように、書かれたライブラリがEAで熱心に使われるようになることを願っています。

ゴールは、ライブラリの作成開始から完成まで、読者を導くことです。
この記事は、役に立つ実用的な目的を持ちながら、より教育的な性質を持っています。コードのデザインは理解しやすく、ひねりや「かっこよさ」のために文書化されていない機能を使うことはない。しかし、否定できないプラス面もある。ターミナルのベータ版がいくつリリースされ、どれだけの人がすでにコードが動かなくなったと言ったことか、そしてライブラリは、何かが突然動かなくなったからといって強制的に修正されることなく、ビルドからビルドへと生き続けている......。

ライブラリは現在、CEngineクラスという1つのエントリーポイントを持っており(2つ目のエントリーポイントができる予定ですが、ずっと後のことです)、EAのこのクラスのオブジェクトは、すべての機能へのフルアクセスを提供します。

そしてさらに、例えばこのようなオブジェクトを作ることは難しくない:ドットの後にエディタが表示するウィンドウには、ライブラリの使用可能なメソッドがすべて表示されます。ほとんどのメソッドには意味のある名前がついており、少し練習すれば使えるようになります。すべてのメソッドは記事で説明されています。各記事には、可能性のほんの一部を示すテストプログラムの例があります。

参考資料のない数多くの記事から、示されているメソッドとその応用を探すのは難しい作業だ......。しかし、記事のサイクルは、読者が私と一緒にそれを経験することで、彼の頭の中に何かが蓄積されるようにするためのサイクルなのだ :)そして、その目的は教育的なものであることを忘れないでほしい。

参考資料もある。しかし、最後の最後には、ライブラリーが作られる。もちろん例もある。

それまでは、実践的な質問をしてくれて構わない。コードの一部を見せれば、ヒントをあげよう。私はここにいるし、どこにも行かない。始めたことを放棄するのは私のルールにはない。

 
Artyom Trishkin:

その目的は、読者をライブラリーの始まりから完成まで導くことである。
この記事は、役に立つ実用的な目的を持ちながら、より教育的な性質を持っています。コードのデザインは理解しやすく、ひねりや「かっこよさ」のために文書化されていない機能を使うことはない。しかし、否定できないプラス面もある。ターミナルのベータ版がどれだけリリースされ、どれだけの人がすでにコードが動かなくなったと言ったか、そしてライブラリはビルドからビルドへと、何かが突然動かなくなったからといって強制的に修正されることなく生き続けている......。

ライブラリは現在、CEngineクラスという1つのエントリーポイントを持っており(2つ目のエントリーポイントができる予定ですが、ずっと後のことです)、EAのこのクラスのオブジェクトは、すべての機能へのフルアクセスを提供します。

そしてさらに、例えばこのようなオブジェクトを作ることは難しくない:ドットの後にエディタが表示するウィンドウには、ライブラリの使用可能なメソッドがすべて表示されます。ほとんどのメソッドには意味のある名前がついており、少し練習すれば使えるようになります。すべてのメソッドは記事で説明されています。各記事には、可能性のほんの一部を示すテストプログラムの例が含まれています。

参考資料のない数多くの記事から、示されているメソッドとその応用を探すのは難しい作業だ......。しかし、記事のサイクルは、読者が私と一緒にそれを経験することで、彼の頭の中に何かが蓄積されるようにするためのサイクルなのだ :)そしてその目的は、教育であることを忘れないでほしい。

参考資料もある。しかし、最後の最後には、ライブラリーが作られる。もちろん、実例も。

その間に、実践的な質問をすることができます。コードの一部を見せれば、ヒントをあげよう。私はここにいるし、どこにも行かない。始めたことを放棄するのは私のルールにはない。

あなたの意図がベストであることは理解していますし、おそらく自由な時間がたくさんあるのでしょう)。

MakingSimple"[ MetaTrader用のプログラムを簡単かつ迅速に作成するためのライブラリ]シリーズのあなたの記事を見ただけで、10-15分読めば有用なコードを使えるようになると思いました。私は、https://www.mql5.com/ja/articles/272 の ような古典的な記事を期待していました そこでは、ロジックは隠されていて、インターフェイスはオープンです:なぜそれが必要なのか」、「どうやってそれを使うのか」、そして「例」。目的はトレーニングであり、RAD(迅速な開発)ではないことがわかった。

あなたがこのようなものを書くのを楽しみにしています!))

Трассировка, отладка и структурный анализ кода
Трассировка, отладка и структурный анализ кода
  • www.mql5.com
В данной статье речь пойдет про один из способов создания стека вызовов на этапе выполнения. Возможности, которые описаны в статье следующие: Составление структуры используемых классов, функций, файлов. Создание стека вызова, с сохранением всех прошлых стеков. Их последовательности вызовов. Просматривать состояние Watch-параметров на этапе...
 
Nikolai Karetnikov:

あなたの意図は最高だし、おそらく自由な時間がたくさんあるのだろう。)

MakingSimple"[ MetaTrader用のプログラムを簡単かつ迅速に作成するためのライブラリ]シリーズのあなたの記事を見ました。私は、https://www.mql5.com/ja/articles/272 の ような古典的な記事を期待していました。そこでは、ロジックは隠され、インターフェイスはオープンで、質問に答えてくれます:なぜそれが必要なのか」、「どうやってそれを使うのか」、そして「例」。 目的はトレーニングであり、RAD(迅速な開発)ではないことがわかった。

さて、あなたがこのようなものを書くのを楽しみにしています!))

ゴールは、学習+迅速な開発 だ。迅速な開発については、読むのが億劫で、まだ例題のある参考資料がない場合にのみ、実践的な応用問題を質問する価値があります。

タイトルはむしろ「簡単にしてください」と訳します。(文脈がなければ、どのようにでも訳せます)。