エキスパート: SaveTicks

 

SaveTicks:

このユーティリティープログラムは、ティッククォートをCSV形式とBIN形式で記録します。書き込む銘柄のセットは柔軟です。

作者: Alexey Volchanskiy

 

当初私は、MQL4/5で可能なように、秒ではなくミリ秒の精度でティックを書くというアイデアを持っていた。しかしkodobaseでは、ウィンドウズのDLL"Kernel32.dll "が使われていたため、私のコードは削除された。Kernel32.dll」が使われていたため、kodobaseでは私のコードは潰されてしまった。

ミリ秒精度のMT4/5用オリジナルExpert Advisorはこちらです。



ファイル:
 
Alexey Volchanskiy:

当初私は、MQL4/5で可能なように、秒ではなくミリ秒の精度でティックを書くというアイデアを持っていた。しかしkodobaseでは、ウィンドウズのDLL"Kernel32.dll "が使われていたため、私のコードは削除された。Kernel32.dll」が使われていたため、kodobaseでは私のコードは潰されてしまった。

ここにミリ秒精度のMT4/5用オリジナルExpert Advisorがあります。




Alexeiさん、なぜチャート上にあなたのインジケータが表示されないのか教えてください。

 
fulstak:

アレクセイ、なぜチャート上にあなたのインジケータが表示されないのか教えてください。


チャートに何か表示されますか?説明文を読んでください。ユーティリティは、テキスト(CSV)およびバイナリ(BIN)形式でティッククォートを記録するように設計されています。

 

アレクセイ、いくつかコメントがある。

1.SymbolSelectによるシンボル選択がありません。これはすべてのシンボルのクォートを取得するために必要です。

2.ファイル名(またはパス)を設定する際に、現在の取引サーバーを考慮することが望ましい。別のブローカーの口座に切り替えたときに、同じファイルに書き込まれないように。あるいは、取引サーバーを変更したときに動作しなくなる。

3.取引サーバーへの接続 チェックを追加しても問題ない。そうしないと、接続が切れても書き込みを続けることになり、この場所で接続が切れたことがわからなくなる。

4.mqlの同時オープンファイル数にはアホみたいな制限がある(64ファイルまで)ので、コードは複雑になることを頭に入れておくこと。
 
Evgeny Belyaev:

チャートに何か表示されますか?説明を読むと、次のように書かれています:このユーティリティは、テキスト(CSV)とバイナリ(BIN)形式でティッククォートを記録するように設計されています。


ユージン、ありがとう。なぜかKBの新しいコメントに対するプライベート・メッセージが届かないんだ。偶然、今それを見た。

 
Alexey Navoykov:

アレクセイ、いくつかコメントがある。

1.SymbolSelectによるシンボル選択がありません。これはすべてのシンボルのクォートを取得するために必要です。

2.ファイル名(またはパス)を設定する際に、現在の取引サーバーを考慮することが望ましい。別のブローカーの口座に切り替えたときに、同じファイルに書き込まれないように。あるいは、取引サーバーを変更したときに動作しなくなる。

3.取引サーバーへの接続 チェックを追加しても問題ない。そうしないと、接続が切れても書き込みを続けることになり、この場所で接続が切れたことがわからなくなる。

4.mqlで同時に開くファイル数には馬鹿馬鹿しい制限がある(64ファイルまで)ので、コードが複雑になることを心に留めておいてほしい。

アレクセイ、コメントありがとう。でも、シンボル・セレクトについてはよくわかりません。ヘルプの例では使われていないし、説明も全般的にとても曖昧だ。MarketWatchではシンボルを削除・選択するだけで、データの更新に関してはスイッチがオフになっているように感じます。

以下はヘルプにある例の一部です。しかし、SymbolIsSynchronisedはおそらく設定されているはずだ。

ターミナルで指定されたシンボルのデータが、トレードサーバーのデータと同期しているかどうかをチェックします。

void OnStart() 
  { 
//--- 
   int     attempts=0;     // 試行カウンター 
   bool    success=false;  // ティックコピーの成功フラグ 
   MqlTick tick_array[];   // 目盛りを受け取る配列 
   MqlTick lasttick;       // 直近のティックのデータを取得する 
   SymbolInfoTick(_Symbol,lasttick); 
//--- 3回試行してダニを取る 

***

 
Alexey Volchanskiy:

アレクセイ、コメントありがとう。でも、シンボル・セレクトについてはよくわかりません。ヘルプの例では使われていませんし、説明も非常に曖昧です。MarketWatchではシンボルを削除して選択するだけで、データの更新という点ではオフになっているように感じます。

ヘルプにある例の一部です。しかし、SymbolIsSynchronisedはおそらく設定されているはずだ。

ターミナルで指定されたシンボルのデータが、トレードサーバーのデータと同期しているかどうかをチェックします。

***

なぜ推測するのか?すべては簡単にチェックできます。Market Watchにないシンボルの気配値を取得してみてください。ゼロが表示されます。だから最初に選択する必要があるのだ。

SymbolIsSynchronisedは別のものだ。というのも、気配値は常に(接続が あれば)サーバーと同期しているからです。というのも、引用符は常にサーバーと同期しているからだ。おそらく、サーバーではなく、気配値を受信する取引プラットフォームを意味しているのでしょう。そうであれば、これは確かに必要な機能であり、考慮に入れる必要があります。

 
Alexey Navoykov:

推測する必要はない。すべては簡単にチェックできる。マーケット・ウォッチにないシンボルの気配値を取得してみて ください。ゼロが表示されます。だから最初に選択する必要があるのだ。

SymbolIsSynchronisedは別のものだ。というのも、気配値は常に(接続が あれば)サーバーと同期しているからです。というのも、引用符は常にサーバーと同期しているからだ。おそらく、サーバーではなく、気配値を受信する取引プラットフォームを意味しているのでしょう。それなら、それも考慮すべき必要な機能です。

なるほど、私は常にすべてのシンボルを「概要」に表示しているので、このオプションは考えていませんでした。ある人は何かを見逃し、別の人はそれに気づく。

昔、学生だった頃、電子工学エンジニアの友人と、あるプロジェクトをペアで開発していたのを覚えています。

そのとき、エラーがいかに少なく、スピードがいかに速いかに気づいたんだ。彼が何かを見逃すと、私がそれを指摘する。

追記:このサイトでは「Electronics Technician(電子技術者)」という単語が赤くハイライトされているが、これは正式な職業名であり、私はずっと前にそれを職歴に書いていた。映画『エレクトロニクの冒険』と混同しないように。))


 
ティックデータのファイルは非常に大きくなりやすいので、データをパックするオプションがあればありがたい。
 
Carl Schreiber:
ティックデータのファイルは非常に大きくなりやすいので、データをパックするオプションがあればありがたいです。

その(パックされた)データを何に使うのでしょうか?

私の経験では、このようなデータコレクターの制限要因は、データサイズではなく、保存されたデータの品質(完全性)です。ブローカーや接続によってストリームが中断されることはよくありますが、ターミナルの再起動や更新、ターミナルウィンドウの内容の整理、ターミナルが一時的にフリーズしたときなどに中断されることがほとんどです。