MT5とスピードの関係 - ページ 57 1...505152535455565758596061626364...94 新しいコメント fxsaber 2020.10.14 05:53 #561 Renat Fatkhullin:超並列アクセスの場合、1/10に高速化。その他の場合は、プロセッサー、メモリー、オペレーティングシステムのアップグレードのみ。 PMでは、同じマシンからログを比較します。 Renat Fatkhullin 2020.10.14 05:55 #562 fxsaber:これはCopyTicksの1回限りの呼び出しです。これは、OnInitでこれらのティックの仮想バックテストを作成し、その後、新鮮なティックのみを供給してリアルタイムでそれを継続するために行われます。妥協案として、OnInitで呼ばれるCopyTicksの直後にTerminal内のメモリを解放することを提案します。それなら、CopyTicksに強制冷却機能を導入する必要はない。今、スリープ版の冷却はとてもカクカクしています。しかし、この松葉杖がいかにメモリの節約になるかは、前述したとおりです。20のExpert Advisorが低速のVPSでも高速に動作することが判明しました。しかし、それらを起動させるのは重大な問題です。 少し前までは、あなた自身がストレステストをして、1ティックごとに 深いティックを即座に発行することを要求していましたね。 つまり、あなたも他の開発者の100%も、保留中のフルキャッシュリクエスト戦略を適用しており、今後も適用する予定です。その都度、よりコストのかかる、真正面からの専門家が書き込まれている。 ですから、決してキャッシュを廃止するのではなく、16〜32gbのメモリを搭載して、問題や遅延を忘れることを推奨しています。 VPSでの動作や経済性(512MB~1GBに抑える)については、全く気になりません。 fxsaber 2020.10.14 05:57 #563 Renat Fatkhullin:あなた自身、少し前までストレステストをしていて、実はすべてのティックで 即座に深いティックを要求していたんですね。つまり、あなたも他の開発者の100%も、保留中のフルキャッシュリクエスト戦略を適用しており、今後も適用する予定です。その都度、よりコストのかかる、真正面からの専門家が書き込まれている。ですから、決してキャッシュを廃止するのではなく、16〜32gbのメモリを搭載して、問題や遅延を忘れることを推奨しています。VPSでの動作や経済性(512mb~1gbに収まるように)は全く気にしない。 上記は私の投稿をコードで補足したものです。OnInitのことであって、他のことではないのです。Hot CopyTicksは非常に必要だが、OnInitにはない。 Andrey Khatimlianskii 2020.10.14 20:47 #564 fxsaber:妥協案として、OnInitでCopyTicksを呼び出した後、Terminalですぐにメモリを解放するようにすることを提案します。 どんな場合でもダメです! また、逆にOnInitでキャッシュを上げると、遅延なく作業できるようになるのでしょうか? 端末のキャッシュをアンロードする機能を導入した方が良い。 ティックだけでなく、時系列やインジケータにも必要です(5つのインストルメントと5つのTFに対して5Kを記述してみてください)。 レナート? fxsaber 2020.10.14 21:38 #565 Andrey Khatimlianskii:まさか!? OnInitでキャッシュを上げ、遅延なく作業できるようにしたらどうでしょうか? ティックキャッシュは10秒しか生きられない。 fxsaber 2020.10.16 22:08 #566 ティック履歴 スクリプトスクリーナー(ターミナルで動作する唯一のソフトウェア)は、5ヶ月分のクォートを取ると最大で6GBを食いつぶします。 マシンやインターネットが高速であればあるほど、メモリの負荷は大きくなります。例えば、端末の内部キャッシュは10秒間に数文字まで蓄積されます。 fxsaber 2020.10.19 19:54 #567 高速マシン、9人のアドバイザー。 2020.10.19 22:32:06.965 Bench_Stack = 3, 100 <= Time[NewTicks.mqh 33 in NEWTICKS::GetMarketWatchTick: ::SymbolInfoTick(_Symbol,Tick)] = 1229 mcs. 2020.10.19 22:33:23.727 Bench_Stack = 3, 100 <= Time[NewTicks.mqh 33 in NEWTICKS::GetMarketWatchTick: ::SymbolInfoTick(_Symbol,Tick)] = 1250 mcs. 2020.10.19 22:34:29.802 Bench_Stack = 3, 100 <= Time[NewTicks.mqh 33 in NEWTICKS::GetMarketWatchTick: ::SymbolInfoTick(_Symbol,Tick)] = 1281 mcs. 2020.10.19 22:35:58.747 Bench_Stack = 2, 100 <= Time[NewTicks.mqh 33 in NEWTICKS::GetMarketWatchTick: ::SymbolInfoTick(_Symbol,Tick)] = 1164 mcs. 2020.10.19 22:37:20.196 Bench_Stack = 3, 100 <= Time[NewTicks.mqh 33 in NEWTICKS::GetMarketWatchTick: ::SymbolInfoTick(_Symbol,Tick)] = 1045 mcs. 2020.10.19 22:38:24.920 Bench_Stack = 3, 100 <= Time[NewTicks.mqh 33 in NEWTICKS::GetMarketWatchTick: ::SymbolInfoTick(_Symbol,Tick)] = 1907 mcs. 2020.10.19 22:39:48.359 Bench_Stack = 3, 100 <= Time[NewTicks.mqh 33 in NEWTICKS::GetMarketWatchTick: ::SymbolInfoTick(_Symbol,Tick)] = 1387 mcs. 2020.10.19 22:40:03.623 Bench_Stack = 3, 100 <= Time[NewTicks.mqh 33 in NEWTICKS::GetMarketWatchTick: ::SymbolInfoTick(_Symbol,Tick)] = 1302 mcs. 2020.10.19 22:40:44.569 Bench_Stack = 3, 100 <= Time[NewTicks.mqh 33 in NEWTICKS::GetMarketWatchTick: ::SymbolInfoTick(_Symbol,Tick)] = 1271 mcs. 2020.10.19 22:41:09.393 Bench_Stack = 3, 100 <= Time[NewTicks.mqh 33 in NEWTICKS::GetMarketWatchTick: ::SymbolInfoTick(_Symbol,Tick)] = 1482 mcs. 2020.10.19 22:41:19.831 Bench_Stack = 3, 100 <= Time[NewTicks.mqh 33 in NEWTICKS::GetMarketWatchTick: ::SymbolInfoTick(_Symbol,Tick)] = 1024 mcs. 2020.10.19 22:41:19.975 Alert: Bench_Stack = 3, 100 <= Time[NewTicks.mqh 33 in NEWTICKS::GetMarketWatchTick: ::SymbolInfoTick(_Symbol,Tick)] = 8026 mcs. 2020.10.19 22:41:50.137 Bench_Stack = 2, 100 <= Time[NewTicks.mqh 33 in NEWTICKS::GetMarketWatchTick: ::SymbolInfoTick(_Symbol,Tick)] = 1040 mcs. 2020.10.19 22:42:05.876 Bench_Stack = 2, 100 <= Time[NewTicks.mqh 33 in NEWTICKS::GetMarketWatchTick: ::SymbolInfoTick(_Symbol,Tick)] = 1346 mcs. 2020.10.19 22:43:21.478 Bench_Stack = 3, 100 <= Time[NewTicks.mqh 33 in NEWTICKS::GetMarketWatchTick: ::SymbolInfoTick(_Symbol,Tick)] = 1523 mcs. 2020.10.19 22:43:21.557 Bench_Stack = 3, 100 <= Time[NewTicks.mqh 33 in NEWTICKS::GetMarketWatchTick: ::SymbolInfoTick(_Symbol,Tick)] = 1245 mcs. 2020.10.19 22:43:21.843 Alert: Bench_Stack = 3, 100 <= Time[NewTicks.mqh 33 in NEWTICKS::GetMarketWatchTick: ::SymbolInfoTick(_Symbol,Tick)] = 4675 mcs. 2020.10.19 22:43:21.854 Alert: Bench_Stack = 3, 100 <= Time[NewTicks.mqh 33 in NEWTICKS::GetMarketWatchTick: ::SymbolInfoTick(_Symbol,Tick)] = 7567 mcs. 2020.10.19 22:44:01.181 Bench_Stack = 3, 100 <= Time[NewTicks.mqh 33 in NEWTICKS::GetMarketWatchTick: ::SymbolInfoTick(_Symbol,Tick)] = 1052 mcs. 2020.10.19 22:44:33.124 Bench_Stack = 3, 100 <= Time[NewTicks.mqh 33 in NEWTICKS::GetMarketWatchTick: ::SymbolInfoTick(_Symbol,Tick)] = 2714 mcs. 2020.10.19 22:44:54.967 Alert: Bench_Stack = 3, 100 <= Time[NewTicks.mqh 33 in NEWTICKS::GetMarketWatchTick: ::SymbolInfoTick(_Symbol,Tick)] = 13626 mcs. 2020.10.19 22:45:07.561 Bench_Stack = 3, 100 <= Time[NewTicks.mqh 33 in NEWTICKS::GetMarketWatchTick: ::SymbolInfoTick(_Symbol,Tick)] = 2800 mcs. このようなラグをどう克服すればいいのかわからない。OnTickの実行中に新しいtickがあるかどうかを知る方法は、他に思いつきません。 fxsaber 2020.10.19 20:42 #568 fxsaber:OnTickが実行されている間、新しいtickがあることを知る ための他の方法は思いつきません。 3つの選択肢 // Идентификация нового тика bool IsNewTick_CopyRates() { static MqlRates PrevRates = {0}; MqlRates Rates[1]; const bool Res = (::CopyRates(_Symbol, PERIOD_CURRENT, 0, 1, Rates) == 1) && // (_R(PrevRates) != Rates[0]); // TypeToBytes.mqh ((Rates[0].time != PrevRates.time) || (Rates[0].tick_volume > PrevRates.tick_volume) || (Rates[0].close != PrevRates.close)); // Лишнее условие, но на всякий случай. if (Res) PrevRates = Rates[0]; return(Res); } // Идентификация нового тика bool IsNewTick_SymbolInfoTick() { static MqlTick PrevTick = {0}; MqlTick Tick; const bool Res = ::SymbolInfoTick(_Symbol, Tick) && // (_R(PrevTick) != Tick); // TypeToBytes.mqh ((PrevTick.time_msc != Tick.time_msc) || (PrevTick.bid != Tick.bid) || (PrevTick.ask != Tick.ask)); if (Res) PrevTick = Tick; return(Res); } // Идентификация нового тика bool IsNewTick_CopyTicks() { static MqlTick PrevTick = {0}; MqlTick Tick[1]; const bool Res = (::CopyTicks(_Symbol, Tick, COPY_TICKS_ALL, 0, 1) == 1) && // (_R(PrevTick) != Tick[0]); // TypeToBytes.mqh ((PrevTick.time_msc != Tick[0].time_msc) || (PrevTick.bid != Tick[0].bid) || (PrevTick.ask != Tick[0].ask)); if (Res) PrevTick = Tick[0]; return(Res); } #define PRINT(A) \ if (!A) \ Print(#A + " = false"); void OnTick() { PRINT(IsNewTick_CopyTicks()); // true PRINT(IsNewTick_SymbolInfoTick()); // true PRINT(IsNewTick_CopyRates()) // false } バーから新しいティックを識別しない方が良い。 fxsaber 2020.10.19 21:37 #569 CopyTicksがSymbolInfoTickにどれだけ遅れるかが明らかになりました。 // Замер длительности синхронизации CopyTicks и SymbolInfoTick. #include <TypeToBytes.mqh> // https://www.mql5.com/ru/code/16280 bool IsSynch() { MqlTick Tick; MqlTick Ticks[1]; return(SymbolInfoTick(_Symbol, Tick) && (CopyTicks(_Symbol, Ticks, COPY_TICKS_ALL, 0, 1) == 1) && (_R(Tick) == Ticks[0])); } ulong WaitSynch( int &Count ) { while (!IsStopped() && IsSynch()) Sleep(0); const ulong StartTime = GetMicrosecondCount(); Count = 0; while (!IsStopped() && !IsSynch()) Count++; return(GetMicrosecondCount() - StartTime); } void OnTick() { int Count; const uint StartTime = GetTickCount(); while (GetTickCount() - StartTime < 10000) Print("Cинхронизация CopyTicks и SymbolInfoTick длилась " + (string)(WaitSynch(Count) / 1000) + " ms., число проверок = " + (string)Count); }結果(inAmount = 15)。2020.10.20 00:32:46.316 Test9 (GBPAUD,H1) Cинхронизация CopyTicks и SymbolInfoTick длилась 163 ms., число попыток = 391432 2020.10.20 00:32:46.894 Test9 (GBPAUD,H1) Cинхронизация CopyTicks и SymbolInfoTick длилась 221 ms., число попыток = 526533 2020.10.20 00:32:50.839 Test9 (GBPAUD,H1) Cинхронизация CopyTicks и SymbolInfoTick длилась 69 ms., число попыток = 112339 2020.10.20 00:32:50.839 Test9 (EURAUD,H1) Cинхронизация CopyTicks и SymbolInfoTick длилась 385 ms., число попыток = 837204 2020.10.20 00:32:51.958 Test9 (EURAUD,H1) Cинхронизация CopyTicks и SymbolInfoTick длилась 74 ms., число попыток = 166407 2020.10.20 00:32:52.044 Test9 (EURAUD,H1) Cинхронизация CopyTicks и SymbolInfoTick длилась 80 ms., число попыток = 180256 2020.10.20 00:32:52.797 Test9 (EURAUD,H1) Cинхронизация CopyTicks и SymbolInfoTick длилась 737 ms., число попыток = 1469883 2020.10.20 00:33:04.229 Test9 (EURAUD,H1) Cинхронизация CopyTicks и SymbolInfoTick длилась 8550 ms., число попыток = 14608891 2020.10.20 00:33:04.319 Test9 (GBPAUD,H1) Cинхронизация CopyTicks и SymbolInfoTick длилась 159 ms., число попыток = 150630 2020.10.20 00:33:04.324 Test9 (AUDCHF,H1) Cинхронизация CopyTicks и SymbolInfoTick длилась 85 ms., число попыток = 78591 2020.10.20 00:33:07.340 Test9 (EURAUD,H1) Cинхронизация CopyTicks и SymbolInfoTick длилась 2947 ms., число попыток = 4899320 2020.10.20 00:33:08.076 Test9 (EURAUD,H1) Cинхронизация CopyTicks и SymbolInfoTick длилась 727 ms., число попыток = 1209371 2020.10.20 00:33:08.138 Test9 (EURAUD,H1) Cинхронизация CopyTicks и SymbolInfoTick длилась 55 ms., число попыток = 73155 2020.10.20 00:33:14.233 Test9 (EURCAD,H1) Cинхронизация CopyTicks и SymbolInfoTick длилась 107 ms., число попыток = 149697 2020.10.20 00:33:15.985 Test9 (EURCAD,H1) Cинхронизация CopyTicks и SymbolInfoTick длилась 190 ms., число попыток = 230501 2020.10.20 00:33:16.114 Test9 (GBPJPY,H1) Cинхронизация CopyTicks и SymbolInfoTick длилась 208 ms., число попыток = 275639 2020.10.20 00:33:41.328 Test9 (GBPJPY,H1) Cинхронизация CopyTicks и SymbolInfoTick длилась 9457 ms., число попыток = 14426849 2020.10.20 00:33:46.000 Test9 (GBPCHF,H1) Cинхронизация CopyTicks и SymbolInfoTick длилась 53622 ms., число попыток = 109127013 2020.10.20 00:33:47.936 Test9 (GBPJPY,H1) Cинхронизация CopyTicks и SymbolInfoTick длилась 1302 ms., число попыток = 3104323 2020.10.20 00:33:55.715 Test9 (GBPAUD,H1) Cинхронизация CopyTicks и SymbolInfoTick длилась 59 ms., число попыток = 87263 2020.10.20 00:33:55.776 Test9 (GBPJPY,H1) Cинхронизация CopyTicks и SymbolInfoTick длилась 88 ms., число попыток = 125641 2020.10.20 00:33:55.869 Test9 (GBPJPY,H1) Cинхронизация CopyTicks и SymbolInfoTick длилась 86 ms., число попыток = 140282 2020.10.20 00:33:55.974 Test9 (GBPJPY,H1) Cинхронизация CopyTicks и SymbolInfoTick длилась 95 ms., число попыток = 91802 2020.10.20 00:33:56.004 Test9 (GBPAUD,H1) Cинхронизация CopyTicks и SymbolInfoTick длилась 125 ms., число попыток = 127590 2020.10.20 00:33:56.202 Test9 (GBPJPY,H1) Cинхронизация CopyTicks и SymbolInfoTick длилась 214 ms., число попыток = 311277 2020.10.20 00:34:40.522 Test9 (GBPAUD,H1) Cинхронизация CopyTicks и SymbolInfoTick длилась 31 ms., число попыток = 48189 2020.10.20 00:34:40.672 Test9 (GBPAUD,H1) Cинхронизация CopyTicks и SymbolInfoTick длилась 69 ms., число попыток = 99619 2020.10.20 00:34:41.094 Test9 (GBPAUD,H1) Cинхронизация CopyTicks и SymbolInfoTick длилась 412 ms., число попыток = 613382 2020.10.20 00:34:41.864 Test9 (GBPAUD,H1) Cинхронизация CopyTicks и SymbolInfoTick длилась 768 ms., число попыток = 1136798 2020.10.20 00:34:46.035 Test9 (GBPAUD,H1) Cинхронизация CopyTicks и SymbolInfoTick длилась 2012 ms., число попыток = 2955715 2020.10.20 00:34:46.124 Test9 (GBPAUD,H1) Cинхронизация CopyTicks и SymbolInfoTick длилась 79 ms., число попыток = 109796 2020.10.20 00:34:46.239 Test9 (GBPAUD,H1) Cинхронизация CopyTicks и SymbolInfoTick длилась 98 ms., число попыток = 152433 2020.10.20 00:34:47.261 Test9 (GBPAUD,H1) Cинхронизация CopyTicks и SymbolInfoTick длилась 1009 ms., число попыток = 1300923 2020.10.20 00:34:47.337 Test9 (GBPAUD,H1) Cинхронизация CopyTicks и SymbolInfoTick длилась 73 ms., число попыток = 66414 2020.10.20 00:34:47.850 Test9 (AUDCHF,H1) Cинхронизация CopyTicks и SymbolInfoTick длилась 885 ms., число попыток = 832072 2020.10.20 00:34:48.383 Test9 (GBPAUD,H1) Cинхронизация CopyTicks и SymbolInfoTick длилась 1040 ms., число попыток = 1239140 2020.10.20 00:34:49.093 Test9 (EURCAD,H1) Cинхронизация CopyTicks и SymbolInfoTick длилась 46 ms., число попыток = 43232 2020.10.20 00:34:49.839 Test9 (GBPAUD,H1) Cинхронизация CopyTicks и SymbolInfoTick длилась 1445 ms., число попыток = 2065046 2020.10.20 00:34:51.474 Test9 (GBPCHF,H1) Cинхронизация CopyTicks и SymbolInfoTick длилась 55801 ms., число попыток = 119517920 2020.10.20 00:34:51.755 Test9 (GBPAUD,H1) Cинхронизация CopyTicks и SymbolInfoTick длилась 1498 ms., число попыток = 1625714 2020.10.20 00:34:52.269 Test9 (GBPJPY,H1) Cинхронизация CopyTicks и SymbolInfoTick длилась 403 ms., число попыток = 693015 2020.10.20 00:34:59.175 Test9 (AUDCAD,H1) Cинхронизация CopyTicks и SymbolInfoTick длилась 9413 ms., число попыток = 16211601 2020.10.20 00:35:00.398 Test9 (EURAUD,H1) Cинхронизация CopyTicks и SymbolInfoTick длилась 6302 ms., число попыток = 11626079 2020.10.20 00:35:05.587 Test9 (AUDCHF,H1) Cинхронизация CopyTicks и SymbolInfoTick длилась 3645 ms., число попыток = 8637511 2020.10.20 00:35:07.247 Test9 (EURAUD,H1) Cинхронизация CopyTicks и SymbolInfoTick длилась 133 ms., число попыток = 205326 2020.10.20 00:35:09.033 Test9 (AUDCHF,H1) Cинхронизация CopyTicks и SymbolInfoTick длилась 3427 ms., число попыток = 8060967非同期化は最大1分間続きます。どこかにバグがあるのでは? fxsaber 2020.10.19 22:06 #570 SymbolInfoTickのブレーキがかかる原因は、パラレルハンドリングにあるようです。 // Демонстрация тормозов SymbolInfoTick #include <fxsaber\Benchmark\Benchmark.mqh> // https://www.mql5.com/ru/code/31279 void OnTick() { const uint StartTime = GetTickCount(); while (!IsStopped() && (GetTickCount() - StartTime < 10000)) { _B(SymbolInfoInteger(_Symbol, SYMBOL_TIME_MSC), 100000); // Sleep(0); // Специально убрал. } } 結果(inAmount = 15)。 2020.10.20 01:01:30.517 Test9 (EURAUD,H1) Alert: Bench_Stack = 0, 100000 <= Time[Test9.mq5 97 in OnTick: SymbolInfoInteger(_Symbol,SYMBOL_TIME_MSC)] = 105941 mcs. 2020.10.20 01:01:37.596 Test9 (USDCAD,H1) Alert: Bench_Stack = 0, 100000 <= Time[Test9.mq5 97 in OnTick: SymbolInfoInteger(_Symbol,SYMBOL_TIME_MSC)] = 103045 mcs. 2020.10.20 01:01:38.968 Test9 (EURCHF,H1) Alert: Bench_Stack = 0, 100000 <= Time[Test9.mq5 97 in OnTick: SymbolInfoInteger(_Symbol,SYMBOL_TIME_MSC)] = 103305 mcs. 2020.10.20 01:01:41.307 Test9 (EURUSD,H1) Alert: Bench_Stack = 0, 100000 <= Time[Test9.mq5 97 in OnTick: SymbolInfoInteger(_Symbol,SYMBOL_TIME_MSC)] = 106121 mcs. 2020.10.20 01:01:42.573 Test9 (USDCAD,H1) Alert: Bench_Stack = 0, 100000 <= Time[Test9.mq5 97 in OnTick: SymbolInfoInteger(_Symbol,SYMBOL_TIME_MSC)] = 128241 mcs. 2020.10.20 01:01:45.175 Test9 (GBPCHF,H1) Alert: Bench_Stack = 0, 100000 <= Time[Test9.mq5 97 in OnTick: SymbolInfoInteger(_Symbol,SYMBOL_TIME_MSC)] = 120367 mcs. 2020.10.20 01:01:46.394 Test9 (EURCHF,H1) Alert: Bench_Stack = 0, 100000 <= Time[Test9.mq5 97 in OnTick: SymbolInfoInteger(_Symbol,SYMBOL_TIME_MSC)] = 104458 mcs. 2020.10.20 01:01:57.832 Test9 (GBPCHF,H1) Alert: Bench_Stack = 0, 100000 <= Time[Test9.mq5 97 in OnTick: SymbolInfoInteger(_Symbol,SYMBOL_TIME_MSC)] = 125348 mcs. > SymbolInfoTick実行の場合、100ms以上。コードが自撮りであることは明らかです。しかし、通常のEAで遅くなる原因を示しています。 1...505152535455565758596061626364...94 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
超並列アクセスの場合、1/10に高速化。
その他の場合は、プロセッサー、メモリー、オペレーティングシステムのアップグレードのみ。
PMでは、同じマシンからログを比較します。
これはCopyTicksの1回限りの呼び出しです。これは、OnInitでこれらのティックの仮想バックテストを作成し、その後、新鮮なティックのみを供給してリアルタイムでそれを継続するために行われます。
妥協案として、OnInitで呼ばれるCopyTicksの直後にTerminal内のメモリを解放することを提案します。それなら、CopyTicksに強制冷却機能を導入する必要はない。
今、スリープ版の冷却はとてもカクカクしています。しかし、この松葉杖がいかにメモリの節約になるかは、前述したとおりです。
20のExpert Advisorが低速のVPSでも高速に動作することが判明しました。しかし、それらを起動させるのは重大な問題です。
少し前までは、あなた自身がストレステストをして、1ティックごとに 深いティックを即座に発行することを要求していましたね。
つまり、あなたも他の開発者の100%も、保留中のフルキャッシュリクエスト戦略を適用しており、今後も適用する予定です。その都度、よりコストのかかる、真正面からの専門家が書き込まれている。
ですから、決してキャッシュを廃止するのではなく、16〜32gbのメモリを搭載して、問題や遅延を忘れることを推奨しています。
VPSでの動作や経済性(512MB~1GBに抑える)については、全く気になりません。
あなた自身、少し前までストレステストをしていて、実はすべてのティックで 即座に深いティックを要求していたんですね。
つまり、あなたも他の開発者の100%も、保留中のフルキャッシュリクエスト戦略を適用しており、今後も適用する予定です。その都度、よりコストのかかる、真正面からの専門家が書き込まれている。
ですから、決してキャッシュを廃止するのではなく、16〜32gbのメモリを搭載して、問題や遅延を忘れることを推奨しています。
VPSでの動作や経済性(512mb~1gbに収まるように)は全く気にしない。
上記は私の投稿をコードで補足したものです。OnInitのことであって、他のことではないのです。Hot CopyTicksは非常に必要だが、OnInitにはない。
妥協案として、OnInitでCopyTicksを呼び出した後、Terminalですぐにメモリを解放するようにすることを提案します。
どんな場合でもダメです!
また、逆にOnInitでキャッシュを上げると、遅延なく作業できるようになるのでしょうか?
端末のキャッシュをアンロードする機能を導入した方が良い。
ティックだけでなく、時系列やインジケータにも必要です(5つのインストルメントと5つのTFに対して5Kを記述してみてください)。
レナート?
まさか!?
OnInitでキャッシュを上げ、遅延なく作業できるようにしたらどうでしょうか?
ティックキャッシュは10秒しか生きられない。
ティック履歴 スクリプトスクリーナー(ターミナルで動作する唯一のソフトウェア)は、5ヶ月分のクォートを取ると最大で6GBを食いつぶします。
マシンやインターネットが高速であればあるほど、メモリの負荷は大きくなります。例えば、端末の内部キャッシュは10秒間に数文字まで蓄積されます。
OnTickが実行されている間、新しいtickがあることを知る ための他の方法は思いつきません。
3つの選択肢
バーから新しいティックを識別しない方が良い。
結果(inAmount = 15)。
非同期化は最大1分間続きます。どこかにバグがあるのでは?
SymbolInfoTickのブレーキがかかる原因は、パラレルハンドリングにあるようです。
結果(inAmount = 15)。
> SymbolInfoTick実行の場合、100ms以上。コードが自撮りであることは明らかです。しかし、通常のEAで遅くなる原因を示しています。