ダニの話 - ページ 5

削除済み  

また今日から履歴を取得しようとすると、変な結果になるんです。これがその台本です。

         MqlTick array[];
         MqlDateTime sTime;
         TimeToStruct( TimeCurrent(), sTime );
         sTime.hour = 0;
         sTime.min = 0;
         sTime.sec = 0;
         datetime start = StructToTime( sTime );
         Print( "Начало текущего дня: ",start );
         int num = CopyTicks( _Symbol, array, COPY_TICKS_ALL, start, 1000000 );
         
         int size = ArraySize( array );
         Print( __FUNCTION__,": num = ",num,", arraySize = ",size );
         for( int i = 0; i < size; i++ )
                {
                 if( i == 0 )
                        {
                         Print( __FUNCTION__,": Время прихода первого доступного тика: ",array[ i ].time );
                        }
                 else if( i == size-1 )
                        {
                         Print( __FUNCTION__,": Время прихода последнего доступного тика: ",array[ i ].time );
                        }
                }

その結果がこちらです。

HQ 0 18:38:20.974 test_CopyTicks_1178 (EURUSD,M1) 当日の開始時刻:2015.10.15 00:00:00

JM 0 18:38:22.202 test_CopyTicks_1178 (EURUSD,M1) OnStart: num = 1000000,arraySize= 1000000

CF 0 18:38:22.202 test_CopyTicks_1178 (EURUSD,M1) OnStart: 最初の利用可能なティック到着時間: 2011.12.19 00:00:08

RD 0 18:38:22.204 test_CopyTicks_1178 (EURUSD,M1) OnStart: 最終利用可能ティック到着時間: 2012.01.06 18:41:26

どうやら、CopyTicks( _Symbol, array, COPY_TICKS_ALL, start, 1000000 ) のように書くことはできないようです。

 
Tapochun:

たぶん、自分で書いたんだと思います。ええと、ここで以前使われていたメモリを解放するにはどうしたらいいのでしょうか?

20,000,000個の要素を持つMqlTick 配列自体は約800mbのメモリを消費します。さらに同じ元の配列を端末に格納し、そこで情報を蓄積して出力する。

ですから、膨大なデータを扱うのであれば、64ビット版と8GBのメモリしかありません。幸いなことに、今となってはとんでもないお金がかかります。

 
Karputov Vladimir:
ティックコレクターは不要になりました。ティック履歴は ターミナルで見ることができます。

その可否はDCの善意に依存するのか、それともサーバー側にハード的に刻みを保存しているのか。

削除済み  
Renat Fatkhullin:

MqlTickの 配列自体は20 000 000要素で約800 mbのメモリを消費します。さらに、同じ初期配列の端末に記憶させ、そこで情報を蓄積して出力する。

ですから、膨大なデータを扱うのであれば、64ビット版と8GBのメモリしかありません。幸いなことに、今となってはとんでもないお金がかかります。

小ロットで依頼する場合は?一人100万ティックとすると?問題ないでしょう?つまり、クエリ-処理-次のクエリということです。

それとも、データが蓄積されてRAMが足りなくなるのか?

 
Alexey Volchanskiy:

その可否は証券会社の善意によるものなのか、それともサーバー側にティック履歴の保存がハードウエア化されているのか。

MT5サーバーでは、当初からティック履歴を 蓄積・保存しています。

クライアント端末で無効にすることはできません。

削除済み  

トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム

ダニ歴

たぽちゅんさん 2015.10.15 15:08

そうですね、他のCopy...関数と同じようにCopyTicks()のオーバーロードを追加するのが良いでしょう。日付から日付へ移動できること。さて、例えば、現在の日の始まりから現在の瞬間までのティックを取得することはできません。
実装できるのか?
 
Tapochun:
これは実現できるのでしょうか?
できるかな
削除済み  
Renat Fatkhullin:
できますか?
ありがとうございます、とても助かりました。今のところ、ダニを取る「ナビゲート」はちょっと難しいですね。
 

ダニは月ごとにファイルに積み上げていくんですよね?以下はスクリーンショットです。

ダニファイル

また、これらのファイルをどのように読み取るのでしょうか?それともストラテジーテスターを通してのみ

削除済み  
Karputov Vladimir:

ダニは月ごとにファイルに積み上げていくんですよね?以下はスクリーンショットです。

また、これらのファイルをどのように読み取るのでしょうか?それともストラテジーテスターを通してのみ

メモ帳で直接読めない。