iBarShiftのアナログ - ページ 2 123456789...17 新しいコメント Vasiliy Pushkaryov 2017.06.07 21:30 #11 以下は、iBarShift() の アナログの2つのバージョンです:投稿番号5と 投稿番号7 Nikolai Semko 2017.06.07 21:56 #12 Denis: Bars 関数は、バーの本数を 返します。インデックス9(同語反復ですみません)のバーのインデックスを取得する必要があるとき、最初のバーのインデックスは0なので、10が返されます。 そうですね、ありがとうございます。全体として、良いアドノーティスだと思います。そうですね、私はあまり気にしていなくて、ただバーの数だということは知っています。そして、プログラムがインデックスを必要とする場合のみ、1つ引き算をします。 Nikolai Semko 2017.06.07 22:00 #13 Vasiliy Pushkaryov: 以下は、iBarShift() の アナログの2つのバリエーションです:投稿番号5と 投稿番号7 シンプルなバリエーション。Bars(NULL, 0, t, 32000000000)-1;は、現在のシンボルとタイムフレームのためのiBarShiftアナログの最短かつ最速のソリューションであり、追加の関数を必要としません。ただし、カレントでないものも、NULLではなく、最初の2つのパラメータを記入すればよい。 Vasiliy Pushkaryov 2017.06.07 22:29 #14 Nikolai Semko: ただ、バリエーションがある。は、現在のシンボルと現在のタイムフレームのためのiBarShiftと対になる最短かつ最速のソリューションであり、追加の関数を必要としません。ただ、すべてのケースで正しく動作するわけではありません。fxsaberのGetBarShift()の方が汎用的です。 関数にtの 代わりにTimeCurrent() を入れてみてください。 Nikolai Semko 2017.06.07 22:31 #15 Vasiliy Pushkaryov:ただ、すべてのケースで正しく動作するわけではありません。fxsaberによるGetBarShift()はより普遍的なものです。 関数の中でtの 代わりにTimeCurrent()を入れてみてください。 結果は同じになります。 Vasiliy Pushkaryov 2017.06.07 22:32 #16 Nikolai Semko: 結果は同じになります。 チェックもしてないのに Nikolai Semko 2017.06.07 22:37 #17 Vasiliy Pushkaryov: 確認すらしてないのか。 何度も確認したことがあるので、わかるだけです。でも、自分で試したこともないでしょう? Vasiliy Pushkaryov 2017.06.07 22:54 #18 Nikolai Semko: 今まで何度もテストしているので、わかるんです。でも、自分で試したこともないでしょう?これがその台本です。void OnStart() { int idShort = Bars(NULL, 0, TimeCurrent(), 32000000000)-1; int idUni = GetBarShift(_Symbol, 0, TimeCurrent()); Print("idShort = ", idShort, " idUni=", idUni); } //+------------------------------------------------------------------------------------------------------------------+ //| //+------------------------------------------------------------------------------------------------------------------+ int GetBarShift(const string symbol_name, const ENUM_TIMEFRAMES timeframe, const datetime time) { int res=-1; datetime last_bar; // --- время открытия последнего бара по символу, периоду if(SeriesInfoInteger(symbol_name, timeframe, SERIES_LASTBAR_DATE, last_bar)) { if(time > last_bar) res = 0; else { const int shift = Bars(symbol_name, timeframe, time, last_bar); if(shift > 0) res = shift-1; } } return res; }ハングアップしてしまうんです。強制的にチャートから外すと結果が出る。だから私も試したし、だからあなたにもアドバイスしたんです。でも、あなたが使っていて、あなたに合っているのだから、その気持ちは変わりません。 Renat Akhtyamov 2017.06.07 23:19 #19 それもいいint iBarShift(string symbol, ENUM_TIMEFRAMES timeframe, datetime tm) { datetime tm0[1]; CopyTime(symbol,timeframe,0,1,tm0); int res=Bars(symbol,timeframe,tm0[0],tm)-1; return(res); } Alain Verleyen 2017.06.08 05:58 #20 https://www.mql5.com/ru/code/1864 iBarShift 投票: 422013.10.25Alain Verleyenwww.mql5.com Многие ищут функцию iBarShift, которая была в языке MQL4. В языке MQL5 ее нет, но есть все возможности для ее реализации в виде библиотеки. 123456789...17 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
Bars 関数は、バーの本数を 返します。インデックス9(同語反復ですみません)のバーのインデックスを取得する必要があるとき、最初のバーのインデックスは0なので、10が返されます。
以下は、iBarShift() の アナログの2つのバリエーションです:投稿番号5と 投稿番号7
ただ、バリエーションがある。
ただ、すべてのケースで正しく動作するわけではありません。fxsaberのGetBarShift()の方が汎用的です。
関数にtの 代わりにTimeCurrent() を入れてみてください。
ただ、すべてのケースで正しく動作するわけではありません。fxsaberによるGetBarShift()はより普遍的なものです。
関数の中でtの 代わりにTimeCurrent()を入れてみてください。
結果は同じになります。
確認すらしてないのか。
今まで何度もテストしているので、わかるんです。でも、自分で試したこともないでしょう?
これがその台本です。
ハングアップしてしまうんです。強制的にチャートから外すと結果が出る。
だから私も試したし、だからあなたにもアドバイスしたんです。でも、あなたが使っていて、あなたに合っているのだから、その気持ちは変わりません。
それもいい