エキスパート: アスクビッドティック

 

アスクビッドティック:

アスクビッドティックは、微細構造解析(ティックデータコレクタ)のための高精度、リアルタイムティックデータソリューションです。これは、ローカルコンピュータの時刻で動作します。

ノートパッドでのCSV出力

作者: Erdem Sen

 
興味深いです、バックテストではどのように使用できますか?何かアイデアはありますか?
 
こんにちは、バーM5 M15 H1 H4で同等にできますか?
 
vanvolxem:
こんにちは、あなたはバーM5 M15 H1 H4で等価にすることができます
申し訳ありませんが、理解できません。
 

こんにちは、

時間 シンボル OPEM CLOSE PH PB

2013.01.04 04:55 eurgbp 0.81065 0.81078 0.81086 0.81065 172

2013.01.04 05:00 eurgbp 0.81079 0.81046 0.81080 0.81044 90

2013.01.04 05:05 eurgbp 0.81047 0.81044 0.81056 0.81044 89

2013.01.04 05:10 eurgbp 0.81043 0.81059 0.81059 0.81033 111

2013.01.04 05:15 eurgbp 0.81057 0.81052 0.81059 0.81048 78

2013.01.04 05:20 eurgbp 0.81051 0.81065 0.81071 0.81050 124

2013.01.04 05:25 eurgbp 0.81067 0.81066 0.81070 0.81060 243

2013.01.04 05:30 eurgbp 0.81067 0.81076 0.81080 0.81063 108


 
vanvolxem:

こんにちは、

時間 記号 OPEM CLOSE PH PB

2013.01.04 04:55 eurgbp 0.81065 0.81078 0.81086 0.81065 172

2013.01.04 05:00 eurgbp 0.81079 0.81046 0.81080 0.81044 90



定期的なデータを取得する最良の方法は(私によると)MT4の履歴を使用することです:

//+------------------------------------------------------------------+
//|PeriodicRealTimeDataStream.mq5
//| Copyright 2013, MetaQuotes Software Corp.|
//|http://mql5.commql5.com
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"

datetime t1;
double   arro[1],arrh[1],arrl[1],arrc[1];
string   T,O,H,L,C;
long     arrv[1],V;

//+------------------------------------------------------------------+
void OnTick()
  {  

   t1 = (datetime)SeriesInfoInteger(_Symbol,_Period,SERIES_LASTBAR_DATE);
   static datetime  t0 = t1;
//--- 指定されたチャートの値を取得する。 
   if (t0!=t1)
      {  
         //--- 値を配列にコピーする
         CopyOpen(_Symbol,_Period,0,1,arro);
         CopyHigh(_Symbol,_Period,0,1,arrh);
         CopyLow(_Symbol,_Period,0,1,arrl);
         CopyClose(_Symbol,_Period,0,1,arrc);
         CopyTickVolume(_Symbol,_Period,0,1,arrv);
         //--
         T=TimeToString(t1,TIME_DATE|TIME_MINUTES);
         O=DoubleToString(arro[0],_Digits);
         H=DoubleToString(arrh[0],_Digits);
         L=DoubleToString(arrl[0],_Digits);
         C=DoubleToString(arrc[0],_Digits);
         V=arrv[0];
         //--- 値を出力する
         printf("%s  %s  %s  %s  %s  %s  %d",T,_Symbol,O,H,L,C,V);
         //--- 時間を設定し直す
         t0=t1;     
      }
//---
  }
//+------------------------------------------------------------------+

csvエクスポートを希望する場合は、メインコードと同じようにファイル関数と変数を使用できます。

 
あなたが見逃したティックについてはどうですか? あなたはそれらのためにTXTファイルに何かを追加しますか? もしそうしないなら、あなたは"... ...txtファイルにアスクとビッドの価格のすべてのティックバイティックデータを格納します"ではありません。
 
RaptorUK:
あなたが見逃したティックについてはどうですか? あなたはそれらのためにTXTファイルに何かを追加しますか? もしそうしないなら、あなたは"... ...txtファイルにアスクとビッドの価格のすべてのティックごとのデータを格納します。"ではありません。

NewTickイベントの処理方法のため、気配値が欠落する 可能性があるのはその通りですが、コードは十分に高速であるため、この可能性は非常に小さく なります(ほとんどゼロです)。もし欠落ティックが私が考えている以上に発生するのであれば(分析の有意性に影響する可能性があります)、私のコードではなくOntick()がバグっていることになります。

そして、「......アスクとビッドの価格のすべてのティックごとのデータをtxtファイルに保存する」というフレーズについてですが、私はずっと前にそれに気づき、変更しました。

 
erdogenes:

NewTickイベントの処理方法のせいで気配値が欠落する可能性があるのはその通りですが、コードは十分に高速なので、この可能性は非常に小さくなって います(ほとんどゼロです)。もし欠落ティックが思った以上に発生するのであれば(分析の有意性に影響する可能性があります)、私のコードではなくOntick()がバグっていることになります。

そして、「......askとbid価格のすべてのtick-by-tickデータをtxtファイルに保存する」というフレーズについてですが、私はずっと前にそれに気づき、変更しました。

新しいティックが到着したときにOnTick()が実行されている場合、新しいティックは無視されます ... .

NewTick

NewTick イベントは新しい気配値があった場合に発生し、Expert AdvisorのOnTick() で処理されます。新しい気配が受信されたときに前の気配に対するOnTick関数が処理されている場合、対応するイベントはキューに入れられないので、新しい気配はExpert Advisorによって無視されます。

プログラム実行中に受信した新しい気配値はすべて、OnTick()が完了するまで無視されます。その後、関数は新しい気配値を受信した後にのみ実行されます。

........................ 通常、どれくらいのティックを見逃すかテストしましたか?

 
RaptorUK:

新しいティックが到着したときにOnTick()が実行されている場合、新しいティックは無視されます。

私は混乱しているので、あなたはそれが新しいティックを処理する方法だと思うし、私もそうです:)

erdogenes

NewTickイベントの処理方法のせいで、引用符が欠落する可能性があるのはその通りです。

もしティックの欠落が 分析に 重大な影響を与えるので あれば、ontickはバグっていることになります。(それは "新しいティック "イベント・ハンドラなので、十分に処理できなければバグっていることになります

RaptorUK

....あなたが通常見逃すティックの数を確認するためにテストしましたか?

私は行方不明のティックについて知らない、私はプログラムが何を取得し、どのように私はそれを計算することができますか、それは何らかの方法で計算することができますか?MetaQuotesのことは言えません。私はフィードを比較するために取引サーバーに直接アクセスすることはできません。私はプログラムのためにそれを計算することはできません、それはプログラムが私のものになったときに変更されることはありません、私は統計的にのみ話すことができます。

あなたのために、私はHFデータ処理で例を編集しました。2011年1月27日のインターバンクレートを使って、同じミリ秒でのティック到着率を求めました-計算のためのプログラムはGretlです。

そのデータがMT5で扱われ、(ばかげたことに)そのすべて(~0.003)が欠落していると仮定しよう。では、~0.003の割合でランダムに再サンプリングされたシグナルは有意性を失うのでしょうか。

確かに、これは単なる仮定であり、ブローカーからのものではありませんが、私の言いたいことを理解していただければ幸いです。繰り返しますが、私には実際の欠測ティック数を把握する能力はありません。

もしNewTickイベントハンドラの "no queue "ポリシーがティックの欠落を引き起こすのであれば(実際そうなのですが)、欠落の数はハードウェアのスピードにも左右されると思います。その場合、標準値として計算することはできません。

(コメントを再編集しました:あなたに送ったコードはバグっていたので修正しました。)

ファイル:
codes.zip  1 kb
 
erdogenes:

私は混乱しています。つまり、あなたはそれが新しいティックの処理の方法であると考えており、私もそうです:)

もしティックの欠落が 分析に 重大な影響を与えるので あれば、ontickはバグっていることになります。(それは "new tick "イベントハンドラであるため、十分に処理できなければバグっていることになります

私は ミッシングティックについて 知りません、私はプログラムが取得したものを取得します、どのように私はそれを計算することができますか、それは何らかの方法で計算することができますか?

はい、できます ... ... 現在のバーのティックをカウントし、現在のバーのティック・ボリュームの 値をチェックすることができます。