リアルタイムで見るTiki - ページ 3 12345678910...26 新しいコメント Sergey Chalyshev 2020.01.26 23:19 #21 Aleksey Mavrin: 正直、ECNについてこのリンクで何を読んでほしいのか、特に今まで知られていなかったことが理解できなかった) 私が?何かを求めていたのは、あなただったんですね。))) 外国為替市場と取引所の違いを理解されていないので、リンクを貼っておきました。 為替欄はFXでポイ捨てしないでください。 Aleksey Mavrin 2020.01.27 02:46 #22 Sergey Chalyshev: そうしたかったのだろうか?何かを求めていたのは、あなただったんですね。))) FXとExchangeの違いが分からないからリンクを貼ったんだよ。 為替欄はFXでポイ捨てしないでください。 でも、それは無理な話なので、今あるもので満足するしかないんです。 そして、あなたも何かを理解していないかもしれない、そう思ったことはありませんか?例えば、あなたがリンクを貼った理由) そしてもうひとつ、そもそも私はFXに言及した人間ではなく、すでに始まっている議論に踏み込んでいるのです。まず第一に。 B 2 - 為替のセクションで、異なる市場と株式市場を比較する議論を誰かが禁じたのでしょうか? そして、3「スキーヤー対スノーボーダーのような句読点はやめましょう、それとも反対ですか? Vladimir Mikhailov 2020.01.28 07:50 #23 チック分析に関する実験を交えた小さなまとめ。 1. OnTick ハンドラで相当数のティックをスキップしている。 ですから、入ってくるティックを通して取引の帯を分析したいのであれば、意味がありません。 この方法では、テスターでのアルゴリズムの結果と実際の取引結果が異なることになります。 別の方法として、CopyTicks() または CopyTicksRange() 関数を使用して履歴のティックを取得することにより、選択した期間または一定量の最後のディールのストリップを分析することが可能です。 この場合、テスターでアルゴリズムをテストした結果と実際の取引結果は同じになります。 デメリットは、アルゴリズムの性能が低いことです。 2.OnBookEventのイベント数は、過去のティックの数よりもはるかに多くなっていますが、これはティックに加えてこのイベントがティックの変化を処理するためであり、理解できることです。 そのため、このイベントを使えば、すべての受信ティックを分析できるように思えるかもしれません。 しかし、これはすべてのトレードがティックを通過するわけではありません。 成行注文はスライダーを通過しない場合がありますが、取引フィードに反映されます。 これは、マーケットスライダーが実際には注文の帳簿であり、必要な条件が満たされれば実行されるのを待っているからである。 例:ある取引がOnEventBookハンドラを経由しなかった(これは5ティックにも及ぶ)。 この場合も、最初のバリエーションと同様、ヒストリカル・ティックの分析が解決策となる。 このソリューションのマイナスは、テスターでのテストが不可能なことです。テスターの刻みの変化のイベントは発生しない。 3.tickフラグの8ビットが未記載なのは、答えが出なかった。別のフォーラムのスレッドで同じ質問をしました。 トレードのフィードを分析する方法は、すでに決めています。生産性は落ちますが、歴史を通じてです。 これによって、テスターでアルゴリズムをテストするときに、信頼できる結果を得ることができるようになりました。 皆さん、アイデアやディスカッションをありがとうございました。 prostotrader 2020.01.28 11:48 #24 Vladimir Mikhailov: チック分析に関する実験を交えた小さなまとめ。 1.OnTickハンドラで相当数のtickをスキップしている。 ですから、入ってくるティックを通して取引の帯を分析したいのであれば、意味がありません。 この方法では、テスターでのアルゴリズムの結果と実際の取引結果が異なることになります。 別の方法として、CopyTicks() または CopyTicksRange() 関数を使用して履歴のティックを取得することにより、選択した期間または一定量の最後のディールのストリップを分析することができます。 この場合、テスターでアルゴリズムをテストした結果と実際の取引結果は同じになります。 デメリットは、アルゴリズムの性能が低いことです。 2.OnBookEventのイベントには意味がある......。 しかし、これは真実ではなく、すべての案件が本を通過するわけではありません。 例-ある取引がOnEventBookハンドラを経由しなかった(しかも5ティックも)。 3.tickフラグの8ビットが未記載なのは、答えが出なかった。別のフォーラムのスレッドで同じ質問をしました。 2.tick builderのコードを投稿してください(何か間違っているのでは)。 3.プリンターで、EnumToString(flags)を実行します。 Vladimir Mikhailov 2020.01.29 05:43 #25 prostotrader:2.ティックビルダーコードを投稿する(何か間違っているのでは?)3.プリンタでEnumToString(flags)を実行する。 コードはいつもの、最小限のものです。OnBookEventは最後の既知のtickを取得し、それを表示 する。 //+------------------------------------------------------------------+ //| TicksCollector.mq5 | //| Copyright 2020, Vladimir Mikhailov | //| mikh.vl@gmail.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2020, Vladimir Mikhailov" #property link "mikh.vl@gmail.com" #property version "1.00" MqlTick tick[1]; int counter=0; string type; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- MarketBookAdd(_Symbol); return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- MarketBookRelease(_Symbol); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnBookEvent(const string& symbol) { CopyTicks(_Symbol,tick,COPY_TICKS_ALL,0,1); counter++; if((tick[0].flags&TICK_FLAG_BID)==TICK_FLAG_BID || (tick[0].flags&TICK_FLAG_ASK)==TICK_FLAG_ASK) { printf("Symbol: %s; tick #: %d; flags: %d; Time: %s.%03d; Ask: %s; Bid: %s", _Symbol, counter, tick[0].flags, TimeToString(tick[0].time,TIME_MINUTES|TIME_SECONDS),tick[0].time_msc%1000, DoubleToString(tick[0].ask,_Digits), DoubleToString(tick[0].bid,_Digits)); } else if((tick[0].flags&TICK_FLAG_BUY)==TICK_FLAG_BUY || (tick[0].flags&TICK_FLAG_SELL)==TICK_FLAG_SELL) { type=(tick[0].flags&TICK_FLAG_BUY)==TICK_FLAG_BUY? "Buy": (tick[0].flags&TICK_FLAG_SELL)==TICK_FLAG_SELL? "Sell": ""; printf("Symbol: %s; tick #: %d; flags: %d; Time: %s.%03d; Volume: %.0f; Type: %s; Last: %s", _Symbol, counter, tick[0].flags, TimeToString(tick[0].time,TIME_MINUTES|TIME_SECONDS),tick[0].time_msc%1000, tick[0].volume_real, type, DoubleToString(tick[0].last,_Digits)); } } //+------------------------------------------------------------------+ 3点目ですが、ティックフラグは列挙型ではないので、EnumToString関数は適用できません。 prostotrader 2020.01.29 07:26 #26 Vladimir Mikhailov: コードはいつもの、最小限のものです。OnBookEventイベントは、最後の既知のティックを取得し、それをプリントアウトします。 3点目ですが、ティックフラグは列挙型ではないので、EnumToString関数は適用できません。 1ティックをコピーして、スキップがない ようにしたい :) OnBookEvent()はtickに何らかの変化があった場合に発生しますが、ある時点では は、いくつかのダニがいる可能性があります。端末は1つのティックではなく、ティックのPACKAGEを受け取ります。 私が推奨するインジケーター(Tape of all deals)には、説明文があります。 ロシア語でダラダラしてないで読めよ。 Vladimir Mikhailov 2020.01.29 07:28 #27 prostotrader: 1ティックをコピーして、スキップしない ようにする :) OnBookEvent()は、グラスに何らかの変化があった場合に起動されますが、ある時点から は、いくつかの刻みがあることがあります。端末は1つのティックではなく、ティックのPACKAGEを受け取ります。 私が推奨するインジケーター(Tape of all deals)には、説明文があります。 ロシア語で読むのを怠ってはいけない。 複数のティックを見るのは、歴史の逆転現象です。 prostotrader 2020.01.29 07:54 #28 Vladimir Mikhailov: 複数のティックを見ることは、歴史へのアピールにもなります。 端末の仕組みを全く理解していない。 インジケーターの コメントを読む!!! //+------------------------------------------------------------------+ //| Ticks_test.mq5 | //| Copyright 2019 prostotrader | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2019 prostotrader" #property link "https://www.mql5.com" #property version "1.00" //--- bool is_book; MqlTick ticks[]; ulong last_time; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { is_book = MarketBookAdd(Symbol()); int result = CopyTicks(Symbol(), ticks, COPY_TICKS_ALL, 0, 1); if(result > 0) { last_time = ticks[0].time_msc; } //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- if(is_book == true) MarketBookRelease(Symbol()); } //+------------------------------------------------------------------+ //| BookEvent function | //+------------------------------------------------------------------+ void OnBookEvent(const string &symbol) { if(Symbol() == symbol) { int result = CopyTicks(Symbol(), ticks, COPY_TICKS_ALL, last_time, 0); if(result > 0) { for(int i= 0; i<result; i++) { if((ticks[i].flags&TICK_FLAG_ASK)==TICK_FLAG_ASK) Print("Tick is ", "TICK_FLAG_ASK"); else if((ticks[i].flags&TICK_FLAG_BID)==TICK_FLAG_BID) Print("Tick is ", "TICK_FLAG_BID"); else if((ticks[i].flags&TICK_FLAG_BUY)==TICK_FLAG_BUY) Print("Tick is ", "TICK_FLAG_BUY"); else if((ticks[i].flags&TICK_FLAG_LAST)==TICK_FLAG_LAST) Print("Tick is ", "TICK_FLAG_LAST"); else if((ticks[i].flags&TICK_FLAG_SELL)==TICK_FLAG_SELL) Print("Tick is ", "TICK_FLAG_SELL"); else if((ticks[i].flags&TICK_FLAG_VOLUME)==TICK_FLAG_VOLUME) Print("Tick is ", "TICK_FLAG_VOLUME"); else Print("Unknown flag is ", ticks[i].flags); } last_time = ticks[0].time_msc + 1; } } } //+------------------------------------------------------------------+ 2020.01.29 10:51:42.077 Ticks_test (GOLD-3.20,M1) Tick is TICK_FLAG_ASK 2020.01.29 10:51:42.077 Ticks_test (GOLD-3.20,M1) Tick is TICK_FLAG_ASK 2020.01.29 10:51:42.077 Ticks_test (GOLD-3.20,M1) Tick is TICK_FLAG_BID 2020.01.29 10:51:42.121 Ticks_test (GOLD-3.20,M1) Tick is TICK_FLAG_BID 2020.01.29 10:51:42.194 Ticks_test (GOLD-3.20,M1) Tick is TICK_FLAG_BID 2020.01.29 10:51:50.903 Ticks_test (GOLD-3.20,M1) Tick is TICK_FLAG_BID 2020.01.29 10:51:52.235 Ticks_test (GOLD-3.20,M1) Tick is TICK_FLAG_BID 2020.01.29 10:51:52.399 Ticks_test (GOLD-3.20,M1) Tick is TICK_FLAG_BID 2020.01.29 10:52:05.174 Ticks_test (GOLD-3.20,M1) Tick is TICK_FLAG_BID 2020.01.29 10:52:24.630 Ticks_test (GOLD-3.20,M1) Tick is TICK_FLAG_BID 2020.01.29 10:52:24.630 Ticks_test (GOLD-3.20,M1) Tick is TICK_FLAG_LAST 2020.01.29 10:52:28.027 Ticks_test (GOLD-3.20,M1) Tick is TICK_FLAG_LAST 追加 上記の例では、新しく到着したダニのパケットを すべて「捕獲」しているわけではありません は、以前の時刻を持つ目盛りが含まれている場合があります。 コード「Ribbon of all trades」(コメント付き)をよく研究してください。 prostotrader 2020.01.29 08:43 #29 もし、インジケーターのコードを理解するのが難しい(もしくは怠け者)と感じるのであれば すべてのティックをリアルタイムに収集 する簡単なコードを見る。 //+------------------------------------------------------------------+ //| Ticks_test.mq5 | //| Copyright 2019 prostotrader | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2019 prostotrader" #property link "https://www.mql5.com" #property version "1.00" //--- bool is_book; MqlTick ticks[]; ulong last_time, mem_time; bool is_first; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { is_first = false; is_book = MarketBookAdd(Symbol()); int result = CopyTicks(Symbol(), ticks, COPY_TICKS_ALL, 0, 1); if(result > 0) { last_time = ticks[0].time_msc; is_first = true; } else { Alert("No start time!"); return(INIT_FAILED); } //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- if(is_book == true) MarketBookRelease(Symbol()); } //+------------------------------------------------------------------+ //| BookEvent function | //+------------------------------------------------------------------+ void OnBookEvent(const string &symbol) { if(Symbol() == symbol) { int result; if(is_first == true) { Print("First packet of ticks:"); result = CopyTicks(Symbol(), ticks, COPY_TICKS_ALL, last_time, 0); if(result > 0) { for(int i= 0; i<result; i++) { if((ticks[i].flags&TICK_FLAG_ASK)==TICK_FLAG_ASK) Print("Tick is ", "TICK_FLAG_ASK"); else if((ticks[i].flags&TICK_FLAG_BID)==TICK_FLAG_BID) Print("Tick is ", "TICK_FLAG_BID"); else if((ticks[i].flags&TICK_FLAG_BUY)==TICK_FLAG_BUY) Print("Tick is ", "TICK_FLAG_BUY"); else if((ticks[i].flags&TICK_FLAG_LAST)==TICK_FLAG_LAST) Print("Tick is ", "TICK_FLAG_LAST"); else if((ticks[i].flags&TICK_FLAG_SELL)==TICK_FLAG_SELL) Print("Tick is ", "TICK_FLAG_SELL"); else if((ticks[i].flags&TICK_FLAG_VOLUME)==TICK_FLAG_VOLUME) Print("Tick is ", "TICK_FLAG_VOLUME"); else Print("Unknown flag is ", ticks[i].flags); } is_first = false; mem_time = last_time; last_time = ticks[0].time_msc + 1; } } else { result = CopyTicks(Symbol(), ticks, COPY_TICKS_ALL, mem_time, 0); if(result > 0) { for(int i= 0; i<result; i++) { if(ticks[i].time_msc == mem_time) { Print("Tick with old time:"); if((ticks[i].flags&TICK_FLAG_ASK)==TICK_FLAG_ASK) Print("Tick is ", "TICK_FLAG_ASK"); else if((ticks[i].flags&TICK_FLAG_BID)==TICK_FLAG_BID) Print("Tick is ", "TICK_FLAG_BID"); else if((ticks[i].flags&TICK_FLAG_BUY)==TICK_FLAG_BUY) Print("Tick is ", "TICK_FLAG_BUY"); else if((ticks[i].flags&TICK_FLAG_LAST)==TICK_FLAG_LAST) Print("Tick is ", "TICK_FLAG_LAST"); else if((ticks[i].flags&TICK_FLAG_SELL)==TICK_FLAG_SELL) Print("Tick is ", "TICK_FLAG_SELL"); else if((ticks[i].flags&TICK_FLAG_VOLUME)==TICK_FLAG_VOLUME) Print("Tick is ", "TICK_FLAG_VOLUME"); else Print("Unknown flag is ", ticks[i].flags); } } } result = CopyTicks(Symbol(), ticks, COPY_TICKS_ALL, last_time, 0); if(result > 0) { Print("Ticks with new time:"); for(int i= 0; i<result; i++) { if((ticks[i].flags&TICK_FLAG_ASK)==TICK_FLAG_ASK) Print("Tick is ", "TICK_FLAG_ASK"); else if((ticks[i].flags&TICK_FLAG_BID)==TICK_FLAG_BID) Print("Tick is ", "TICK_FLAG_BID"); else if((ticks[i].flags&TICK_FLAG_BUY)==TICK_FLAG_BUY) Print("Tick is ", "TICK_FLAG_BUY"); else if((ticks[i].flags&TICK_FLAG_LAST)==TICK_FLAG_LAST) Print("Tick is ", "TICK_FLAG_LAST"); else if((ticks[i].flags&TICK_FLAG_SELL)==TICK_FLAG_SELL) Print("Tick is ", "TICK_FLAG_SELL"); else if((ticks[i].flags&TICK_FLAG_VOLUME)==TICK_FLAG_VOLUME) Print("Tick is ", "TICK_FLAG_VOLUME"); else Print("Unknown flag is ", ticks[i].flags); } mem_time = last_time; last_time = ticks[0].time_msc + 1; } } } } //+------------------------------------------------------------------+ Andrey Khatimlianskii 2020.01.29 11:31 #30 prostotrader: すべてのティックをリアルタイムに収集 するための、よりシンプルなコードを参照してください。 どうせCopyTicksが使われるなら、なぜ「リアルタイム」で収集するのか? 好きなタイミングで、正しい深さに刻みをコピーすることができます。 12345678910...26 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
正直、ECNについてこのリンクで何を読んでほしいのか、特に今まで知られていなかったことが理解できなかった)
私が?何かを求めていたのは、あなただったんですね。)))
外国為替市場と取引所の違いを理解されていないので、リンクを貼っておきました。
為替欄はFXでポイ捨てしないでください。
そうしたかったのだろうか?何かを求めていたのは、あなただったんですね。)))
FXとExchangeの違いが分からないからリンクを貼ったんだよ。
為替欄はFXでポイ捨てしないでください。
でも、それは無理な話なので、今あるもので満足するしかないんです。
そして、あなたも何かを理解していないかもしれない、そう思ったことはありませんか?例えば、あなたがリンクを貼った理由)
そしてもうひとつ、そもそも私はFXに言及した人間ではなく、すでに始まっている議論に踏み込んでいるのです。まず第一に。
B 2 - 為替のセクションで、異なる市場と株式市場を比較する議論を誰かが禁じたのでしょうか?
そして、3「スキーヤー対スノーボーダーのような句読点はやめましょう、それとも反対ですか?
チック分析に関する実験を交えた小さなまとめ。
1. OnTick ハンドラで相当数のティックをスキップしている。
ですから、入ってくるティックを通して取引の帯を分析したいのであれば、意味がありません。
この方法では、テスターでのアルゴリズムの結果と実際の取引結果が異なることになります。
別の方法として、CopyTicks() または CopyTicksRange() 関数を使用して履歴のティックを取得することにより、選択した期間または一定量の最後のディールのストリップを分析することが可能です。
この場合、テスターでアルゴリズムをテストした結果と実際の取引結果は同じになります。
デメリットは、アルゴリズムの性能が低いことです。
2.OnBookEventのイベント数は、過去のティックの数よりもはるかに多くなっていますが、これはティックに加えてこのイベントがティックの変化を処理するためであり、理解できることです。
そのため、このイベントを使えば、すべての受信ティックを分析できるように思えるかもしれません。
しかし、これはすべてのトレードがティックを通過するわけではありません。
成行注文はスライダーを通過しない場合がありますが、取引フィードに反映されます。
これは、マーケットスライダーが実際には注文の帳簿であり、必要な条件が満たされれば実行されるのを待っているからである。
例:ある取引がOnEventBookハンドラを経由しなかった(これは5ティックにも及ぶ)。
この場合も、最初のバリエーションと同様、ヒストリカル・ティックの分析が解決策となる。
このソリューションのマイナスは、テスターでのテストが不可能なことです。テスターの刻みの変化のイベントは発生しない。
3.tickフラグの8ビットが未記載なのは、答えが出なかった。別のフォーラムのスレッドで同じ質問をしました。
トレードのフィードを分析する方法は、すでに決めています。生産性は落ちますが、歴史を通じてです。
これによって、テスターでアルゴリズムをテストするときに、信頼できる結果を得ることができるようになりました。
皆さん、アイデアやディスカッションをありがとうございました。
チック分析に関する実験を交えた小さなまとめ。
1.OnTickハンドラで相当数のtickをスキップしている。
ですから、入ってくるティックを通して取引の帯を分析したいのであれば、意味がありません。
この方法では、テスターでのアルゴリズムの結果と実際の取引結果が異なることになります。
別の方法として、CopyTicks() または CopyTicksRange() 関数を使用して履歴のティックを取得することにより、選択した期間または一定量の最後のディールのストリップを分析することができます。
この場合、テスターでアルゴリズムをテストした結果と実際の取引結果は同じになります。
デメリットは、アルゴリズムの性能が低いことです。
2.OnBookEventのイベントには意味がある......。
しかし、これは真実ではなく、すべての案件が本を通過するわけではありません。
例-ある取引がOnEventBookハンドラを経由しなかった(しかも5ティックも)。
3.tickフラグの8ビットが未記載なのは、答えが出なかった。別のフォーラムのスレッドで同じ質問をしました。
2.tick builderのコードを投稿してください(何か間違っているのでは)。
3.プリンターで、EnumToString(flags)を実行します。
2.ティックビルダーコードを投稿する(何か間違っているのでは?)
3.プリンタでEnumToString(flags)を実行する。
コードはいつもの、最小限のものです。OnBookEventは最後の既知のtickを取得し、それを表示 する。
3点目ですが、ティックフラグは列挙型ではないので、EnumToString関数は適用できません。
コードはいつもの、最小限のものです。OnBookEventイベントは、最後の既知のティックを取得し、それをプリントアウトします。
3点目ですが、ティックフラグは列挙型ではないので、EnumToString関数は適用できません。
1ティックをコピーして、スキップがない ようにしたい :)
OnBookEvent()はtickに何らかの変化があった場合に発生しますが、ある時点では
は、いくつかのダニがいる可能性があります。端末は1つのティックではなく、ティックのPACKAGEを受け取ります。
私が推奨するインジケーター(Tape of all deals)には、説明文があります。
ロシア語でダラダラしてないで読めよ。
1ティックをコピーして、スキップしない ようにする :)
OnBookEvent()は、グラスに何らかの変化があった場合に起動されますが、ある時点から
は、いくつかの刻みがあることがあります。端末は1つのティックではなく、ティックのPACKAGEを受け取ります。
私が推奨するインジケーター(Tape of all deals)には、説明文があります。
ロシア語で読むのを怠ってはいけない。
複数のティックを見るのは、歴史の逆転現象です。
複数のティックを見ることは、歴史へのアピールにもなります。
端末の仕組みを全く理解していない。
インジケーターの コメントを読む!!!
追加
上記の例では、新しく到着したダニのパケットを すべて「捕獲」しているわけではありません
は、以前の時刻を持つ目盛りが含まれている場合があります。
コード「Ribbon of all trades」(コメント付き)をよく研究してください。
もし、インジケーターのコードを理解するのが難しい(もしくは怠け者)と感じるのであれば
すべてのティックをリアルタイムに収集 する簡単なコードを見る。
すべてのティックをリアルタイムに収集 するための、よりシンプルなコードを参照してください。
どうせCopyTicksが使われるなら、なぜ「リアルタイム」で収集するのか?
好きなタイミングで、正しい深さに刻みをコピーすることができます。