エラー、バグ、質問 - ページ 2589 1...258225832584258525862587258825892590259125922593259425952596...3185 新しいコメント Ilyas 2019.10.09 07:38 #25881 fxsaber: ArrayResizeについて質問です。数ギガバイト分を一度にリザーブしておく。そして、初期Reserveより少ないSizeを徐々に増やしていく。 サイズアップ時にTaskManagerにメモリ消費量の増加が表示されるのはなぜですか? OSの機能として、あえて何もしていないのです(それに、ユーザーは本当にギガバイトを必要としているのでしょうか? プログラムの重要なポイントでホットメモリを確保したい場合、そのポイントより前に割り当てられたチャンクのページを「実行」して、プロセスの仮想メモリページが物理メモリを取得するようにしなければなりません。 しかし、MQLからは、配列の予約されたチャンクにアクセスすることはできません。 fxsaber 2019.10.09 08:07 #25882 Ilyas:このためにわざわざ何かをするわけではありません。OSの機能です(それに、ユーザーは本当にギガバイトを必要としているのでしょうか? プログラムの重要なポイントで「ホット」メモリを確保したい場合、そのポイントの前に割り当てられたチャンクのページを「実行」し、プロセスの仮想メモリページが物理的なページを取得するようにしなければなりません。 しかし、MQLからは、配列の予約されたチャンクにアクセスすることはできません。 ありがとうございます。ギガバイト単位のArrayResizeを 一度に行った場合、パフォーマンスにどのような影響があるのでしょうか。 Igor Makanu 2019.10.09 10:46 #25883 void OnStart() { datetime m_stoptime = 0; //1. if(m_stoptime < TimeCurrent()) { //расчеты } //2. MqlTick last_tick; if(SymbolInfoTick(_Symbol, last_tick)) { if(m_stoptime < last_tick.time) { //расчеты } } //3. const int start = 0; const int count = 1; datetime time[1]; if(CopyTime(_Symbol,PERIOD_M1,start,count,time)>0) { if(m_stoptime < time[0]) { //расчеты } } } テストでは、5000パスで私のEAを最適化 しながらフルオーバーシュートを実行し、テスターのログからだけでカウントされます。 1.14:04:28.365 - 14:15:47.481 = 11 m 19 秒 2.13:49:56.885 - 14:00:30.819 = 10 m 34 sec. 3.14:28:35.89 - 14:41:11.659 = 12 m 36 sec 原理的には、予想通りオプション2の方が速く、5000回の実行で約30秒のゲインであり、これもかなり良い。 fxsaber 2019.10.10 08:43 #25884 WinAPIでこのメニューを呼び出す方法を教えてください。 選択したEA名の行は取得できる。ComboBoxはMT4と違い、1行しかありません。 でも、メニューは呼べない。BM_CLICKが機能しない。 x64でメッセージはどのように使うのですか? WM_LBUTTONDOWNを使用して問題を解決しました。 fxsaber 2019.10.10 10:05 #25885 ゼロスタティックというのは間違いなのか、そうでないのか。int Array0[] = {}; 削除済み 2019.10.10 14:02 #25886 モバイル端末で、地下にあるインディケータを直接チャートに適用するオプションはありますか? fxsaber 2019.10.10 14:40 #25887 Igor Makanu: 基本的には予想通りオプション2の方が速く、5000パスで約30秒の差となり、こちらも悪くない。 同じような結果がまとまるスレッドがあるといいと思います。For the Optimizerが関係しています。 Igor Makanu 2019.10.10 14:54 #25888 fxsaber:同じような結果が集まる支店があってもいいと思う。オプティマイザーに関連することです。 私はそれを支持します。何もないところでテストして結果を掲載するのは、今に始まったことではありませんから が、支店を出すのはまだ早い...教育が悪い、責任感で圧倒される、話題は常に最新に...。とはいきませんね(( ZS: 上の例に倣うと...。昨日は、例2 SymbolInfoTick()からSymbolInfoInteger(_Symbol, SYMBOL_TIME) で、このスレッドを再度書くことにしたわけではありません。 ZZZY:私が使用する例です、それは5分のサンプルレートと時間を探すためにオプティマイザで私のためのより便利です - 少ないパス、そうオプティマイザの時間は一般的にushortで2バイトを作った、もし0 - その後このオプションは使用されません、私はより持って - バイトで作業する方法を確認するが、今ではない - 私の例ではOnInit()私はバイトを分割 - しない重要である。 class CWorkTime { private: int m_starthour, m_stophour, m_startmin, m_stopmin; datetime m_starttime, m_stoptime; bool UseThisSession, NotIntraDay; void setTodayWorkTime(); public: void CWorkTime(const ushort worktime); bool Disable(); }; //+------------------------------------------------------------------+ void CWorkTime::CWorkTime(const ushort worktime): UseThisSession(true) { union UShortToByte { ushort u_short; uchar byte[2]; } ShortToByte; if(worktime == 0) { UseThisSession = false; Print("EA working time is not used"); } else { ShortToByte.u_short = worktime; int t = (int)(ShortToByte.byte[0] * 5.625); m_starthour = (int)(t / 60); m_startmin = t % 60; t = (int)(ShortToByte.byte[1] * 5.625); m_stophour = (int)(t / 60); m_stopmin = t % 60; NotIntraDay = m_starthour > m_stophour ? true : false; setTodayWorkTime(); printf("EA working time start: %d h %d min , end: %d h %d min", m_starthour, m_startmin, m_stophour, m_stopmin); } } //+------------------------------------------------------------------+ void CWorkTime::setTodayWorkTime() { MqlDateTime dtstart, dtstop; TimeCurrent(dtstart); dtstop = dtstart; dtstart.hour = m_starthour; dtstart.min = m_startmin; dtstop.hour = m_stophour; dtstop.min = m_stopmin; m_starttime = StructToTime(dtstart); m_stoptime = StructToTime(dtstop); if(NotIntraDay) m_stoptime += 86400; } //+------------------------------------------------------------------+ bool CWorkTime::Disable(void) { bool result = false; if(UseThisSession) { datetime time = (datetime)SymbolInfoInteger(_Symbol, SYMBOL_TIME); if(m_stoptime < time) setTodayWorkTime(); result = time >= m_starttime && time <= m_stoptime ? false : true; } return(result); }; //+------------------------------------------------------------------+ を使用します。 int OnInit() { WorkTime=new CWorkTime(EA_Time); } void OnTick() { bool DisableTradingByTime=WorkTime.Disable(); ..... if(DisableTradingByTime) return; すなわち、Disable()メソッドの結果 - très not working time, falce - working Artyom Trishkin 2019.10.10 14:58 #25889 fxsaber: 同じような結果が集まる支店があってもいいと思う。オプティマイザーに関連するものです。 似たようなものがありますね。 Алгоритмы, методы решений, сравнение их производительности 2017.12.10www.mql5.com В данной ветке будем обсуждать разные способы решения тех, или иных задач, сравнивать производительность предложенных решений... Alain Verleyen 2019.10.10 19:28 #25890 SocketTlsReadAvailable () が、SocketIsConnected () が true を返したのに、なぜエラー (5273 ERR_NETSOCKET_IO_ERROR) を返すのか、詳細を教えてください。 トレーディング、自動売買システム、ストラテジーテストに関するフォーラム バグ、バグ、質問 アラン・ヴェルレーエン 2019.08.29 01:17 mql SocketXXX関数()について このメッセージは主にMetaquotesの開発者向けに書かれています。Renat Fatkhullinさん、 Slavaさん、 Ilyasさん 私は以下のコードを使って、セキュアな接続でメッセージの受信を制御しています。 int socket; //+------------------------------------------------------------------+ //| void OnTimer() | //+------------------------------------------------------------------+ void OnTimer() { string message; if(receive(message)) { //--- ... } } //+------------------------------------------------------------------+ //| Call every X ms | //+------------------------------------------------------------------+ bool receive(string &message) { //--- ... char response[]; message=""; ResetLastError(); uint len=SocketIsReadable(socket); if(len>1) { int read=SocketTlsReadAvailable(socket,response,len); //--- analyze the response if(read>0) { //--- ... message=CharArrayToString(response,0,read); return(true); } else if(read==-1) { if(SocketIsConnected(socket)) { printf("ERROR: %i, socket(%i) read: len=%i",_LastError,socket,len); } else { printf("ERROR: %i, socket(%i) not connected. len=%i",_LastError,socket,len); //--- ... } } } else { if(_LastError!=0) printf("ERROR: %i (SocketIsReadable).",_LastError); } //--- ... return(false); } ほとんどの場合、正しく動作します。しかし、時々、ソケットは接続されているのに、エラーメッセージが表示され、しばらくすると(1〜5/6のエラー)、動作し続けるのです。 ...データ/メッセージを正しく受信する 2019.08.29 00:45:43.019XXXX(EURUSD、H1)ERROR:5273、ソケット(1)、読み取り:LEN = 437 2019.08.29 00:45:43.237XXXX(EURUSD、H1)ERROR:5273、ソケット(1)、読み取り:LEN = 1242 ...データ/メッセージを正しく受信する 5273エラーは非常によくあるもので、あまり役に立ちません。このようなエラーについて、もっと情報を得ることはできないのでしょうか? Errors, bugs, questions 1...258225832584258525862587258825892590259125922593259425952596...3185 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
ArrayResizeについて質問です。数ギガバイト分を一度にリザーブしておく。そして、初期Reserveより少ないSizeを徐々に増やしていく。
サイズアップ時にTaskManagerにメモリ消費量の増加が表示されるのはなぜですか?
OSの機能として、あえて何もしていないのです(それに、ユーザーは本当にギガバイトを必要としているのでしょうか?
プログラムの重要なポイントでホットメモリを確保したい場合、そのポイントより前に割り当てられたチャンクのページを「実行」して、プロセスの仮想メモリページが物理メモリを取得するようにしなければなりません。
しかし、MQLからは、配列の予約されたチャンクにアクセスすることはできません。
このためにわざわざ何かをするわけではありません。OSの機能です(それに、ユーザーは本当にギガバイトを必要としているのでしょうか?
プログラムの重要なポイントで「ホット」メモリを確保したい場合、そのポイントの前に割り当てられたチャンクのページを「実行」し、プロセスの仮想メモリページが物理的なページを取得するようにしなければなりません。
しかし、MQLからは、配列の予約されたチャンクにアクセスすることはできません。
ありがとうございます。ギガバイト単位のArrayResizeを 一度に行った場合、パフォーマンスにどのような影響があるのでしょうか。
テストでは、5000パスで私のEAを最適化 しながらフルオーバーシュートを実行し、テスターのログからだけでカウントされます。
1.14:04:28.365 - 14:15:47.481 = 11 m 19 秒
2.13:49:56.885 - 14:00:30.819 = 10 m 34 sec.
3.14:28:35.89 - 14:41:11.659 = 12 m 36 sec
原理的には、予想通りオプション2の方が速く、5000回の実行で約30秒のゲインであり、これもかなり良い。
WinAPIでこのメニューを呼び出す方法を教えてください。
選択したEA名の行は取得できる。ComboBoxはMT4と違い、1行しかありません。
でも、メニューは呼べない。BM_CLICKが機能しない。
x64でメッセージはどのように使うのですか?
WM_LBUTTONDOWNを使用して問題を解決しました。
int Array0[] = {};
基本的には予想通りオプション2の方が速く、5000パスで約30秒の差となり、こちらも悪くない。
同じような結果がまとまるスレッドがあるといいと思います。For the Optimizerが関係しています。
同じような結果が集まる支店があってもいいと思う。オプティマイザーに関連することです。
私はそれを支持します。何もないところでテストして結果を掲載するのは、今に始まったことではありませんから
が、支店を出すのはまだ早い...教育が悪い、責任感で圧倒される、話題は常に最新に...。とはいきませんね((
ZS: 上の例に倣うと...。昨日は、例2 SymbolInfoTick()からSymbolInfoInteger(_Symbol, SYMBOL_TIME) で、このスレッドを再度書くことにしたわけではありません。
ZZZY:私が使用する例です、それは5分のサンプルレートと時間を探すためにオプティマイザで私のためのより便利です - 少ないパス、そうオプティマイザの時間は一般的にushortで2バイトを作った、もし0 - その後このオプションは使用されません、私はより持って - バイトで作業する方法を確認するが、今ではない - 私の例ではOnInit()私はバイトを分割 - しない重要である。
を使用します。
すなわち、Disable()メソッドの結果 - très not working time, falce - working
同じような結果が集まる支店があってもいいと思う。オプティマイザーに関連するものです。
SocketTlsReadAvailable () が、SocketIsConnected () が true を返したのに、なぜエラー (5273 ERR_NETSOCKET_IO_ERROR) を返すのか、詳細を教えてください。
トレーディング、自動売買システム、ストラテジーテストに関するフォーラム
バグ、バグ、質問
アラン・ヴェルレーエン 2019.08.29 01:17
mql SocketXXX関数()について このメッセージは主にMetaquotesの開発者向けに書かれています。Renat Fatkhullinさん、 Slavaさん、 Ilyasさん
私は以下のコードを使って、セキュアな接続でメッセージの受信を制御しています。
ほとんどの場合、正しく動作します。しかし、時々、ソケットは接続されているのに、エラーメッセージが表示され、しばらくすると(1〜5/6のエラー)、動作し続けるのです。
...データ/メッセージを正しく受信する
2019.08.29 00:45:43.019XXXX(EURUSD、H1)ERROR:5273、ソケット(1)、読み取り:LEN = 437
2019.08.29 00:45:43.237XXXX(EURUSD、H1)ERROR:5273、ソケット(1)、読み取り:LEN = 1242
...データ/メッセージを正しく受信する
5273エラーは非常によくあるもので、あまり役に立ちません。このようなエラーについて、もっと情報を得ることはできないのでしょうか?