チャートに設定されたインジケーターバッファの読み取り - ページ 3 12345678910 新しいコメント 削除済み 2016.03.12 09:35 #21 comp:件名 スペルを正しく書けば、幸せになれる。 削除済み 2016.03.13 21:05 #22 Dmitry Fedoseev: それで?インジケータを 起動し、次に - Expert Advisorを起動します。#property strict #define PAUSE 100 sinput int BufferIndex = 0; // Номер буфера индикатора sinput bool TimerEvent = FALSE; // Использование события Timer string IndicatorName; 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 GetIndicatorName( const long Chart_ID = 0 ) { string Res = ""; const string FileName = ::WindowExpertName() + ".tpl"; if (ChartSaveTemplate(Chart_ID, "..\\MQL4\\Files\\" + FileName)) { string Str = FileToString(FileName); if (StringFind(Str, "name=Custom Indicator") > 0) Res = GetBetweenString(Str, "<indicator>\r\nname=Custom Indicator\r\n<expert>\r\nname=", "\r\n"); } return(Res); } string GetIndicatorString( const int Pos = -1 ) { static int PrevPos = 0; if (Pos != -1) PrevPos = Pos; const string Str = ((PrevPos < 0) || (IndicatorName == "")) ? "" : IndicatorName + "[" + (string)BufferIndex + "][" + (string)PrevPos + " - " + (string)Time[PrevPos] + "] = " + (string)iCustom(Symbol(), Period(), IndicatorName, BufferIndex, Pos); return(Str); } void OnInit( void ) { IndicatorName = GetIndicatorName(); ChartSetInteger(0, CHART_EVENT_MOUSE_MOVE, TRUE); if (TimerEvent) EventSetMillisecondTimer(PAUSE); return; } void OnDeinit( const int reason ) { if (TimerEvent) EventKillTimer(); Comment(""); return; } void OnTimer( void ) { Comment(GetIndicatorString()); return; } void OnChartEvent( const int id, const long& lparam, const double& dparam, const string& sparam ) { if (id == CHARTEVENT_MOUSE_MOVE) { datetime time; double price; int SubWindow; ChartXYToTimePrice(0, (int)lparam, (int)dparam, SubWindow, time, price); const int Pos = iBarShift(Symbol(), Period(), time, TRUE); Comment(GetIndicatorString(Pos)); } return; }インジケータ バッファ値 (CTRL+D) が iCustom 値と一致しないことに気づきます (これらは Expert Advisor のチャート コメントに表示されます)。今回のテストでは、iCustomはEMPTY_VALUEかゼロを出力します。 Dmitry Fedoseev 2016.03.13 22:08 #23 確認しました。合わないというより、まったくないんです。かなりイケてますね。 Andrey Khatimlianskii 2016.03.13 23:41 #24 comp:この問題が4つ目のフォーラムで公表されてから7年以上経過しても、開発者は機能を作成していないことから、沈黙が続いています(Googleは覚えています)。なぜか未だにチャートからインジケーターデータを人間が読み取るということができないんですよねー。お かしいと思うかもしれませんが、そうなんです。問題は問題文にある。指標の使い方を間違えているだけです。時間軸を決めてイベントに反応するのではなく、経済的に時系列を作り直すために設計されているんです。このような場合、反対側からアプローチすることで、経済的な解決策を見出すことができます。 Dmitry Fedoseev 2016.03.13 23:50 #25 バッファの読み取りの問題ではなく、iCustom()を介して呼び出されたインジケータには、タイマーもチャートイベントもないのです。 Andrey Khatimlianskii 2016.03.14 02:19 #26 Dmitry Fedoseev: バッファの読み取りの問題ではなく、iCustom()を介して呼び出されたインジケータには、タイマーもチャートイベントもないのです。何のために?まあ、真面目な話、何のために? Dmitry Fedoseev 2016.03.14 03:32 #27 Andrey Khatimlianskii:何のために?まあ、真面目な話、なんで? 必要ないしかし、ここでは誰かがそれを必要としていたことがわかった。 削除済み 2016.03.14 07:11 #28 Andrey Khatimlianskii:問題は問題文にある。インジケーターの使用目的を間違えているに過ぎません。時間に追われ、イベントに反応するのではなく、経済的に時系列を手直しするために設計されています。反対側からアプローチすれば、経済的で素敵な解決策が見つかるはずです。そんな発言をするのは、頭をハンマーで殴られたようなものです。kodobaseでインジケータを探すことにしました。私が慣れ親しんでいるイベント駆動型モデル+OOPを採用しているものは、まだ見つかっていません。この状態に対して、悔しいというか、残念というか、なんとも言えない気持ちです。指標は、原始的に書かなければならないことがわかった。インジケータでイベントモデル+OOPを使っている人はいるのでしょうか?それでも、目で見たものをプログラムでグラフにできない、という戸惑いは消えませんね 削除済み 2016.03.14 07:21 #29 iCustomでExpert Advisorのテストを 書いているとき、解決できないMQLの問題に直面したことがあります。インジケーターのファイル名(コードを参照)と入力パラメータの値を知ること - 問題ありません。しかし、その後、インディケータの入力パラメータをiCustomに挿入することは不可能です。iCustomの呼び方は、どのような指標に対しても普遍的な解決策は、デフォルトの入力パラメータの場合にのみ適しているということです。そうでなければ、コードの中に入っていかなければなりません。この解決策は不便です。インジケータの入力は、適切な文字列フィールドを持つ構造体として渡すことができた。しかし、私たちは省略 形を使い、呼びかけの普遍性を殺してしまったのです。また妙な制約が!? Dmitry Fedoseev 2016.03.14 07:36 #30 comp:そういう発言をするのは、頭を蹴られたようなものです。kodobaseでインジケータを探すことにしました。私が慣れ親しんでいるイベント駆動型モデル+OOPを採用しているものは、まだ見つかっていません。この状態に対して、悔しいというか、残念というか、なんとも言えない気持ちです。指標は、原始的に書かなければならないことがわかった。インジケータでイベントモデル+OOPを使っている人はいるのでしょうか?それでも、目で見たものをプログラムでグラフにできない、という戸惑いは消えませんね なぜ?OnCalculate関数、tickイベントなど、すでに目の前ですべてが盗まれています。OOPを 使いたいなら使えばいい、でも何のためにあるのか、どこに置けばいいのか。 12345678910 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
件名
それで?
インジケータを 起動し、次に - Expert Advisorを起動します。
インジケータ バッファ値 (CTRL+D) が iCustom 値と一致しないことに気づきます (これらは Expert Advisor のチャート コメントに表示されます)。
今回のテストでは、iCustomはEMPTY_VALUEかゼロを出力します。
確認しました。合わないというより、まったくないんです。かなりイケてますね。
なぜか未だにチャートからインジケーターデータを人間が読み取るということができないんですよねー。お かしいと思うかもしれませんが、そうなんです。
問題は問題文にある。
指標の使い方を間違えているだけです。時間軸を決めてイベントに反応するのではなく、経済的に時系列を作り直すために設計されているんです。
このような場合、反対側からアプローチすることで、経済的な解決策を見出すことができます。
バッファの読み取りの問題ではなく、iCustom()を介して呼び出されたインジケータには、タイマーもチャートイベントもないのです。
何のために?
まあ、真面目な話、何のために?
何のために?
まあ、真面目な話、なんで?
問題は問題文にある。
インジケーターの使用目的を間違えているに過ぎません。時間に追われ、イベントに反応するのではなく、経済的に時系列を手直しするために設計されています。
反対側からアプローチすれば、経済的で素敵な解決策が見つかるはずです。
そんな発言をするのは、頭をハンマーで殴られたようなものです。kodobaseでインジケータを探すことにしました。私が慣れ親しんでいるイベント駆動型モデル+OOPを採用しているものは、まだ見つかっていません。
この状態に対して、悔しいというか、残念というか、なんとも言えない気持ちです。指標は、原始的に書かなければならないことがわかった。
インジケータでイベントモデル+OOPを使っている人はいるのでしょうか?
それでも、目で見たものをプログラムでグラフにできない、という戸惑いは消えませんね
そういう発言をするのは、頭を蹴られたようなものです。kodobaseでインジケータを探すことにしました。私が慣れ親しんでいるイベント駆動型モデル+OOPを採用しているものは、まだ見つかっていません。
この状態に対して、悔しいというか、残念というか、なんとも言えない気持ちです。指標は、原始的に書かなければならないことがわかった。
インジケータでイベントモデル+OOPを使っている人はいるのでしょうか?
それでも、目で見たものをプログラムでグラフにできない、という戸惑いは消えませんね