スクリプト: sChartsSynchroScroll

 

sChartsSynchroScroll:

 このスクリプトは、クライアント端末で開かれたすべてのチャートの同期スクロールを提供します。

作者: Dmitry Fedoseev

削除済み  

このスクリプトは、(ここで 行われているように)異なるタイムフレームのチャートで同時に動作するということを正しく理解していますか?

コードのスタイルはMQL4を思い出させる。これは悪いことではありません。ありがとうございました!

削除済み  

時間軸の左右のチャートが同期しない問題がある。私は、チャートの幅 全体について、バーが時間ごとに同期していることを望んでいる。

私は開発者に、「穴」-バーがある場合とない場合のチャートの視覚化の可能性について、もう一度考えることを提案します(おそらく、議論にかけることでしょう)。この場合、「穴」バーはMQL5では利用できません。

 

ドミトリー、ループの代わりに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);
   }
 }
}

以上です!

 
getch:

このスクリプトは、(ここで 行われているように)異なるタイムフレームのチャートで同時に動作するということを正しく理解していますか?

コードのスタイルはMQL4を思い出させる。これは悪いことではありません。ありがとうございます!


異なるタイムフレームで動作します。
 
sergeev:

ディミトリ、ループの代わりにCHARTEVENT_CLICKを使った方が簡単かもしれない...。

ある通貨のチャートを同期させる例です。

以上です!

すべてがそう単純ではない。この関数は、チャートの左端にあるバーを同期させますが、これは歴史を視覚的に研究するにはあまり便利ではありません。チャートのオフセットも無効にすべきです。これもあまり便利ではありません(好みの問題ですが)。開発者は、右端からのインデントや時間によるナビゲーションを取得・設定する機能を追加するだろう。また、イベントはスクリプトが動作するチャートに対してのみ処理される。

----------------------------------------------------------------------------------------------------------------

OnChartEvent

OnChartEvent()は、ChartEventグループのイベント・ハンドラです:

...

...

この関数は EA でのみ呼び出すことが でき、void 型と 4 つのパラメータを持つ必要があります:

----------------------------------------------------------------------------------------------------------------

イベント処理は エキスパートアドバイザーでのみ機能します。チャート上に存在する Expert Advisor は 1 つだけであり、Expert Advisor の代わりに補助的で実質的に役に立たないものを使うべきではありません。取引執行に直接関係しない補助的なツールは、極めて必要な一部の例外を除き、Expert Advisor の形にすべきではないというのが私の信念です。

 
Integer:

オンチャートイベント

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

  1. ターミナル:資産(エクスポージャータブ)内のフリーマージン資金の会計処理のエラーを修正しました。
  2. ターミナル: "Chart on foreground" チャートプロパティの動作を修正しました。
  3. ターミナル: チャートの印刷プレビューウィンドウの修正と再設計。
  4. ターミナル: 一時的なグローバル変数を扱う際のバグを修正。
  5. ターミナル: "標準 "と "チャート "ツールバーを統合しました。
  6. MQL5: クラッシュとフォーラムメッセージの修正
  7. MQL5: Expert AdvisorとスクリプトのCopy*関数の動作原理を変更しました。要求されたデータの待機時間が30秒を超えることはありません。より詳細な説明は、近い将来MQL5のヘルプに掲載される予定です。
  8. MQL5: Expert Advisorに似たカスタム・インジケータによるイベント処理の 可能性が追加されました。より詳細な説明は、近い将来MQL5ヘルプに掲載される予定です。

.

 
Integer писал(а) :

そう単純ではない。あなたの機能では、チャートの左端にあるバーを同期させますが、これは履歴を視覚的に研究するにはあまり便利ではありません。

しかし、どの端でもバーを同期させることは可能であり、トレーダーに中央、右、左...と選択するためのボタンを提供することもできる。

チャートのズレも無効にすべきであるが、これもあまり便利ではない(好みの問題ではあるが)。

開発者は、右端からのインデントや時間によるナビゲーションを取得・設定する機能を追加してくれるだろう。

ちなみに、この機能は利用可能である。チャート・シフト・サイズ

ObjChartSample.mq5の例を参照。

 

CHART_FIRST_VISIBLE_BARが おかしいようです。

ChartNavigate()をチャートを表示できる数字より明らかに大きい数字にすると、次のようになります。

ChartGetInteger(ChartID(),CHART_FIRST_VISIBLE_BAR)は、Bars(ChartSymbol(ChartID()),ChartPeriod(ChartID()))よりも大きくなります。

スクリプト2.mq5の例。スクリプトを実行し、少し待つ。

ファイル:
2.mq5  2 kb
 

何か、端末がスピードに追いついていないようだ。

というのも、スクリプトをすぐにもう一度実行すると、一度目はうまくいくからだ。

時間をコントロールする必要があるのかもしれない。

SeriesInfoIntegerが 役に立つかも?

削除済み  
Integerさんsergeevさん、あなたの書き込みによると、MQL5とMT5はかなり未熟だという非常に不愉快な印象を受けます。