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

 
開始時間にも問題がある。何かが、バーの開始を適切なタイミングで登録していない。後で考えよう。
 
Nikolai Semko:

ピーター、私もうまくいかないんです。
あなたのプログラミングスタイルはおかしい。OnInitやOnTimerの変数やループを含めて、このようなものを1つのプロシージャにまとめてもよいでしょう。このコードが邪魔になるので、使いたい人がいれば。同じ内容のプロシージャーが20個以上ある場合はどうすればよいのでしょうか?何しろ、ここに 実装されているのですから。


ピーターは安易に逃げようとはしない...。

 
Реter Konow:
また、開始時間にも問題があります。何かが正しいタイミングでバーの開始を登録しない。後で考えよう。

小節の開始は必ずしも正確なタイミングではありません。

バーが完全に省略されることもあります。
 
Nikolai Semko:

ピーター 私もうまくいかないんです。
あなたのプログラミングスタイルはおかしい。これらをOnInitやOnTimerの変数やループをすべて1つのプロシージャにまとめることができるのです。このパッケージが邪魔になるので、使いたい人がいれば。同じ内容のプロシージャーが20個以上ある場合はどうするのですか?何しろ、ここに 実装されているのですから。

分単位で見るとうまくいくのですが、小節の先頭を適切なタイミングでロックすることができません。

待ち時間が長いので、他の時間軸では確認していません。

スタイルについては、もうどうでもいい。タイマーからすべてを取り出して、別の関数に入れればいいのです。私は、あくまでもソリューションそのものについて考えていたのであって、その統合による将来のバリエーションについて考えていたわけではありません。

 
Vladimir Pastushak:

バーのスタートは、必ずしも時間通りとは限りません。

はい、気づきました、後で修正します。
 
Реter Konow:

もし、本当に600もの商品をマーケットオーバービューに登録している人が、1ティック ごとに各商品、各タイムフレームの新しいバーの到着をチェックするとしたら、高くつくかもしれないな...と思っていたんです。

私自身はトレードをしないので、この関数が実際に何回呼ばれるべきかは正確にはわかりません。

new bar 関数のシンボルとタイムフレームの二重ループは、シンボルとタイムフレームの数が非常に多く、数百のシンボルの各ティックで関数が呼び出される場合にのみ、負荷が増加する可能性があります。それならば、ドミトリーの言うとおりかもしれない。

関数内のループを1つ短くしました。

ただ、忘れてください。

このアクションに特化した私のクラスの例です。もちろん、名作ではありませんが、私のものであり、私を理解し、働いてくれています。

class CNewBar
{
protected:
  MqlRates newBarRates[];
public:
 bool newBar();
 bool newBar(ENUM_TIMEFRAMES timeframe, datetime & tOld);
};/********************************************************************/

bool CNewBar::newBar()
{
 static datetime timeLastBar;
  if(CopyRates(_Symbol, PERIOD_CURRENT, 0, 1, newBarRates) < 0)
   return(false);
  bool ret = timeLastBar != newBarRates[0].time;
   if(ret)
    timeLastBar = newBarRates[0].time;
   return(ret);
}/********************************************************************/

bool CNewBar::newBar(ENUM_TIMEFRAMES timeframe, datetime & tOld)
{
  if(CopyRates(_Symbol, timeframe, 0, 1, newBarRates) < 0)
   return(false);
    datetime tNew = newBarRates[0].time;
   bool ret = tOld != tNew;
   if(ret)
    tOld = tNew;
   return(ret);
}/********************************************************************/

現在のTFだけで判断したい場合は、パラメータなしで関数を呼び出す必要があります。

したがって、.mqhに配置されている場合は、ライブラリを添付する必要があります。

#include <путь_папка\имя_файла.mqh>
CNewBar newBar;

で、OnTick()の中で呼び出されます。

if(newBar.newBar())
 Print("Новый бар на текущем ТФ");

他のTFを定義する必要がある場合は、必要に応じて、グローバル変数やスタティック変数のレベルで、各期間やシンボルの変数を宣言します。

static datetime oldD1 = 0, oldH1 = 0;

if(newBar.newBar(PERIOD_H1, oldH1) && newBar.newBar(PERIOD_D1, oldD1)
 Print("Открылся новый день и новый час");

この方法は、必要な TF 以外のチャートで作業する場合に有効で、Expert Advisor が動作するチャートの偶発的な切り替えによる問題から保護されます。

 
Nikolai Semko:

ピーター 私もうまくいかないんです。アルゴリズムはかなり高速ですが、時間の無駄です。でも、まだうまくいっていない。理解する時間がない。
プログラミングのスタイルが変わっていますね。OnInitやOnTimerの変数やループを含めて、このようなものを1つのプロシージャにまとめてもよいでしょう。使いたい人がいても、こんなものでは邪魔になる。同じ内容のプロシージャーが20個以上ある場合はどうするのですか?ここに 実装されています。


もしかして、「速い」の意味がわからない?

 
Alexey Viktorov:

あ、吐き出して...。

このアクションに特化した私のクラスの例です。もちろん、傑作というわけではありませんが、私のものであり、私のために機能しているのです。

現在のTFだけで判断したい場合は、パラメータなしの関数が呼ばれます。

したがって、.mqhに配置する場合は、ライブラリを接続する必要があります。

で、OnTick()の中で呼び出されます。

他のTFを決めたい場合は、グローバル変数やスタティック変数のレベルで、必要に応じて、各期間やシンボルごとに変数が宣言されます。

この方法は、必要な TF 以外のチャートで作業する場合に有効で、Expert Advisor が動作するチャートの偶発的な切り替えに関連する問題から保護されます。


自分がどんなバカを発揮したのか、全くわかっていない、無茶苦茶だ。しかし、皆さんは私の意見に興味がないようなので、具体的にどのような場所かは紹介しません)))

 
Alexey Viktorov:

あ、吐き出して...。

このアクションに特化した私のクラスの例です。もちろん、傑作というわけではありませんが、私のものであり、私のために機能しているのです。

現在のTFだけで判断したい場合は、パラメータなしの関数が呼ばれます。

したがって、.mqhに配置されている場合は、ライブラリを添付する必要があります。

で、OnTick()の中で呼び出されます。

他のTFを決定する必要がある場合は、グローバル変数または静的変数のレベルで、各期間と、必要に応じて、シンボルに対して宣言されます。

この方法は、目的のチャート以外で作業する場合に有効で、Expert Advisorが動作するチャートの偶発的な切り替えによる問題から保護されます。

そして、他のシンボルについてはどうですか?タスクは、任意のfのための市場の概要から任意のシンボルの変更オフを識別することであった。

リーズナブル。
 
Alexey Viktorov:

あ、吐き出して...。

このアクションに特化した私のクラスの例です。もちろん、傑作というわけではありませんが、私のものであり、私のために機能しているのです。

現在のTFだけで判断したい場合は、パラメータなしの関数が呼ばれます。

したがって、これを.mqhに配置する場合は、ライブラリーを含める必要があります。

で、OnTick()の中で呼び出されます。

私は他の時間枠を決定したい場合は、グローバル変数または静的変数のレベルで、必要に応じて、各期間とシンボルに宣言されています。

この方法は、目的のチャート以外で作業する場合に有効で、Expert Advisorが動作するチャートの偶発的な切り替えの問題から保護されます。

あなたのソリューションはうまく機能していますか?うまくいけば、すべてがうまくいく。

何百台もの楽器の場合はどうでしょうか。重なることはないのでしょうか。