iBarShiftのアナログ - ページ 11 1...4567891011121314151617 新しいコメント Vitaly Muzichenko 2018.04.05 01:32 #101 Nikolai Semko:ええ、まあ、実際、標準的な関数としては奇妙な動作です。結局のところ、私たちはまさにその「ベンチマーク」に値を当てはめることを扱っているのです。 MQL4の標準関数iBarShiftは、要求された時刻が穴に落ちると、左の小節番号(つまりこの場合は土曜日)を返し、iBarShift3は穴から右の小節番号(つまり月曜日)を返すので、より理にかなっていると言えるでしょう。穴の中にいるのであれば、最後に判明した値である左バーを返すのは論理的だが、未来は返さないのである。 Nikolai Semko 2018.04.05 01:40 #102 Vitaly Muzichenko:穴の中にいるのであれば、最後に判明した値である左バーを返すのは論理的だが、未来は返さない。 そうなんですね、意味不明です。過去と未来を混同してしまった)おそらく、1(過去)>0(未来)だからでしょう。プログラムされています。 Nikolai Semko 2018.04.05 02:48 #103 Alain Verleyen: ほとんどの場合、この関数は間違った結果を返します追記:英語版を掲載する必要があるのか、それともロシア語訳が正しいのか? はい、訳は合っています。このスクリプトを実行すると、関数が まったく同じ結果を生むことがわかる。これらの関数の値が異なる時間軸と時間帯の例を教えてください。 ちなみに、あなたの機能はよく間違われます。値-1 を返します。 2018.04.04 22:51:05.666 TestBarShift2 AUDUSD,M5: BarShiftX PERIOD_M1 0 -1 2018.04.05 05:45:00 2018.04.04 22:50:46.867 TestBarShift2 AUDUSD,M5: BarShiftX PERIOD_M1 0 -1 2018.04.05 05:46:00 2018.04.04 22:50:41.255 TestBarShift2 AUDUSD,M5: BarShiftX PERIOD_M1 0 -1 2018.04.05 05:47:00 2018.04.04 22:50:23.496 TestBarShift2 AUDUSD,M5: BarShiftX PERIOD_M1 0 -1 2018.04.05 05:45:00 2018.04.04 22:50:05.596 TestBarShift2 AUDUSD,M5: BarShiftX PERIOD_M1 0 -1 2018.04.05 05:47:00 2018.04.04 22:48:38.638 TestBarShift2 AUDUSD,M5: BarShiftX PERIOD_M1 0 -1 2018.04.05 05:47:00 ファイル: TestBarShift2.mq4 3 kb Nikolai Semko 2018.04.05 06:23 #104 Alain Verleyen:要件は、mql4のバージョンとしてONLYを持つことである exact=trueパラメータを指定した場合、関数が正しく動作しません。 これは、このスクリプトで確認することができます。 また、iBarShift関数の 完全な動作アナログを正確なパラメータで紹介します。 int iBarShift1(const string Symb,const ENUM_TIMEFRAMES TimeFrame,datetime time,bool exact=false) { int Res=Bars(Symb,TimeFrame,time+1,UINT_MAX); if(exact) if((TimeFrame!=PERIOD_MN1 || time>TimeCurrent()) && Res==Bars(Symb,TimeFrame,time-PeriodSeconds(TimeFrame)+1,UINT_MAX)) return(-1); return(Res); } このパラメータがない場合は、次のような形に簡略化されます。 Bars(Symb,TimeFrame,time+1,UINT_MAX); ファイル: TestBarShift2.mq4 3 kb Alain Verleyen 2018.04.05 09:05 #105 Nikolai Semko:はい、訳は合っています。このスクリプトを実行すると、関数が まったく同じ結果を生むことがわかる。これらの関数の値が異なる時間軸と時間帯の例を教えてください。 ちなみに、あなたの機能はよく間違われます。値-1 を返します。 真面目にお願いします。私のコードはmql5用です。 MT4ではBars()関数が信頼できないため、-1が返されます。 ... int shift=Bars(symbol,timeframe,time,LastBAR); datetime checkcandle[1]; if(CopyTime(symbol,timeframe,time,1,checkcandle)==1) { if(checkcandle[0]==time) return(shift-1); else if(exact && time>checkcandle[0]+PeriodSeconds(timeframe)) return(-1); else return(shift); } ... AUDUSD、M5チャートでスクリプトを実行します。 MT5ではこの現象は起こりません。 Nikolai Semko 2018.04.05 13:56 #106 Alain Verleyen:真面目にお願いします。私のコードはmql5用です。 MT4ではBars()関数が信頼できないため、-1が返されます。 AUDUSD、M5チャートでスクリプトを実行します。 MT5ではこの現象は起こりません。MQL4と同じように 動作するようにとのことですが。 しかし、このスクリプトはMQL5上でも実行可能です。 2018.04.05 09:52:40.760 TestBarShift2 (EURUSD,M12) PERIOD_M3 BarShift1 = -1 BarShift2 = 0 2018.08.10 18:39:49 exact = true 2018.04.05 09:52:40.760 TestBarShift2 (EURUSD,M12) PERIOD_M10 BarShift1 = -1 BarShift2 = 0 2018.04.15 00:25:08 exact = true 2018.04.05 09:52:40.761 TestBarShift2 (EURUSD,M12) PERIOD_M6 BarShift1 = -1 BarShift2 = 0 2018.04.21 04:26:03 exact = true 2018.04.05 09:52:40.761 TestBarShift2 (EURUSD,M12) PERIOD_M15 BarShift1 = -1 BarShift2 = 0 2018.05.29 17:10:52 exact = true 2018.04.05 09:52:40.761 TestBarShift2 (EURUSD,M12) PERIOD_M12 BarShift1 = -1 BarShift2 = 0 2018.09.16 13:10:33 exact = true 2018.04.05 09:52:40.762 TestBarShift2 (EURUSD,M12) PERIOD_M10 BarShift1 = -1 BarShift2 = 0 2018.09.25 21:24:50 exact = true 2018.04.05 09:52:40.762 TestBarShift2 (EURUSD,M12) PERIOD_M10 BarShift1 = -1 BarShift2 = 0 2018.05.30 20:04:10 exact = true 2018.04.05 09:52:40.762 TestBarShift2 (EURUSD,M12) PERIOD_M5 BarShift1 = -1 BarShift2 = 0 2018.04.29 16:12:16 exact = true exact=Trueで未来時間なら-1を返さなければならない。 また、私のスクリプトは奇妙なエラーを発見しました。 このエラーは、このチェックで確認できます。 Print (iBarShift2(_Symbol,PERIOD_MN1,D'2015.12.31 21:03:54',true)); // -1 Print (iBarShift1(_Symbol,PERIOD_MN1,D'2015.12.31 21:03:54',true)); // 28 ということは、結局のところ、あなたのアルゴリズムにイレギュラーが存在 するというのは正しかったということですね。 ファイル: TestBarShift2.mq5 4 kb Nikolai Semko 2018.04.05 14:43 #107 私が行ったすべての分析から、このiBarShiftの完全なアナログであると結論付けることができます。 int iBarShift(const string Symb,const ENUM_TIMEFRAMES TimeFrame,datetime time,bool exact=false) { int Res=Bars(Symb,TimeFrame,time+1,UINT_MAX); if(exact) if((TimeFrame!=PERIOD_MN1 || time>TimeCurrent()) && Res==Bars(Symb,TimeFrame,time-PeriodSeconds(TimeFrame)+1,UINT_MAX)) return(-1); return(Res); } が圧倒的に正しく、同時に最も高速で、最も単純で短いアルゴリズムで実行されます。 正確なパラメータが必要ない場合は、簡易版を使用することができます。 int iBarShift(const string Symb,const ENUM_TIMEFRAMES TimeFrame,datetime time) { return(Bars(Symb,TimeFrame,time+1,UINT_MAX)); } または、関数を呼び出さずに この同等バージョンを使用するだけです。 Bars(Symb,TimeFrame,time+1,UINT_MAX); それとも私が間違っているのでしょうか? Nikolai Semko 2018.04.05 16:43 #108 沈黙は同意の証です。 fxsaber 2018.04.05 17:04 #109 Nikolai Semko: 沈黙は同意の証です。MEでCTRL+SHIFT+Fで "BarShift "を検索しました。似たような機能を使ってないことが判明。どうやら自分には必要ないようだ。 かつて、MT4のEAを1行でMT5に変換するバリアントを書いたことがあります。それしか書く理由がないように思える。 私はバーで仕事をしないので、なぜみんなが同じようにしないのか理解できません。 あなたのコードに入りませんでした。でも、すぐに解決したときはいつも嬉しいですね。 Nikolai Semko 2018.04.05 17:14 #110 fxsaber:MEでCTRL+SHIFT+Fで "BarShift "を検索しました。似たような機能を使ってないことが判明。どうやら自分には必要ないようだ。 かつて、MT4のEAを1行でMT5に変換するバリアントを書いたことがあります。それしか書く理由がないように思える。 私はバーで仕事をしないので、なぜみんなが同じようにしないのか理解できません。 あなたのコードに入りませんでした。でも、すぐに解決したときはいつも嬉しいですね。おっしゃることはよくわかるのですが、やはりバーを使った作業は私にとっては急務です。いつか自分も初歩の初歩になるかもしれない。 1...4567891011121314151617 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
ええ、まあ、実際、標準的な関数としては奇妙な動作です。結局のところ、私たちはまさにその「ベンチマーク」に値を当てはめることを扱っているのです。
MQL4の標準関数iBarShiftは、要求された時刻が穴に落ちると、左の小節番号(つまりこの場合は土曜日)を返し、iBarShift3は穴から右の小節番号(つまり月曜日)を返すので、より理にかなっていると言えるでしょう。
穴の中にいるのであれば、最後に判明した値である左バーを返すのは論理的だが、未来は返さないのである。
穴の中にいるのであれば、最後に判明した値である左バーを返すのは論理的だが、未来は返さない。
追記:英語版を掲載する必要があるのか、それともロシア語訳が正しいのか?
はい、訳は合っています。
このスクリプトを実行すると、関数が まったく同じ結果を生むことがわかる。
これらの関数の値が異なる時間軸と時間帯の例を教えてください。
ちなみに、あなたの機能はよく間違われます。値-1 を返します。
要件は、mql4のバージョンとしてONLYを持つことである
exact=trueパラメータを指定した場合、関数が正しく動作しません。
これは、このスクリプトで確認することができます。
また、iBarShift関数の 完全な動作アナログを正確なパラメータで紹介します。
このパラメータがない場合は、次のような形に簡略化されます。
はい、訳は合っています。
このスクリプトを実行すると、関数が まったく同じ結果を生むことがわかる。
これらの関数の値が異なる時間軸と時間帯の例を教えてください。
ちなみに、あなたの機能はよく間違われます。値-1 を返します。
真面目にお願いします。私のコードはmql5用です。
MT4ではBars()関数が信頼できないため、-1が返されます。
AUDUSD、M5チャートでスクリプトを実行します。
MT5ではこの現象は起こりません。
真面目にお願いします。私のコードはmql5用です。
MT4ではBars()関数が信頼できないため、-1が返されます。
AUDUSD、M5チャートでスクリプトを実行します。
MT5ではこの現象は起こりません。
MQL4と同じように 動作するようにとのことですが。
しかし、このスクリプトはMQL5上でも実行可能です。
exact=Trueで未来時間なら-1を返さなければならない。
また、私のスクリプトは奇妙なエラーを発見しました。
このエラーは、このチェックで確認できます。
ということは、結局のところ、あなたのアルゴリズムにイレギュラーが存在 するというのは正しかったということですね。私が行ったすべての分析から、このiBarShiftの完全なアナログであると結論付けることができます。
が圧倒的に正しく、同時に最も高速で、最も単純で短いアルゴリズムで実行されます。
正確なパラメータが必要ない場合は、簡易版を使用することができます。
または、関数を呼び出さずに この同等バージョンを使用するだけです。
それとも私が間違っているのでしょうか?沈黙は同意の証です。
MEでCTRL+SHIFT+Fで "BarShift "を検索しました。似たような機能を使ってないことが判明。どうやら自分には必要ないようだ。
かつて、MT4のEAを1行でMT5に変換するバリアントを書いたことがあります。それしか書く理由がないように思える。
私はバーで仕事をしないので、なぜみんなが同じようにしないのか理解できません。
あなたのコードに入りませんでした。でも、すぐに解決したときはいつも嬉しいですね。
MEでCTRL+SHIFT+Fで "BarShift "を検索しました。似たような機能を使ってないことが判明。どうやら自分には必要ないようだ。
かつて、MT4のEAを1行でMT5に変換するバリアントを書いたことがあります。それしか書く理由がないように思える。
私はバーで仕事をしないので、なぜみんなが同じようにしないのか理解できません。
あなたのコードに入りませんでした。でも、すぐに解決したときはいつも嬉しいですね。
おっしゃることはよくわかるのですが、やはりバーを使った作業は私にとっては急務です。いつか自分も初歩の初歩になるかもしれない。