mql5言語の特徴、微妙なニュアンスとテクニック - ページ 103 1...96979899100101102103104105106107108109110...247 新しいコメント Alexey Navoykov 2018.09.21 15:43 #1021 ニコライ・セムコただ、私が見たすべての実装はkernel32.dllを使用しているので、おそらくkernel32.dllの代わりにuser32.dllを使用すると、WinAPIを使用して2つのターミナルをリンクする際に速くなるかもしれないことを言いたかっただけです。まあ、あるライブラリからインポートする方が、他のライブラリからインポートするよりも速いという理由はないでしょう。 おそらく、現在のMQLのバージョンでは関係ないのでしょうが、私が昔のMQL4から覚えている限りでは、これらのコストはかなり大きく、時には関数の実行速度に匹敵することさえありました。 Nikolai Semko 2018.09.21 16:12 #1022 fxsaberはい。 ああ...まあ、私の気まぐれだと思ってください。 ただ、スピードが好きなんです。速い方が優先されますし、CPUの負荷が少ないので、リソースや判断する時間が増えるからです。 Andrey Khatimlianskii 2018.10.09 21:18 #1023 fxsaber: クイックマルチシンボル OnTick の実装50シンボルのスパイを使用して空のExpert Advisorを実行すると、ログにメッセージが蓄積され始める。 2018.10.09 22:49:24.730 Spy (AUDNZD,W1) indicator is too slow, 4281 ms. rewrite the indicator, please インジケータに500msのcastumイベント送信頻度のフィルターを追加すると、エラーは少なくなりますが、消えるわけではありません。 私だけでしょうか? EAコード #define ForEach(index,array) for(int index=0, max_##index=ArraySize(array); index<max_##index; index++) string Symbols[]; int OnInit() { ArrayResize( Symbols, SymbolsTotal(true) ); ForEach( i, Symbols ) { Symbols[i] = SymbolName(i,true); if( Symbols[i] != _Symbol ) iCustom( Symbols[i], PERIOD_W1, "Spy.ex5", ChartID(), i ); } return(INIT_SUCCEEDED); } void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { if( id == CHARTEVENT_CUSTOM ) OnTickMS( Symbols[ (int)lparam ] ); } void OnTick() { CheckSignal( _Symbol ); } void OnTickMS(const string &Symb) { CheckSignal( Symb ); } void CheckSignal(const string symbol) { //Comment( symbol, ": ", // DoubleToString( SymbolInfoDouble( symbol, SYMBOL_BID ), 5 ), " / ", // DoubleToString( SymbolInfoDouble( symbol, SYMBOL_ASK ), 5 ) ); return; } プロファイラでは、iCustomの時間が95%、OnChartEventの時間がほとんどかからないことがわかります。プロセッサー(i5-3570)は75%負荷がかかっています。 fxsaber 2018.10.09 21:35 #1024 Andrey Khatimlianskii: スパイを使用して空のEAを50の商品で実行すると、ログにメッセージが殺到します。私だけでしょうか? このようなミスを、最初のうちはいくつも見つけていました。それ以上は手に入れなかった。 プロファイラでは、iCustomの時間の95%がOnChartEventにかかり、ほとんど何もしていないことがわかります。CPU(i5-3570)の負荷は75%。リリース版ではCPUは~3%です。 Andrey Khatimlianskii 2018.10.09 22:12 #1025 fxsaber このようなミスを冒頭でいくつか発見しました。それ以上のクラッシュはありません。 リリース版ではCPUが3%程度。インジケーター、Expert Advisorともに「Optimize=1」でビルドしましたが、やはりエラーが発生します。 Andrey Khatimlianskii 2018.10.09 22:17 #1026 インジケーターに1秒間のポーズを追加しました。 int OnCalculate( const int rates_total, const int prev_calculated, const int, const double &[] ) { static datetime prev = 0; if ( TimeCurrent() <= prev ) return(rates_total); prev = TimeCurrent(); エラーは残っています。 Oleksii Chepurnyi 2018.10.10 06:08 #1027 インジケーター #property indicator_chart_window #property indicator_plots 0 input long Chart = 0; // идентификатор графика-получателя события input int Index = 0; ulong timer = GetMicrosecondCount(); //=================================================================== //| //+------------------------------------------------------------------ int OnCalculate( const int rates_total, const int prev_calculated, const int, const double &[] ) { if( GetMicrosecondCount() - timer < 1 e6 ) return( rates_total ); timer = GetMicrosecondCount(); if( prev_calculated ) { ResetLastError(); if( EventChartCustom( Chart, 0, Index, 0, NULL )) Print( GetMicrosecondCount() - timer ); else Print( (string)_LastError +" "+ (string)(GetMicrosecondCount() - timer) ); } return( rates_total ); } //+------------------------------------------------------------------ 電子ブック #property strict //+------------------------------------------------------------------ #define ForEach(index,array) for(int index=0, max_##index=ArraySize(array); index<max_##index; index++) //+------------------------------------------------------------------ string Symbols[]; //=================================================================== //| Expert initialization function //+------------------------------------------------------------------ int OnInit() { ArrayResize( Symbols, SymbolsTotal(true) ); ForEach( i, Symbols ) { Symbols[i] = SymbolName(i,true); if( Symbols[i] != _Symbol ) iCustom( Symbols[i], PERIOD_W1, "Spy.ex5", ChartID(), i ); // MQL5\Indicators\Spy.ex5 } return(INIT_SUCCEEDED); } //=================================================================== //| Expert deinitialization function //+------------------------------------------------------------------ void OnDeinit(const int reason) { ArrayFree( Symbols ); } //=================================================================== //| ChartEvent function //+------------------------------------------------------------------ void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { } //=================================================================== //| Expert tick function //+------------------------------------------------------------------ void OnTick() { } //+------------------------------------------------------------------ 一時停止を増やしても、あまり効果がありません。3秒でも崩れ始める。 原因不明ですが、ある時、EventChartCustomが 動作しなくなります。約3秒間停止し、エラー4001が発生する。 ファイル: 20181010.log 276 kb Andrey Khatimlianskii 2018.10.10 06:52 #1028 オレクシイ・チェプルーニインジケーター 電子ブック 一時停止を増やしても、あまり効果がありません。3秒でも崩れ始めた。 原因不明ですが、ある時、EventChartCustomが動かなくなります。約3秒間停止し、エラー4001が発生する。はい、それが問題のようです。 再生している方はいらっしゃいますか? fxsaber 2018.10.10 07:15 #1029 アンドレイ・ハチムリアンスキーまだ再生しているのでしょうか?違うんです。 #define ForEach(index,array) for(int index=0, max_##index=ArraySize(array); index<max_##index; index++) string Symbols[]; int Counter[]; int OnInit() { ArrayResize(Counter, ArrayResize( Symbols, SymbolsTotal(true) )); ArrayInitialize(Counter, 0); ForEach( i, Symbols ) { Symbols[i] = SymbolName(i,true); if( Symbols[i] != _Symbol ) if (iCustom( Symbols[i], PERIOD_W1, "Spy.ex5", ChartID(), i ) == INVALID_HANDLE) Alert(Symbols[i]); } return(INIT_SUCCEEDED); } void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { static int Count = 0; if( id == CHARTEVENT_CUSTOM ) { Counter[(int)lparam]++; string Str = (string)Count++ + "\nMarketWatch:"; for (int i = 0; i < ArraySize(Counter); i++) Str += "\n" + (string)i + ": " + Symbols[i] + " " + (string)Counter[i]; Comment(Str); } } 1時間の作業~フライトは普通です。 Andrey Khatimlianskii 2018.10.10 11:53 #1030 fxsaber再生不可 1時間の作業-フライトノーマル。市場レビューの楽器は何台? 1...96979899100101102103104105106107108109110...247 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
ただ、私が見たすべての実装はkernel32.dllを使用しているので、おそらくkernel32.dllの代わりにuser32.dllを使用すると、WinAPIを使用して2つのターミナルをリンクする際に速くなるかもしれないことを言いたかっただけです。
まあ、あるライブラリからインポートする方が、他のライブラリからインポートするよりも速いという理由はないでしょう。
おそらく、現在のMQLのバージョンでは関係ないのでしょうが、私が昔のMQL4から覚えている限りでは、これらのコストはかなり大きく、時には関数の実行速度に匹敵することさえありました。
はい。
ああ...まあ、私の気まぐれだと思ってください。
ただ、スピードが好きなんです。速い方が優先されますし、CPUの負荷が少ないので、リソースや判断する時間が増えるからです。
クイックマルチシンボル OnTick の実装
50シンボルのスパイを使用して空のExpert Advisorを実行すると、ログにメッセージが蓄積され始める。
インジケータに500msのcastumイベント送信頻度のフィルターを追加すると、エラーは少なくなりますが、消えるわけではありません。
私だけでしょうか?
EAコード
プロファイラでは、iCustomの時間が95%、OnChartEventの時間がほとんどかからないことがわかります。プロセッサー(i5-3570)は75%負荷がかかっています。
スパイを使用して空のEAを50の商品で実行すると、ログにメッセージが殺到します。
私だけでしょうか?
このようなミスを、最初のうちはいくつも見つけていました。それ以上は手に入れなかった。
プロファイラでは、iCustomの時間の95%がOnChartEventにかかり、ほとんど何もしていないことがわかります。CPU(i5-3570)の負荷は75%。
リリース版ではCPUは~3%です。
このようなミスを冒頭でいくつか発見しました。それ以上のクラッシュはありません。
リリース版ではCPUが3%程度。
インジケーター、Expert Advisorともに「Optimize=1」でビルドしましたが、やはりエラーが発生します。
インジケーターに1秒間のポーズを追加しました。
エラーは残っています。
インジケーター
電子ブック
一時停止を増やしても、あまり効果がありません。3秒でも崩れ始める。
原因不明ですが、ある時、EventChartCustomが 動作しなくなります。約3秒間停止し、エラー4001が発生する。
インジケーター
電子ブック
一時停止を増やしても、あまり効果がありません。3秒でも崩れ始めた。
原因不明ですが、ある時、EventChartCustomが動かなくなります。約3秒間停止し、エラー4001が発生する。
はい、それが問題のようです。
再生している方はいらっしゃいますか?
まだ再生しているのでしょうか?
違うんです。
1時間の作業~フライトは普通です。
再生不可
1時間の作業-フライトノーマル。
市場レビューの楽器は何台?