iBarShiftのアナログ - ページ 5 123456789101112...17 新しいコメント Andrey Khatimlianskii 2018.03.30 12:19 #41 Aleksey Vyazmikin:なぜこんなにスクリプトが遅いのですか? その答えはプロファイラーに ある。 Aleksey Vyazmikin 2018.03.30 12:35 #42 Andrey Khatimlianskii:その答えはプロファイラーに ある。OK、プロファイラーはこのコード片を参照しています。 Res=::Bars(Symb,TimeFrame,time,UINT_MAX)-1; 何が気に入らないのでしょうか?この機能は私のものではありませんが、上の作者は早く動くはずだと主張しています...。 Nikolai Semko 2018.03.30 13:23 #43 Aleksey Vyazmikin:OK、プロファイラーはこのコード片を参照しています。そして、何が気に入らないのか?この機能は私のものではありませんが、上記の著者は高速に動作するはずだと主張しています......。ユーモアがよくわからないのですが、なぜMQL4のiBarShift 関数をオーバーロードしたのでしょうか?そのため、コンパイラはおそらく混乱する。 iBarShift2関数はMQL5用に設計されており、MQL4では標準関数との比較で実行の正しさを検証するのみであった。 Konstantin Nikitin 2018.03.30 13:28 #44 Nikolai Semko:ユーモアがわからないのですが、なぜMQL4のiBarShift関数をオーバーロードしたのでしょうか?そのため、コンパイラはおそらく混乱する。誰もキャンセルしていない #ifdef __MQL5__ /**************************/ #else /**************************/ #endif そして、混乱はあってはならないことです。 Aleksey Vyazmikin 2018.03.30 13:30 #45 Nikolai Semko:ユーモアがわからないのですが、なぜMQL4のiBarShift関数をオーバーロードしたのでしょうか?そのため、コンパイラが混乱することがあります。 iBarShift2関数はMQL5用に設計されており、MQL4では標準関数と比較しながら、実行の正しさをテストするだけでした。私は注意していなかったに違いないが、私は再びあなたの記事を見た - すなわち、MT4のためのあなたの機能?ただ、トピックがMT5についてだったので、そこが誤解を招いたようです。 追記:くっそー、またコード見つけた!ブレブレだ、申し訳ない。 Nikolai Semko 2018.03.30 13:52 #46 Aleksey Vyazmikin:私は注意していなかったに違いないが、私は再びあなたの記事を見た - すなわち、MT4のためのあなたの機能?ただ、トピックがMT5についてだったので、そこが誤解を招いたようです。 追記:しまった、これだ!別のコードを発見!全部ボケてしまいました、すみません。すごい。いいえ。MQL5であなたのコードを試しましたが、混乱しました。今なら意味がわかります。 ここで面白い写真があります。 TF=1 Dayのネイティブ環境でスクリプトが実行されれば、すべてOKです。 しかし、別のTFで実行すると、信じられないほど不釣り合いなラグが発生します。これはまだ説明できませんが、コンパイラに何らかのバグがあるようです。 同時に、デバッグモードやプロファイリングモードでは、これらのブレーキはありません! これから実験して、ブレーキの原因を探します。 Alexey Viktorov 2018.03.30 14:27 #47 Nikolai Semko:おっといいえ。MQL5であなたのコードを試しましたが、混乱しました。おっしゃることがよくわかりました。 ここで面白い写真があります。 TF=1 Dayのネイティブ環境でスクリプトが実行されれば、すべてOKです。 しかし、別のTFで実行すると、信じられないほど不釣り合いなラグが発生します。これはまだ説明できませんが、コンパイラに何らかのバグがあるようです。 同時に、デバッグモードやプロファイリングモードでは、これらのブレーキはありません! これから実験して、ブレーキの原因を探します。通常のdatetimeの値を代入して検索を開始します。 Res=::Bars(Symb,TimeFrame,time,UINT_MAX)-1; Nikolai Semko 2018.03.30 16:25 #48 Aleksey Vyazmikin:なぜこんなにスクリプトが遅いのですか?そうですね、意外です。 ブレーキの位置を定位しました。 //+------------------------------------------------------------------+ //| iBarShift.mq5 | //| Copyright 2017, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2017, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict #property script_show_inputs input ENUM_TIMEFRAMES TF=PERIOD_D1; input int Bar=3; input int calcN=1; //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { for(int index=0;index<calcN;index++) { Print("0"); datetime T=iTime(_Symbol,PERIOD_CURRENT,index); Print("00 "+ TimeToString(T)); int Day_Shift=iBarShift(_Symbol,TF,T,false); Print("1"); int Start=iBarShift(_Symbol,PERIOD_CURRENT,iTime(_Symbol,TF,Bar+Day_Shift),false); Print("2"); int Stop=iBarShift(_Symbol,PERIOD_CURRENT,iTime(_Symbol,TF,Day_Shift),false); Print("3"); if(index<3)Print("1 Start=",Start," Stop=",Stop," Day_Shift=",Day_Shift," index=",index); Print("4"); if(index<3)Print("1 Start=",TimeToString(iTime(_Symbol,TF,Bar+Day_Shift),TIME_DATE|TIME_MINUTES), " Stop=",TimeToString(iTime(_Symbol,TF,Day_Shift),TIME_DATE|TIME_MINUTES), " Day_Shift=",TimeToString(iTime(_Symbol,PERIOD_CURRENT,index),TIME_DATE|TIME_MINUTES)," index=",index); } Print("5"); } //+------------------------------------------------------------------+ //| Получим iBarShift для заданного номера бара | //+------------------------------------------------------------------+ int iBarShift(const string Symb,const ENUM_TIMEFRAMES TimeFrame,datetime time,bool exact=false) { static int Res=-1; static string LastSymb=NULL; static ENUM_TIMEFRAMES LastTimeFrame=0; static datetime LastTime=0; if((time!=LastTime) || (Symb!=LastSymb) || (TimeFrame!=LastTimeFrame)) { Print("10"); Res=::Bars(Symb,TimeFrame,time,UINT_MAX)-1; Print("11"); if(Res<0) Res=0; LastTime = time; LastSymb = Symb; LastTimeFrame=TimeFrame; } return(Res); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ datetime iTime(string symbol,ENUM_TIMEFRAMES tf,int index) { if(index < 0) return(-1); datetime Arr[]; if(CopyTime(symbol,tf,index,1,Arr)>0) return(Arr[0]); else return(-1); } //+------------------------------------------------------------------+ このスクリプトを、例えばH4で実行した場合 にアクセスすると、最初に Res=::Bars(Symb,TimeFrame,time,UINT_MAX)-1; フリーズしてしまう。 そしてこの呆けは、プロファイリングやデバッグの時にはありません。 サービス デスクの明確な課題 Nikolai Semko 2018.03.30 21:12 #49 Aleksey Vyazmikin:なぜこんなにスクリプトが遅いのですか? 2018.03.30 09:21:05.208 BS (Si Splice,H4) 1 Start=15 Stop=3 Day_Shift=0 index=02018.03.30 09:21:05.208 BS (Si Splice,H4) 1 Start=2018.03.26 00:00 Stop=2018.03.29 00:00 Day_Shift=2018.03.29 20:00 index=02018.03.30 09:21:20.209 BS (Si Splice,H4) 2 Start=15 Stop=3 Day_Shift=0 index=02018.03.30 09:21:20.209 BS (Si Splice,H4) 2 Start=2018.03.26 00:00 Stop=2018.03.29 00:00 Day_Shift=2018.03.29 20:00 index=0 2018.03.30 09:20:49.300 Scripts script BS (Si Splice,H4) loaded successfully 2018.03.30 09:21:20.209 Scripts script BS (Si Splice,H4) removed Alexeyさん、ご指摘ありがとうございます。 これは、Bars()関数の明らかなバグです。バグ、バグ、クエリの スレッドに質問 を開設しました。 Aleksey Vyazmikin 2018.03.30 21:57 #50 Nikolai Semko:Alexeyさん、ご指摘ありがとうございます。 これは、Bars()関数の明らかなバグです。バグ、バグ、クエリの スレッドに質問 を開設しました。分析ありがとうございます!まだ完全に狂っているわけではありませんが...。 123456789101112...17 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
なぜこんなにスクリプトが遅いのですか?
その答えはプロファイラーに ある。
その答えはプロファイラーに ある。
OK、プロファイラーはこのコード片を参照しています。
何が気に入らないのでしょうか?この機能は私のものではありませんが、上の作者は早く動くはずだと主張しています...。
OK、プロファイラーはこのコード片を参照しています。
そして、何が気に入らないのか?この機能は私のものではありませんが、上記の著者は高速に動作するはずだと主張しています......。
ユーモアがよくわからないのですが、なぜMQL4のiBarShift 関数をオーバーロードしたのでしょうか?そのため、コンパイラはおそらく混乱する。
iBarShift2関数はMQL5用に設計されており、MQL4では標準関数との比較で実行の正しさを検証するのみであった。
ユーモアがわからないのですが、なぜMQL4のiBarShift関数をオーバーロードしたのでしょうか?そのため、コンパイラはおそらく混乱する。
誰もキャンセルしていない
そして、混乱はあってはならないことです。
ユーモアがわからないのですが、なぜMQL4のiBarShift関数をオーバーロードしたのでしょうか?そのため、コンパイラが混乱することがあります。
iBarShift2関数はMQL5用に設計されており、MQL4では標準関数と比較しながら、実行の正しさをテストするだけでした。
私は注意していなかったに違いないが、私は再びあなたの記事を見た - すなわち、MT4のためのあなたの機能?ただ、トピックがMT5についてだったので、そこが誤解を招いたようです。
追記:くっそー、またコード見つけた!ブレブレだ、申し訳ない。
私は注意していなかったに違いないが、私は再びあなたの記事を見た - すなわち、MT4のためのあなたの機能?ただ、トピックがMT5についてだったので、そこが誤解を招いたようです。
追記:しまった、これだ!別のコードを発見!全部ボケてしまいました、すみません。
すごい。いいえ。MQL5であなたのコードを試しましたが、混乱しました。今なら意味がわかります。
ここで面白い写真があります。
TF=1 Dayのネイティブ環境でスクリプトが実行されれば、すべてOKです。
しかし、別のTFで実行すると、信じられないほど不釣り合いなラグが発生します。これはまだ説明できませんが、コンパイラに何らかのバグがあるようです。
同時に、デバッグモードやプロファイリングモードでは、これらのブレーキはありません!
これから実験して、ブレーキの原因を探します。
おっといいえ。MQL5であなたのコードを試しましたが、混乱しました。おっしゃることがよくわかりました。
ここで面白い写真があります。
TF=1 Dayのネイティブ環境でスクリプトが実行されれば、すべてOKです。
しかし、別のTFで実行すると、信じられないほど不釣り合いなラグが発生します。これはまだ説明できませんが、コンパイラに何らかのバグがあるようです。
同時に、デバッグモードやプロファイリングモードでは、これらのブレーキはありません!
これから実験して、ブレーキの原因を探します。
通常のdatetimeの値を代入して検索を開始します。
なぜこんなにスクリプトが遅いのですか?
そうですね、意外です。
ブレーキの位置を定位しました。
このスクリプトを、例えばH4で実行した場合
にアクセスすると、最初に
フリーズしてしまう。
そしてこの呆けは、プロファイリングやデバッグの時にはありません。
サービス デスクの明確な課題
なぜこんなにスクリプトが遅いのですか?
2018.03.30 09:21:05.208 BS (Si Splice,H4) 1 Start=15 Stop=3 Day_Shift=0 index=0
2018.03.30 09:21:05.208 BS (Si Splice,H4) 1 Start=2018.03.26 00:00 Stop=2018.03.29 00:00 Day_Shift=2018.03.29 20:00 index=0
2018.03.30 09:21:20.209 BS (Si Splice,H4) 2 Start=15 Stop=3 Day_Shift=0 index=0
2018.03.30 09:21:20.209 BS (Si Splice,H4) 2 Start=2018.03.26 00:00 Stop=2018.03.29 00:00 Day_Shift=2018.03.29 20:00 index=0
2018.03.30 09:20:49.300 Scripts script BS (Si Splice,H4) loaded successfully
2018.03.30 09:21:20.209 Scripts script BS (Si Splice,H4) removedAlexeyさん、ご指摘ありがとうございます。
これは、Bars()関数の明らかなバグです。
バグ、バグ、クエリの スレッドに質問 を開設しました。
Alexeyさん、ご指摘ありがとうございます。
これは、Bars()関数の明らかなバグです。
バグ、バグ、クエリの スレッドに質問 を開設しました。
分析ありがとうございます!まだ完全に狂っているわけではありませんが...。