Mt4 サポート終了。 - ページ 19

 
Alexey Viktorov:

独学で学んだ方からのアドバイスです。

mql5への移行を容易にするために、mql4のint型ピリオド変数ではなく、 enumENUM_TIMEFRAMESから 使用することが望ましいです。

自分なりに解決していく。主な点は、機能がうまく動作し、プログラムが遅くならないこと、両方の端末で使用できることです。あとは自分次第です。
 
Dmitry Fedoseev:

なぜ?


というのも、他の言語を通してこのようなものを実装する場合、ターミナルに入る方法がわからず苦労するのです。何でも開けられるし、μlで実装すれば、ボタンでボットも入れられる。

また、データベースを置き、さらにいくつかのソフトウェアを置き、すべてのものを1つのアイコンで持ち歩くことができます。
 
Alexander Puzanov:

あなたの悩みは、彼らなしでは解決できないと信じています。細部にまでこだわらないと、信じられないくらいです :)


スピン

さて、1ティックでH1、M5、D1上の新しいバーを決定しなければなりません。つまり、最初の1時間5分はExpert Advisorは眠っていて、新しい日の1時5分にだけ起きて何かをしなければならないのです。

それは3つのグローバル変数に なりますか?また、2-3-7のExpert Advisorで同じことをする必要がある場合はどうすればいいのでしょうか?グローバル変数の名前は、あと何種類作ればいいのでしょうか?

 
Реter Konow:
自分なりに課題を解決していく。主な内容 - 機能がうまく動作し、プログラムが遅くならないこと、両方の端末で使用できること。あとは自分次第です。

解決策の提示を先延ばしにしたことが、雄弁な答えになっていますね。なぜなら、OOPでは、何も考えずにシンプルかつ標準的に問題が解決されるからです。

 
Реter Konow:
自分なりに解決していく。主な点は、機能がうまく動作し、プログラムが遅くならないこと、両方の端末で使用できることです。あとは私の裁量にお任せください。
誰も何も押し付けてはいない。ただの意見でした。
 
Dmitry Fedoseev:

解決策の提示を先延ばしにしたことが、雄弁な答えになっていますね。なぜなら、OOPでは、何も考えずにシンプルかつ標準的に問題が解決されるからです。

私は貿易をやっているわけではないので、この作業は非標準です。邪魔をしないでください。
 
Alexander Puzanov:

あなたの悩みは、彼らなしでは解決できないと信じています。細部にまでこだわらないと信じられない :)

MT5でインジケーターを使うのは、MT4よりずっと複雑だ」という声をよく耳にします。

OOPアプローチにより、Expert Advisorがどのプラットフォームで実行されているかに興味がないように、この作業を統一することができます。

私はこのように整理しています。

インジケータ(例えばMA)が必要な場合、Expert AdvisorはCMA_IParams:public CIndicatorParamsIオブジェクトを宣言しなければならず、この中に必要なMAパラメータをすべて格納します。そして、GetIndicator()関数の中で、この構造体へのポインタをデータプロバイダに渡します。この関数は、CIndicator 仮想インターフェースへのポインタを返します。それだけです。このインターフェースは、呼び出されたインジケーターに関する必要なデータをすべて持っています。

それ以外のインジケータが必要な場合は、CIndicatorParamsIインターフェースの派生オブジェクトを宣言し、そこにインジケータのパラメータをすべて書き込んでデータプロバイダーに渡し、代わりに作成したインジケータへの ポインタが返されます。

新しいインディケータが必要な場合、そのポータブル・コードはデータ・プロバイダーに書き込まれ、その後再び、どのユーザーもデータ・プロバイダーにパラメータを渡して、新しいインディケータを要求することができます。

その結果、例えばExpert Advisorが「平均に戻る」ように動作する場合、パラメータオブジェクトを変更するだけで、例えばMAの代わりにプライスチャネルの真ん中を取るなど、この非常に平均を変更することが非常に簡単になります。

プロシージャルアプローチのファンにとっては、どのように整理されているのでしょうね。

 
George Merts:

MT5でインジケーターを使うのは、MT4よりずっと複雑だ」とよく言われます。

そこで、OOPアプローチにより、この作業を統一し、エキスパートアドバイザーが、どのプラットフォームで実行されているのかさえも気にしないようにすることができます。

私はこのように整理しています。

インジケータ(例えばMA)が必要な場合、Expert AdvisorはCMA_IParams:public CIndicatorParamsIオブジェクトを宣言しなければならず、この中に必要なMAのパラメータがすべて格納されています。そして、この構造体へのポインタは、GetIndicator()関数内でデータプロバイダに渡されなければならない。この関数は、CIndicator 仮想インターフェースへのポインタを返します。このインターフェースには、呼び出されたインジケーターに関するすべての必要なデータが含まれています。

それ以外のインジケータが必要な場合は、CIndicatorParamsIインターフェースの派生オブジェクトを宣言し、そこにインジケータのパラメータを全て書き込んでデータプロバイダーに渡すと、代わりに作成したインジケータへの ポインタが返されます。

新しいインディケータが必要な場合、そのポータブル・コードはデータ・プロバイダーに書き込まれ、その後再び、どのユーザーもデータ・プロバイダーにパラメータを渡して、新しいインディケータを要求することができます。

その結果、例えばExpert Advisorが「平均に戻る」ように動作する場合、パラメータオブジェクトを変更するだけで、例えばMAの代わりに価格チャネルの中央を取るなど、非常に簡単にこの平均を変更できるようになります。

プロシージャルアプローチのファンにとっては、どのように整理されているのでしょうね。

最初からやらないほうがいい。これが怖いのです。OOPをよく知らないOOP支持者の私でさえ、この文章のせいでつまずきました...。...何も理解できなかった。だから、その違いを一番低いレベルで説明するようにしているんです。
 

すみません、もう帰ります。注文が来た...もしよろしければ、続きは明日にしましょう。

 
Alexey Viktorov:

すみません、もう帰ります。注文が来た...もしよろしければ、続きは明日にしましょう。

西へ行けという命令ですか?