ドミトリー、ループの代わりにCHARTEVENT_CLICKを 使った方が簡単かもしれない。
ある通貨のチャートを同期させる例です。
//------------------------------------------------------------------ OnChartEvent void OnChartEvent(const int id, const long& lparam, const double& dparam, const string& sparam) { if (id==CHARTEVENT_CLICK) { long cid=ChartFirst(); long fbar=ChartGetInteger(ChartID(), CHART_FIRST_VISIBLE_BAR); datetime tm[], tm1[]; int rez=CopyTime(Symbol(), Period(), 0, fbar, tm); if (rez<fbar) return; while (cid!=-1) { ChartSetInteger(cid, CHART_AUTOSCROLL, false); ChartSetInteger(cid, CHART_SHIFT, false); if (cid!=ChartID() && ChartSymbol(cid)==Symbol()) { rez=CopyTime(ChartSymbol(cid), ChartPeriod(cid), TimeCurrent(), tm[0], tm1); if (rez<0) break; ChartNavigate(cid, CHART_END, rez-ChartGetInteger(cid, CHART_WIDTH_IN_BARS)+2); ChartRedraw(cid); } cid=ChartNext(cid); } } }
以上です!
ディミトリ、ループの代わりにCHARTEVENT_CLICKを使った方が簡単かもしれない...。
ある通貨のチャートを同期させる例です。
以上です!
すべてがそう単純ではない。この関数は、チャートの左端にあるバーを同期させますが、これは歴史を視覚的に研究するにはあまり便利ではありません。チャートのオフセットも無効にすべきです。これもあまり便利ではありません(好みの問題ですが)。開発者は、右端からのインデントや時間によるナビゲーションを取得・設定する機能を追加するだろう。また、イベントはスクリプトが動作するチャートに対してのみ処理される。
----------------------------------------------------------------------------------------------------------------
OnChartEvent
OnChartEvent()は、ChartEventグループのイベント・ハンドラです:
...
...
この関数は EA でのみ呼び出すことが でき、void 型と 4 つのパラメータを持つ必要があります:
----------------------------------------------------------------------------------------------------------------
イベント処理は エキスパートアドバイザーでのみ機能します。チャート上に存在する Expert Advisor は 1 つだけであり、Expert Advisor の代わりに補助的で実質的に役に立たないものを使うべきではありません。取引執行に直接関係しない補助的なツールは、極めて必要な一部の例外を除き、Expert Advisor の形にすべきではないというのが私の信念です。
オンチャートイベント
OnChartEvent()は、ChartEventイベント・グループのハンドラである:
...
...
この関数は Expert Advisor 内でのみ呼び出すことが でき、void 型で 4 つのパラメータを持つ必要があります:
----------------------------------------------------------------------------------------------------------------
イベント処理は Expert Advisor でのみ動作します。チャートに表示できる Expert Advisor は 1 つだけであり、Expert Advisor の代わりに補助的で実質的に役に立たないものを使用すべきではありません。取引執行に直接関係しない補助的なツールは、極端に必要な例外を除いて、Expert Advisor の形にすべきではないというのが私の信念です。
もはやこのようなことはありません。https://www.mql5.com/ru/forum/23/page4:
MetaTrader 5 クライアントターミナルビルド 245
- ターミナル:資産(エクスポージャータブ)内のフリーマージン資金の会計処理のエラーを修正しました。
- ターミナル: "Chart on foreground" チャートプロパティの動作を修正しました。
- ターミナル: チャートの印刷プレビューウィンドウの修正と再設計。
- ターミナル: 一時的なグローバル変数を扱う際のバグを修正。
- ターミナル: "標準 "と "チャート "ツールバーを統合しました。
- MQL5: クラッシュとフォーラムメッセージの修正
- MQL5: Expert AdvisorとスクリプトのCopy*関数の動作原理を変更しました。要求されたデータの待機時間が30秒を超えることはありません。より詳細な説明は、近い将来MQL5のヘルプに掲載される予定です。
- MQL5: Expert Advisorに似たカスタム・インジケータによるイベント処理の 可能性が追加されました。より詳細な説明は、近い将来MQL5ヘルプに掲載される予定です。
.
しかし、どの端でもバーを同期させることは可能であり、トレーダーに中央、右、左...と選択するためのボタンを提供することもできる。
チャートのズレも無効にすべきであるが、これもあまり便利ではない(好みの問題ではあるが)。
開発者は、右端からのインデントや時間によるナビゲーションを取得・設定する機能を追加してくれるだろう。
ちなみに、この機能は利用可能である。チャート・シフト・サイズ
ObjChartSample.mq5の例を参照。
CHART_FIRST_VISIBLE_BARが おかしいようです。
ChartNavigate()をチャートを表示できる数字より明らかに大きい数字にすると、次のようになります。
ChartGetInteger(ChartID(),CHART_FIRST_VISIBLE_BAR)は、Bars(ChartSymbol(ChartID()),ChartPeriod(ChartID()))よりも大きくなります。
スクリプト2.mq5の例。スクリプトを実行し、少し待つ。
何か、端末がスピードに追いついていないようだ。
というのも、スクリプトをすぐにもう一度実行すると、一度目はうまくいくからだ。
時間をコントロールする必要があるのかもしれない。
SeriesInfoIntegerが 役に立つかも?
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
sChartsSynchroScroll:
このスクリプトは、クライアント端末で開かれたすべてのチャートの同期スクロールを提供します。
作者: Dmitry Fedoseev