エラー、バグ、質問 - ページ 1593 1...158615871588158915901591159215931594159515961597159815991600...3185 新しいコメント Vladimir Pastushak 2016.06.02 15:52 #15921 スマートフォンやLC、μlサイトのトップページに製品回収のメッセージが表示されない。 Yury Kirillov 2016.06.02 17:07 #15922 魔法のスクリプトは時間を逆行させる ;-) Vladislav Andruschenko 2016.06.02 17:11 #15923 Vladimir Pastushak: スマートフォンに製品レビューのメッセージが表示されるが、LCやmclサイトのトップには表示されない。 昔からそうなんですが、感想を残すとおかしいから載せてくれとまで言われた記憶がありますし、すぐに質問されても2ヶ月経ってから気づくということもありますね。:-) Alexey Volchanskiy 2016.06.03 08:48 #15924 バグではないけれど、共有せずにはいられないライティングif((!IsRunOnTester() && TimeCurrent() >= D'2016.06.31 23:59'))// для тестировщиков, ограничение работы по времениコンパイラが警告を出す無効な日付 *****.mq4 115 46文字列の日付が有効かどうかもチェックされるんですね、ショックです )(6月30日) Andriy Voitenko 2016.06.03 10:46 #15925 どうやら誰も気にしていないようですが、また書きますね。実際の作業は、空きメモリの100%程度の合計サイズの配列を作り、そこに素早く数値を詰め、計算を行い、解放することである。で空きメモリサイズを取得するようにしています。int mem_free_mb=(int)TerminalInfoInteger(TERMINAL_MEMORY_AVAILABLE);結果:23987MB、私の物理メモリは12141MB、つまり半分の量です。この図は火星人のものだと理解しているのですが、それでも信じてスクリプトを書いて検証しています。//+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { #define PARTS 5 srand(GetTickCount()); //--- int mem_free_mb=(int)TerminalInfoInteger(TERMINAL_MEMORY_AVAILABLE); //mem_free_mb=5300;//<--- Столько показывает 'Доступной' в диспетчере задач. long mem_for_calc=(long)((double)mem_free_mb*1024*1024); long mem_one_part=(long)floor((double)mem_for_calc/PARTS); if(mem_one_part>=INT_MAX-1) mem_one_part=INT_MAX-1; //--- printf("Memory for calc: %0.f MB, parts: %d, part: %0.f MB",mem_for_calc/1024/1024,PARTS,mem_one_part/1024/1024); char array1[]; char array2[]; char array3[]; char array4[]; char array5[]; int res=ArrayResize(array1,(int)mem_one_part); Print("Array1 Resize: ",res); if(res<1)return; printf("Reserved: %0.f MB",1.0*mem_one_part/1024/1024); res=ArrayResize(array2,(int)mem_one_part); Print("Array2 Resize: ",res); if(res<1)return; printf("Reserved: %0.f MB",2.0*mem_one_part/1024/1024); res=ArrayResize(array3,(int)mem_one_part); Print("Array3 Resize: ",res); if(res<1)return; printf("Reserved: %0.f MB",3.0*mem_one_part/1024/1024); res=ArrayResize(array4,(int)mem_one_part); Print("Array4 Resize: ",res); if(res<1)return; printf("Reserved: %0.f MB",4.0*mem_one_part/1024/1024); res=ArrayResize(array5,(int)mem_one_part); Print("Array5 Resize: ",res); if(res<1)return; printf("Reserved: %0.f MB",5.0*mem_one_part/1024/1024); uint gtc=GetTickCount(); for(int i=0;i<mem_one_part;i++) { char ch=(char)rand(); array1[i]=ch; array2[i]=ch; array3[i]=ch; array4[i]=ch; array5[i]=ch; } //--- printf("Spent time: %d ms",GetTickCount()-gtc); }メモリがなくなったので、array3 を割り当てることはできません」という論理的な結果を得ました。そして、現在使用可能なメモリ量を指定する行をアンコメントします。mem_free_mb=5300;//<--- Столько показывает 'Доступной' в диспетчере задач.その後、スクリプトは正常に実行されます。開発者の方々の迷惑にならないようにしたいのですが、メモリがどれだけ使えるかは重要です。TerminalInfoIntegerで 知ることができるようにしてください。 Slava 2016.06.03 11:11 #15926 ほとんどの場合、利用可能なすべてのメモリを取り出すことができないことをご存知ですか?メモリの断片化というものがあります。すべてのメモリを5つのフラグメントに分割することにしましたが、システムには必要なサイズの、途切れることのないメモリのフラグメントが1つもありません。 Andriy Voitenko 2016.06.03 11:33 #15927 Slawa:ほとんどの場合、利用可能なすべてのメモリを取り出すことができないことをご存知ですか?メモリの断片化という考え方があります。あなたはすべてのメモリを5つのフラグメントに分割することに決めました。しかし、システムにはあなたが必要とするサイズの連続したメモリフラグメントが1つもありません。1.TERMINAL_MEMORY_AVAILABLE パラメータが物理的に何を意味するのか、まず知ることができますか?2.フラグメントについては、プログラマではなく、Windowsのメモリマネージャが処理すべきものだと思います。例えば、利用可能なメモリの50%を使いたいなど、ある瞬間にどれくらい使えるかを知る必要があります。もう一つの実作業は、CopyTicksのリクエストです。利用可能なメモリより多くのティックを要求すると、「メモリ不足」になります。 coderex 2016.06.03 11:58 #15928 Andrey Voytenko:もう一つ、本当に難しいのはCopyTicksのリクエストです。利用可能なメモリより多くのティックを要求すると、「メモリ不足」になります。 または、データをファイルにアンロードし、そこから必要なセグメントを取り出す。 Andriy Voitenko 2016.06.03 12:38 #15929 coderex: あるいは、データをファイルにアップロードして、そこから必要なセグメントを取り出すことも可能です私にしては遅いな。すべて記憶で行いたい。実は今やっているのですが、利用可能なメモリのサイズを知るためにGlobalMemoryStatusExを呼び出す必要があるんです。 Alexey Navoykov 2016.06.03 12:58 #15930 Andrey Voytenko:この問題は、最初から何も知らないクラウドエージェントで最適化する場合に特に深刻です。 MQLでもWinApiでも(DLL呼び出しが禁止されているため)、そこで利用できるメモリの本当の量を判断することはできません。TERMINAL_MEMORY_AVAILABLEの実用的な意味は何なのでしょうか? 幸せにも不幸にもならないのに、なぜ導入するのでしょうか? 1...158615871588158915901591159215931594159515961597159815991600...3185 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
魔法のスクリプトは時間を逆行させる ;-)
スマートフォンに製品レビューのメッセージが表示されるが、LCやmclサイトのトップには表示されない。
バグではないけれど、共有せずにはいられない
ライティング
コンパイラが警告を出す
無効な日付 *****.mq4 115 46
文字列の日付が有効かどうかもチェックされるんですね、ショックです )(6月30日)
どうやら誰も気にしていないようですが、また書きますね。
実際の作業は、空きメモリの100%程度の合計サイズの配列を作り、そこに素早く数値を詰め、計算を行い、解放することである。
で空きメモリサイズを取得するようにしています。
結果:23987MB、私の物理メモリは12141MB、つまり半分の量です。
この図は火星人のものだと理解しているのですが、それでも信じてスクリプトを書いて検証しています。
メモリがなくなったので、array3 を割り当てることはできません」という論理的な結果を得ました。
そして、現在使用可能なメモリ量を指定する行をアンコメントします。
その後、スクリプトは正常に実行されます。
開発者の方々の迷惑にならないようにしたいのですが、メモリがどれだけ使えるかは重要です。
TerminalInfoIntegerで 知ることができるようにしてください。
ほとんどの場合、利用可能なすべてのメモリを取り出すことができないことをご存知ですか?
メモリの断片化というものがあります。すべてのメモリを5つのフラグメントに分割することにしましたが、システムには必要なサイズの、途切れることのないメモリのフラグメントが1つもありません。
ほとんどの場合、利用可能なすべてのメモリを取り出すことができないことをご存知ですか?
メモリの断片化という考え方があります。あなたはすべてのメモリを5つのフラグメントに分割することに決めました。しかし、システムにはあなたが必要とするサイズの連続したメモリフラグメントが1つもありません。
1.TERMINAL_MEMORY_AVAILABLE パラメータが物理的に何を意味するのか、まず知ることができますか?
2.フラグメントについては、プログラマではなく、Windowsのメモリマネージャが処理すべきものだと思います。
例えば、利用可能なメモリの50%を使いたいなど、ある瞬間にどれくらい使えるかを知る必要があります。
もう一つの実作業は、CopyTicksのリクエストです。利用可能なメモリより多くのティックを要求すると、「メモリ不足」になります。
もう一つ、本当に難しいのはCopyTicksのリクエストです。利用可能なメモリより多くのティックを要求すると、「メモリ不足」になります。
あるいは、データをファイルにアップロードして、そこから必要なセグメントを取り出すことも可能です
私にしては遅いな。すべて記憶で行いたい。実は今やっているのですが、利用可能なメモリのサイズを知るためにGlobalMemoryStatusExを呼び出す必要があるんです。
この問題は、最初から何も知らないクラウドエージェントで最適化する場合に特に深刻です。 MQLでもWinApiでも(DLL呼び出しが禁止されているため)、そこで利用できるメモリの本当の量を判断することはできません。
TERMINAL_MEMORY_AVAILABLEの実用的な意味は何なのでしょうか? 幸せにも不幸にもならないのに、なぜ導入するのでしょうか?