エラー、バグ、質問 - ページ 1721

 
Alexey Da:

いつもミリオタにリクエストしているのですか?これは、アレイ1本あたりだけでも49ギガバイトになります。1月から今までのSi-12.16のティックは15789962です。

あなたのものをベースにした小さなスクリプトで、月別にティックの数をカウントします。


という結果が得られます。


ディスク上ではこのように表示されます。


何個注文してもいいのです。20000ティック(2万枚)の注文でも、10ヶ月目のファイルはギガバイトで計測されます。

スクリプトは、20,000を要求する場合

//+------------------------------------------------------------------+
//|                                                    CopyTicks.mq5 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.01"
//--- покажем окно входных параметров при запуске скрипта
#property script_show_inputs
input int  ticks=200000000;  // количество запрашиваемых тиков
//---
MqlTick ExTicks[];
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- запросим тики
   int copied=CopyTicks(_Symbol,ExTicks,COPY_TICKS_ALL,0,ticks);
//--- если тики получены, то выведем на график значения Bid и Ask  
   Print("Получено тиков: ",copied," код ошибки: ",GetLastError());
   if(copied>1)
     {
      Print("Тик: ",ExTicks[0].time," bid: ",ExTicks[0].bid," ask: ",ExTicks[0].ask," last: ",ExTicks[0].last," [0]");
      Print("Тик: ",ExTicks[copied-1].time," bid: ",ExTicks[copied-1].bid," ask: ",ExTicks[copied-1].ask," last: ",ExTicks[copied-1].last," [",copied-1,"]");
     }
   Print("Size ",((long)copied*sizeof(MqlTick))>>20, " Mb");
  }
//+------------------------------------------------------------------+

、10ヶ月目のファイル増加量をギガバイト単位で測定しています。


端末の電源を切った状態で、10ヶ月目のティックファイル(サイズ約7.5GB)を削除しました。

そして、あなたのスクリプトを実行しました。

void OnStart()
  {
   MqlTick Ticks[];
   int Amount=CopyTicks(_Symbol,Ticks,COPY_TICKS_ALL,D'2016.01.01'*1000,ulong(100000000));
   MqlDateTime str;
   TimeToStruct((Ticks[0].time_msc-Ticks[0].time_msc%1000)/1000,str);
   char m=(char)str.mon;
   long n=StringToTime(StringFormat("01.%d.2016",m+1))*1000;
   int pos=0;
   for(int i=0;i<Amount;i++)
     {
      if(Ticks[i].time_msc>=n || i==Amount-1)
        {
         PrintFormat("Month %d: %d ticks, %d Mb",m,i-1-pos,(sizeof(MqlTick)*(i-1-pos))>>20);
         m++;
         n=StringToTime(StringFormat("01.%d.2016",m+1))*1000;
         pos=i;
        }
     }
  }

は、すべてうまくいき、サイズも巨大化せず、とても不思議です。

そして、もう一度あなたのスクリプトを実行しました(入力パラメータ20000)。しかし、午前中にもかかわらず、ファイルは想像を絶する大きさに膨れ上がっていたのです。自分で見て、実験してみた!


何十億という刻みの数については、たとえ1兆でも、端末は持っている以上のものを出すことはありません。

 
Karputov Vladimir:

しかし、朝になっても、ファイルは信じられないほど大きくなっていたのです。自分で見て、実験してみました

今と違うのは、当時はクローズドマーケットでの実験だったということです。
 

今、スクリプトを 実行中。

その結果

2016.10.05 11:05:03.374 Test (Si-12.16,M5)      (Amount*sizeof(MqlTick))>>20 = 72 Mb Ticks[0].time = 2016.10.03 09:45:02 Ticks[Amount-1].time = 2016.10.05 11:05:55 

すべてが思い通りに動く。72/5圧縮形式の名誉と賞賛〜15回。

なぜクローズドな市場でこんなクソバグが出るのか、解明してくれ。

ところでAlexey Da さん、なぜあなたの201610.tkcは私のより大きいのですか?

 
fxsaber:

今、スクリプトを 実行中。

その結果

すべてが思い通りに動く。72/5圧縮形式の名誉と賞賛〜15回。

なぜクローズドな市場でこんなクソみたいなバグが出るのか、その原因を解明する必要がある。

ところでAlexey Da さん、なぜ201610.tkcが私のより大きいのでしょうか?

オープニング画面です。

BCSでは、サイズはあなたと同じようなものです。

しかし、同じ大きさではありません。

どのようなアクセスに接続していますか?私が持っているのは


 

fxsaber:

なぜクローズドな市場でこんなクソみたいなバグが出るのか、その原因を探らなければならない。

カルプトフ・ウラジミール fxsaber

動作確認をしていないため、性能・信頼性を確認する場合があります。最も完全な説明、ログ、スクリーンショット、タイムスタンプを添えて、servicedeskにチケットを作成してください。

 
Alexey Da:

オープニングの画面。

BCSでは、サイズはあなたと同じようなものです。

しかし、同じ大きさではありません。

201609.tkcはOpeningで36Mb、BCSで32Mbであることに気がつきました。でも、ストーリーは同じですなぜそうなのでしょうか。

まあ、それに9月にサーバーのアップデートがあったとしても、10月は間違いなくなかったですしね。10月のオープニングはなぜ大きくなったのですか?

どのアクセスポイントから接続されていますか?持っています。

いつもです。

authorized on BCS-MetaTrader5 through Access Server #1 (ping: 49.30 ms)
 
Alexey Da:

カルプトフ・ウラジミール fxsaber

ご請求ください。最も完全な説明、ログ、スクリーンショット、および時間の表示を含むチケットをservicedeskに送信してください。

残念ながら、そのログは失われてしまった。したがって、私はいかなる情報も提供することができません。

確実に覚えているのは、バグ発生時、スクリプトが出した最初のティックが2016.10.04 09:45だったことくらいです。

そして、すべてが想定通りに動いているときに......2016.10.03 09:45を出すようになった。

まさに、唯一の生き残り路線

NE      0       08:43:43.928    Test (Si-12.16,M1)      (Amount*sizeof(MqlTick))>>20 = 0 Mb Ticks[0].time = 2016.10.04 09:45:04 Ticks[Amount-1].time = 2016.10.04 10:02:38 
JP      0       11:03:37.815    Test (Si-12.16,M5)      (Amount*sizeof(MqlTick))>>20 = 0 Mb Ticks[0].time = 2016.10.03 09:45:02 Ticks[Amount-1].time = 2016.10.03 10:02:18 

上1つ目 - バグが思いっきり出現していました。

1つ下 - バグは沈黙した。

 
Alexey Da:

カルプトフ・ウラジミール fxsaber

ご請求ください。最も完全な説明、ログ、スクリーンショット、および時間の表示を含むチケットをservicedeskに送信してください。

内部リクエスト .../view/1580221
 

MT4では、ナビゲータ->お気に入りで、番組とその検索経路が表示されるのが非常に便利です。

例えば、fxsaberTest.

MT5では、それほど便利ではありません。追加してください。

 
このトピックに関係のないコメントは、「空欄補充モードに関する質問」に移動しました。