チャートに設定されたインジケーターバッファの読み取り - ページ 5

 
Dmitry Fedoseev:
どんな声明?タイトルの文は誤りです。バッファの読み出しに問題はない。どのような問題で - 書き込まれ、まだこの記事へのリンクを与えた。それでも追いかけて無理矢理にでも連れて行くべきでしょうか?

攻撃性と論証は反比例する!どのリンクが問題なのか......理解できない。

指標とEAコードが示された。iCustomでバッファを取得できない場合があることが示されました。つまり、この見出しは正しいだけでなく、証明されているのです。

iCustomの制限の種類が違うので、似たようなものですね。何も言われないのに「できる」「問題ない」と言うのはどういうことなんだ?建設的な中身を提供できないのだから、じゃあスレッドに絡んでくるなよ。

 
デフォルト以外の入力パラメータを持つチャート上で動作するインジケータのバッファ値を受信するExpert Advisorを書く ことは不可能です。iCustomは、各インジケータごとにSOURCEに独自の呼び出しを記述する必要があるような実装になっているためです。
 
comp:

そういう発言をするのは、頭を蹴られたようなものです。kodobaseでインジケータを探すことにしました。私が慣れ親しんでいるイベント駆動型モデル+OOPを採用しているものは、まだ見つかっていません。

この状態に対して、悔しいというか、残念というか、どちらとも言い難い。インジケータは、実に原始的な書き方であることがわかった。

EAにデータを渡すのと組み合わせたイベントモデルが必要な例を教えてください。

私は、チャート上で動作するインジケータにアクセスすることに反対はしていません。パラメータの構造にも(ちなみにMT5にはすでにあります)。

しかし、もう一度言いますが、私はあなたが間違った側からこの課題に取り組んでいることをほのめかしているのです。マイクロスコープで釘を打つ必要はない、別のことに使うのだ。

 
comp:
デフォルト以外の入力パラメータを持つチャート上で動作するインジケータのバッファ値を受け取るExpert Advisorを作成 することは不可能です。iCustomはこのように実装されているため、各インジケータごとにSOURCE内に独自の呼び出しを記述する必要があります。

知らなかったんです。

梟はバッファ0を読み取る

インディは別のチャートにぶら下がることができる

アイコンプ・ザ・インディクタ

ふくろう

また、owlからインジケータ・バッファに値を書き込むことも可能です。

ファイル:
icomp_v2.ex4  8 kb
ecomp_v2.ex4  6 kb
 

チャート上で動作しているすべてのインジケータの名前と入力パラメータを与えるスクリプトの例

#property strict

string GetBetweenString( string &SourceString, const string BeginString, const string EndString = "" )
{
  string Str = SourceString;
  int Pos1 = 0;
  int Pos2 = 0;

  if (BeginString != "")
    Pos1 = StringFind(SourceString, BeginString);

  if (Pos1 >= 0)
  {
    Pos1 += StringLen(BeginString);

    Pos2 = StringFind(SourceString, EndString, Pos1);

    if (Pos2 != Pos1)
      Str = StringSubstr(SourceString, Pos1, Pos2 - Pos1);
    else
      Str = "";
  }

  SourceString = StringSubstr(SourceString, Pos2 + StringLen(EndString));

  return(Str);
}

string FileToString( const string FileName )
{
  string Res = "";

  const int handle = FileOpen(FileName, ::FILE_READ|::FILE_BIN);

  if (handle != INVALID_HANDLE)
  {
    uchar Array[];

    FileReadArray(handle, Array);

    Res = CharArrayToString(Array);

    FileClose(handle);
  }

  return(Res);
}

string GetIndicatorsData( const long Chart_ID = 0 )
{
  string Res = "Current chart:";

  const string FileName = ::WindowExpertName() + ".tpl";

  if (ChartSaveTemplate(Chart_ID, "..\\MQL4\\Files\\" + FileName))
  {
    string Str = FileToString(FileName);

    int PosName = StringFind(Str, "name=Custom Indicator");

    while (PosName > 0)
    {
      const string IndicatorName = GetBetweenString(Str, "<indicator>\r\nname=Custom Indicator\r\n<expert>\r\nname=", "\r\n");

      Res += "\n\nIndicator: " + IndicatorName;

      const int PosInputs = StringFind(Str, "<inputs>");
      PosName = StringFind(Str, "name=Custom Indicator");

      if (PosInputs > 0)
        if ((PosName < 0) || (PosName > PosInputs))
          Res += "\nInputs:\n" + GetBetweenString(Str, "<inputs>\r\n", "\r\n</inputs>");

      Res += "\n\nLast Null Buffer Value (ONLY Default Inputs) = " + (string)iCustom(Symbol(), Period(), IndicatorName, 0, 0);
    }
  }

  return(Res);
}

void OnStart( void )
{
  MessageBox(GetIndicatorsData());

  return;
}

このデータは、指標の値を算出するのに十分なものでなければなりません。しかし、iCustomの "ellipsis "のために、それは不可能である。

 
pako:

知らなかったんです。

梟はバッファ0を読み取る

インディは別のチャートにぶら下がることができる

アイコンプ・ザ・インディクタ

ふくろう

情報源は?
 
comp:
ソースは?
やる気がないんです。
 
comp:

チャート上で動作しているすべてのインジケータの名前と入力パラメータを与えるスクリプトの例

このデータは、指標の値を算出するのに十分なものでなければなりません。しかし、iCustomの "ellipsis "のために、それは不可能である。

どのインジケータがチャート上にあるか、そのパラメータを知りたいのですか?

という名前が表示されます。

どの程度、どのようなパラメータを見ることができるのか

と表示され、スクリプトには正しい


名前とパラメータの数

 
pako:

どのインジケータがチャート上でホバリングしているか、そのパラメータを知りたいですか?

いいえ、あなたのEAではインジケータデータの変化が表示されないので、あなたの例で何がうまくいっていないのかを理解したいのです。

 
comp:

いいえ、あなたのEAが変化するインジケータデータを表示しないので、あなたの例で何が動作していないのかを理解したいのです。

バッファ0からのデータを表示しています

は、バッファ0のデータを表示します。