Например такой код
for( Ord =0; Ord <OrdersTotal(); Ord++){ OrderSelect( Ord, SELECT_BY_POS); if(Symbol()==OrderSymbol()&&StringFind(OrderComment(),"MA-Price")!=-1){
IsOrdFound =true; break; }}
А хотелось бы фунцию для установки фильтра по символу
OrderSelectSymbol(Symbol());for( Ord =0; Ord <OrdersTotal(); Ord++){ OrderSelect( Ord, SELECT_BY_POS); if(StringFind(OrderComment(),"My comment")!=-1){
IsOrdFound =true; break; }}
Или если теперь будет объектный язык, то что то типа такого варианта:
OpenedOrdGroup ordGroup =new OpenedOrdGroup(Symbol());for( ord =0; ord < ordGroup. count; ord++){ if( findSubstr( ordGroup. orders[ ord]. comment,"My comment")!=-1){
isOrdFound =true; break; }}
これで、特定のシンボルのみのポジションにフィルターをかけることができなくなりました。つまり、すべての注文を通さなければならないのです。
このため、EAの動作が遅くなり、EAが動作しているチャートが多い場合、動作が遅くなり、CPUに負荷がかかることがあります。
ただし、カスタム・インジケータは純粋に計算タスクのみを実行し、ウィンドウやグラフィカル・オブジェクトには一切アクセスできないことを特筆しておきます。
そして...このような「計算機」のインジケータを、すべてのウィンドウの外側で動かすことは可能なのでしょうか?(例えばIsExpertEnabledとかを監視して誰に伝えるか)。
描けるのか?ループできるのか?
EA、スクリプトの呼び出し/アンロード、デフォルトおよびカスタムインジケータの設定/解除は可能ですか?
そして...このような「計算機」のインジケータは、すべてのウィンドウズ以外で実行できるのでしょうか?(例: IsExpertEnabledなどを監視し、必要な人に報告する)
描けるのか?ループできるのか?
EA、スクリプトの呼び出し/解除、デフォルトおよびカスタムインジケータの設定/解除は可能ですか?
これらの質問に対しては、「いいえ、残念ながら。
チャートウィンドウを別に用意し、そこに「計算する」Expert Advisorを取り付ける必要があるのです。Expert Advisorはタイマーで動作させることができるので、ループさせる必要はありません。
ありがとうございます、少しすっきりしました。
ウィンドウに縛られずに何かを実行する方法はないのでしょうか?(一般的なニーズに対応するため)。
そして、その「何か」から「別の何か」を呼び出す方法はないのでしょうか?(タイマーの専門家など)
ありがとうございます、少しすっきりしました。
ウィンドウに縛られずに何かを実行する方法はないのでしょうか?(一般的なニーズに対応するため)。
そして、その「何か」から「別の何か」を呼び出す方法はないのでしょうか?(タイマーの専門家など)。
窓に紐付けされていないものはないでしょう。
まだ答えられない。
任意のチャートにカスタムイベントを送信することができます。そのチャートにぶら下がっているExpert Advisorは、入ってくるイベントを処理することができます。
ウィンドウに紐付けされていないものは、何も起きない
まだ答えられない。
任意のチャートにカスタムイベントを送信することができます。Expert Advisorは、そのチャートにぶら下がって、入ってくるイベントを処理することができます。
返信ありがとうございました。
しかし、そのチャートにExpert Advisorが必要です。これらのEAは常に同期しているわけではありません(特別な機能がない限り、決して)。
私の場合は、カスタム(アプリケーション)サービスプログラムの話です。例えば、テクニカル分析、ローソク足分析、カスタムポジションプロセッシングアルゴリズムなどのタスクがあります。例えば、(システムメニューの)ボタンを押すと、現在の画面はローソク足分析が表示されます。もう一つを押すと、現在のウィンドウのSLとTPのプリファレンスを設定するウィンドウがポップアップ表示されました。3番目のボタンを押します - 設定と現在のブローカー設定に従って、すべてのポジションでストップが開かれます(それらが利用できない場合、ニュースの前に良い)。もうひとつのボタン-最小距離のコリドーが描かれた...。といった具合に。そして、利用可能な資金、さまざまな金融商品による取引の成功確率、その好み、優先順位、積分分析などによって、すべてが連動しているのです。
この作業は全体として、1つのExpert Advisorをすべてのウィンドウで何枚もコピーする必要はありません。そのようなプログラムは、「一人はみんなのために、私たちは代償を払う」かもしれません。そうかもしれませんね。今のところ、私はMT5の能力を知らないだけです。
ウィンドウに紐付けされていないものは、何も起きない
まだ答えられない。
任意のチャートにカスタムイベントを送信することができます。そのチャートにぶら下がっているExpert Advisorは、入ってくるイベントを処理することができます。
1. でも残念。 // アンテザー・プログについて。
実装の面で合理的な(イマドキの)安直な妥協案として、「ヌル」チャートのようなものを作るべきかもしれません。
電卓をかけることができる?また、この時点でMTの継承を疑っているので、できればこのようなグラフを無制限に作ってほしい。
というのも、ここではMT4の制約「1チャート1Expert Advisor」の継承が疑われるからです...。:)
2.イベントについて カスタムイベント......いいですね。ありがとうございました。:)
テトリスにOnTimerのイベントがついたり、全体的にイベントドリブンな起動の構成が見えてきてよかったです
の機能を持つ。 そしてここでは、よりゆっくりと、より詳細に説明したいと思います :)
その他、ユーザーのアプリケーションに送信される「標準」イベント(プラットフォームイベント)はどのように計画されているのでしょうか?
例えば、OnPositionIsClosed(int ticket)のようなものが欲しい。
ストップ高で決済されたばかりの注文を検索して、オープン注文。 4でもそうだと思います。
標準の Init()-Deinit()-Start() の他に、OrderStopped() を追加するのは非常に簡単で、いずれにせよ、ターミナルが追跡します。
端末は現在も注文の締め切りを監視し、状況の変化をウィンドウに表示しています。さて、なぜユーザープログラムは
を知らせる? そして、ユーザーから感謝されることになる...。- 保証します。:)
理想を言えば、(MT5で)プラットフォーム全体のイベントマネージャーがあれば最高です。
を使用して、イベントに関するメッセージを購読し、また、イベントに関するメッセージを開始します。
は、すべてのサブスクライブされたアプリケーションにブロードキャストされる一般目的のイベントを開始する。
開発者の皆様へ
MODE_HISTORYを表示するときに、注文のオプションを追加するだけです。たとえば、どのように注文を終了するかなどです。
- ストップロス
-TakeProfit(テイクプロフィット)。
- 市場別など
MQ4プラットフォームを使っている銀行の中には、注文が0を超えるとすべてクローズし、新規に注文を出すところもあります(これ自体は新しいことではありません)。
しかし、この場合、Expert Advisorは、注文がどのように閉じられたかをプログラムで見つけるために非常に緊張しなければならず、最も重要なことは、不要なコードがたくさんあることです。
コードが多ければ多いほど、信頼性が低下する!
.
P.S. すでに議論されているかもしれませんが、私はそれを見ていないので、私の懸念を共有することにしました。
MQ4プラットフォームを使用する銀行の中には、0を超えたら全ての注文をクローズし、新たに注文を出すところもあります(これ自体は新しいことではありません)。
しかし、この場合、Expert Advisorは、プログラムでどのように注文が閉じられたかを見つけるために多くの負担をかけなければならず、最も重要なのは、多くの不要なコードが表示されることです。
そして、さらに重要なことは、不要なコードが多いということです。
そして、さらに悪いことに、このような状況下での秩序識別のための曖昧なSTATE法は存在しないのである。例えば、このような場合、証券会社は何も考えずに、最初のチケットとは全く関係のない新しいチケットを割り当ててしまうのです。
を、リストにしたがって、初期に作ったものです :)一つひとつの注文の履歴を追うのに、かなりの労力が必要です。
しかし、MT5では、注文に関する作業が根本的に変更されているようです(MetaTrader 5 Client Terminalを 参照)。
というのは、とんでもない秘密か、あるいは大きな驚きのようで、それについて尋ねるのは適切ではありません--わかりやすい答えを得るより、新しい端末を待つ方が簡単です
を開発者の方から教えていただきました。:)しかし、このトピックは要望に関するものであり、開発者は形式的な取引の実施方法ではなく、問題の根本に目を向けてほしいと思います。
私はすべての点で彼らに同意します。彼らはプログラマーがオープンポストで働くための良いサービスを必要としています - 一時停止しているポジション。