実質的なクリアランスは? - ページ 8 1234567891011121314 新しいコメント prostotrader 2021.10.21 23:06 #71 Алексей Тарабанов #: また、孫娘に「ZとY、YとXの間には関係がある」という問題を出すこともあります。ZのXへの依存性をグラフで描け。描いてくれるんです。 ありがとうございます、そうですか。 Vladimir Mikhailov 2021.10.21 23:17 #72 prostotrader #:とにかく、500件の記録を調べたが、原本が なければ100%確認することは不可能である。しかし、あなたは引用符を欠いている、それはMT5でも可能です(しかし、はるかに少ない)。時間を「消化できる」ように変換して、MT5でBIDとASKを別々に抽出するようにします。しかし、すでに、矛盾が多すぎる ことがお分かりいただけると思います はい、矛盾がありますね。取引所が提供する表や集計レートは、100%信頼できるものではありません。これは、取引所自身が述べていることです。 100%信頼できるデータは、やはり取引所によると、orders_logテーブルにしかないのですが、それを購読するには余分な費用がかかります。 MT5がどのフローやテーブルから、どのようにデータを取得しているかは、100%断言することはできず、推測するしかないのですが。 そのため、データをどこからどのように取っているのかがわかるので、自分の目的にあったソフトを使用しています。 今のところ満足のいく結果です。 prostotrader 2021.10.22 04:22 #73 Vladimir Mikhailov #:はい、齟齬はあります。取引所から送信される共通テーブルや集計タンブラーは、100%信頼できるものではありません。これは、取引所自身が述べていることです。 100%信頼できるデータは、やはり取引所によると、orders_logテーブルにしかありませんが、そのサブスクリプションにはいくらかの費用がかかります。 MT5がどのフローやテーブルから、どのようにデータを取得しているかは、100%断言することはできず、推測するしかないのですが。 そのため、データをどこからどのように取っているのかがわかるので、自分の目的にあったソフトを使用しています。 今のところ満足のいく結果です。 MT5は、データを取得した場所と同じPlazaIIからデータを取得します。 あなたの時間を変換しました、あまりにも多くの違いがあります、引用は同じですが、時間は異なります。 赤色で表示されている箇所は、引用を省略しています。 タイムコンバータ //+------------------------------------------------------------------+ //| Convertor.mq5 | //| Copyright 2021, prostotrader | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2021, prostotrader" #property link "https://www.mql5.com" #property version "1.00" #define STR_POS 8 ulong base_time_ns; ulong add_time; //добивка до Московского времи //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ string GetTime(const string b_str) { ulong cur_time = ulong(StringToInteger(b_str)); if(cur_time > 0) { ulong full_time = (cur_time + add_time); ulong diff_time = full_time - base_time_ns; if(diff_time > 0) { ulong sec_time = ulong(double(full_time)/1000000000); ulong ms_time = ulong(double((full_time - sec_time*1000000000))/1000000); ulong mcs_time = ulong(double( full_time - (sec_time*1000000000 + ms_time*1000000))/1000); ulong ns_time = full_time - (sec_time*1000000000 + ms_time*1000000 + mcs_time*1000); return(TimeToString(datetime(sec_time), TIME_SECONDS) + "." + StringFormat("%03i", ms_time) + "." + StringFormat("%03i", mcs_time) + "." + StringFormat("%03i", ns_time)); } else return("Time out of range!"); } return(""); } //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ bool GetParams(const string a_str, string &a_1, string &a_2, string &a_3, string &a_4, string &a_5, string &a_6, string &a_7, string &a_8,string &a_9) { if(base_time_ns > 0) { string tmp_str = a_str; int cnt = 0; while(cnt<STR_POS) { int a_pos = StringFind(tmp_str, ";"); if(a_pos > 0) { switch(cnt) { case 0: a_1 = StringSubstr(tmp_str, 0, a_pos); break; case 1: a_2 = StringSubstr(tmp_str, 0, a_pos); break; case 2: a_3 = StringSubstr(tmp_str, 0, a_pos); break; case 3: a_4 = StringSubstr(tmp_str, 0, a_pos); break; case 4: a_5 = StringSubstr(tmp_str, 0, a_pos); break; case 5: a_6 = StringSubstr(tmp_str, 0, a_pos); break; case 6: a_7 = StringSubstr(tmp_str, 0, a_pos); break; case 7: a_8 = GetTime(StringSubstr(tmp_str, 0, a_pos)); a_9 = GetTime(StringSubstr(tmp_str, a_pos + 1)); break; } } tmp_str = StringSubstr(tmp_str, a_pos + 1); cnt++; } return(true); } return(false); } //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { int str_cnt = 0; base_time_ns = ulong(D'20.10.2021 07:00:00') * 1000 * 1000 * 1000; add_time = (3*3600); add_time = add_time*1000000000; string in_str, par_1, par_2, par_3, par_4, par_5, par_6, par_7, par_8, par_9; int in_handle=FileOpen("gazp-20-10-2021.csv",FILE_READ|FILE_ANSI|FILE_CSV); if(in_handle!=INVALID_HANDLE) { int out_handle=FileOpen("gazp-20-10-2021_new.csv",FILE_WRITE|FILE_CSV); if(out_handle!=INVALID_HANDLE) { while(!FileIsEnding(in_handle)) { if(str_cnt == 0) { in_str = FileReadString(in_handle); FileWrite(out_handle, "id", "best_buy", "xamount_buy", "best_sell", "xamount_sell", "price", "xamount", "deal_time_ns", "mod_time_ns"); } else { in_str = FileReadString(in_handle); if(StringLen(in_str) > 0) { if(GetParams(in_str, par_1, par_2, par_3, par_4, par_5, par_6, par_7, par_8, par_9) == true) FileWrite(out_handle, par_1, par_2, par_3, par_4, par_5, par_6, par_7, par_8, par_9); } } str_cnt++; } FileClose(out_handle); } FileClose(in_handle); } //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ 私は、このファイルをさらに詳しく調べませんでした ファイル: gazr_20_10_12_21_time.zip 8362 kb prostotrader 2021.10.22 15:39 #74 ウラジミール! もちろん単一故障もあるでしょうが、引用文の欠落が多く、MT-5では時間的な問題がありますね (私の理解する限り、テーブルから何もせずに時間をコピーするだけです)。 自分たちで「保管」しているようです。 コードのチェック(抜けがないか) ここで "0 "を使っていますか? result = cg_conn_process(conn, 0, NULL); ファイル: gazr_20_10_12_21_time.zip 8483 kb Vladimir Mikhailov 2021.10.22 23:35 #75 prostotrader #:ウラジミール!もちろん単一故障もあるでしょうが、引用文の欠落が多く、MT-5では時間的な問題がありますね(私が理解する限り、テーブルから何もせずに時間をコピーするだけです)。自分たちで「保管」しているようです。コードのチェック(抜けがないか)ここで "0 "を使っていますか? はい、時間はテーブルから取ります。 conn_process では 0 が使用されます。 スキップはありません。 以下は、colback関数のコードです。 CG_RESULT MessageCallbackQuote(cg_conn_t* conn, cg_listener_t* listener, struct cg_msg_t* msg, void* data) { static size_t offset_isin_id = 0; static size_t offset_best_buy = 0; static size_t offset_xamount_buy = 0; //i8 static size_t offset_best_sell = 0; static size_t offset_xamount_sell = 0; //i8 static size_t offset_price = 0; //d16.5 static size_t offset_xamount = 0; //i8 static size_t offset_deal_time_ns = 0; //u8 static size_t offset_replAct = 0; //i8 static size_t offset_mod_time_ns = 0; //u8 switch (msg->type) { case CG_MSG_STREAM_DATA: { int64_t price_int = 0; int8_t price_scale = 0; long long xamount_buy = 0; long long xamount_sell = 0; double price; long long xamount = 0; unsigned long long deal_time_ns = 0; unsigned long long mod_time_ns = 0; double best_buy = 0; double best_sell = 0; cg_msg_streamdata_t* replmsg = (cg_msg_streamdata_t*)msg; char* data = (char*)replmsg->data; if (*(int64_t*)(data + offset_replAct) == 0 && fut_isin_id == *((int32_t*)(data + offset_isin_id))) { cg_bcd_get(((char*)(data + offset_best_buy)), &price_int, &price_scale); best_buy = ((double)price_int) / (pow(10.0, price_scale)); cg_bcd_get(((char*)(data + offset_best_sell)), &price_int, &price_scale); best_sell = ((double)price_int) / (pow(10.0, price_scale)); cg_bcd_get(((char*)(data + offset_price)), &price_int, &price_scale); price = ((double)price_int) / (pow(10.0, price_scale)); xamount_buy = *((int64_t*)(data + offset_xamount_buy)); xamount_sell = *((int64_t*)(data + offset_xamount_sell)); xamount = *((int64_t*)(data + offset_xamount)); mod_time_ns = *((uint64_t*)(data + offset_mod_time_ns)); deal_time_ns = *((uint64_t*)(data + offset_deal_time_ns)); size_t s = quote.size(); if (s == 0) { quote.push_back(SQuote(best_buy, xamount_buy, best_sell, xamount_sell, price, xamount, deal_time_ns, mod_time_ns)); } else { if (quote[s - 1].best_buy != fut_bid || quote[s - 1].best_sell != fut_ask || quote[s - 1].xamount_buy != xamount_buy || quote[s - 1].xamount_sell != xamount_sell || quote[s - 1].price != price || quote[s - 1].xamount != xamount || quote[s - 1].deal_time_ns != deal_time_ns) { quote.push_back(SQuote(best_buy, xamount_buy, best_sell, xamount_sell, price, xamount, deal_time_ns, mod_time_ns)); } } return(0); } } break; case CG_MSG_OPEN: { struct cg_scheme_desc_t* schemedesc = 0; cg_lsn_getscheme(listener, &schemedesc); size_t msgidx = 0; for (cg_message_desc_t* msgdesc = schemedesc->messages; msgdesc; msgdesc = msgdesc->next, msgidx++) { size_t fieldindex = 0; if (strcmp(msgdesc->name, "common") == 0) { for (cg_field_desc_t* fielddesc = msgdesc->fields; fielddesc; fielddesc = fielddesc->next, fieldindex++) { if (strcmp(fielddesc->name, "replAct") == 0 && strcmp(fielddesc->type, "i8") == 0) { offset_replAct = fielddesc->offset; } else if (strcmp(fielddesc->name, "isin_id") == 0 && strcmp(fielddesc->type, "i4") == 0) { offset_isin_id = fielddesc->offset; } else if (strcmp(fielddesc->name, "best_buy") == 0 && strcmp(fielddesc->type, "d16.5") == 0) { offset_best_buy = fielddesc->offset; } else if (strcmp(fielddesc->name, "best_sell") == 0 && strcmp(fielddesc->type, "d16.5") == 0) { offset_best_sell = fielddesc->offset; } else if (strcmp(fielddesc->name, "mod_time_ns") == 0 && strcmp(fielddesc->type, "u8") == 0) { offset_mod_time_ns = fielddesc->offset; } else if (strcmp(fielddesc->name, "deal_time_ns") == 0 && strcmp(fielddesc->type, "u8") == 0) { offset_deal_time_ns = fielddesc->offset; } else if (strcmp(fielddesc->name, "price") == 0 && strcmp(fielddesc->type, "d16.5") == 0) { offset_price = fielddesc->offset; } else if (strcmp(fielddesc->name, "xamount_buy") == 0 && strcmp(fielddesc->type, "i8") == 0) { offset_xamount_buy = fielddesc->offset; } else if (strcmp(fielddesc->name, "xamount_sell") == 0 && strcmp(fielddesc->type, "i8") == 0) { offset_xamount_sell = fielddesc->offset; } else if (strcmp(fielddesc->name, "xamount") == 0 && strcmp(fielddesc->type, "i8") == 0) { offset_xamount = fielddesc->offset; } } } } } break; case CG_MSG_P2REPL_ONLINE: { printf("%s: Futures qoute online!\n", cserver_time); fut_is_ready = true; } break; case CG_MSG_CLOSE: { printf("%s: Futures qoute offline!\n", cserver_time); fut_is_ready = false; } break; } return 0; }; prostotrader 2021.10.24 18:30 #76 Vladimir Mikhailov #:抜けはありません。 説明してください...。 Vladimir Mikhailov 2021.10.25 06:25 #77 prostotrader #:説明してください...。 この構造は、変更のあるすべてのレコードが保存されることを意味します。 size_t s = quote.size(); if (s == 0) { quote.push_back(SQuote(best_buy, xamount_buy, best_sell, xamount_sell, price, xamount, deal_time_ns, mod_time_ns)); } else { if (quote[s - 1].best_buy != fut_bid || quote[s - 1].best_sell != fut_ask || quote[s - 1].xamount_buy != xamount_buy || quote[s - 1].xamount_sell != xamount_sell || quote[s - 1].price != price || quote[s - 1].xamount != xamount || quote[s - 1].deal_time_ns != deal_time_ns) { quote.push_back(SQuote(best_buy, xamount_buy, best_sell, xamount_sell, price, xamount, deal_time_ns, mod_time_ns)); } } prostotrader 2021.10.25 09:29 #78 Vladimir Mikhailov #:この構造は、変更のあるすべてのレコードが保存されることを意味します。 コードじゃなくて、比較表でMT5には見積もりがあって、あなたにはないってことです。 Vladimir Mikhailov 2021.10.25 10:44 #79 prostotrader #:コードじゃなくて、比較表でMT5には見積もりがあって、あなたにはないってことです。 MT5では、orders_logまたはFASTからデータを取得することが多いようです。 Dmitry Fedoseev 2021.10.25 18:19 #80 Vladimir Mikhailov #:この構造は、変更のあるすべてのレコードが保存されることを意味します。 また、どこから呼ばれるのでしょうか?Expert Advisorから?エキスパートからの場合、抜けがある。 1234567891011121314 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
また、孫娘に「ZとY、YとXの間には関係がある」という問題を出すこともあります。ZのXへの依存性をグラフで描け。描いてくれるんです。
ありがとうございます、そうですか。
とにかく、500件の記録を調べたが、原本が なければ100%確認することは不可能である。
しかし、あなたは引用符を欠いている、それはMT5でも可能です(しかし、はるかに少ない)。
時間を「消化できる」ように変換して、MT5でBIDとASKを別々に抽出するようにします。
しかし、すでに、矛盾が多すぎる ことがお分かりいただけると思います
はい、矛盾がありますね。取引所が提供する表や集計レートは、100%信頼できるものではありません。これは、取引所自身が述べていることです。
100%信頼できるデータは、やはり取引所によると、orders_logテーブルにしかないのですが、それを購読するには余分な費用がかかります。
MT5がどのフローやテーブルから、どのようにデータを取得しているかは、100%断言することはできず、推測するしかないのですが。
そのため、データをどこからどのように取っているのかがわかるので、自分の目的にあったソフトを使用しています。
今のところ満足のいく結果です。
はい、齟齬はあります。取引所から送信される共通テーブルや集計タンブラーは、100%信頼できるものではありません。これは、取引所自身が述べていることです。
100%信頼できるデータは、やはり取引所によると、orders_logテーブルにしかありませんが、そのサブスクリプションにはいくらかの費用がかかります。
MT5がどのフローやテーブルから、どのようにデータを取得しているかは、100%断言することはできず、推測するしかないのですが。
そのため、データをどこからどのように取っているのかがわかるので、自分の目的にあったソフトを使用しています。
今のところ満足のいく結果です。
MT5は、データを取得した場所と同じPlazaIIからデータを取得します。
あなたの時間を変換しました、あまりにも多くの違いがあります、引用は同じですが、時間は異なります。
赤色で表示されている箇所は、引用を省略しています。
タイムコンバータ
私は、このファイルをさらに詳しく調べませんでした
ウラジミール!
もちろん単一故障もあるでしょうが、引用文の欠落が多く、MT-5では時間的な問題がありますね
(私の理解する限り、テーブルから何もせずに時間をコピーするだけです)。
自分たちで「保管」しているようです。
コードのチェック(抜けがないか)
ここで "0 "を使っていますか?
ウラジミール!
もちろん単一故障もあるでしょうが、引用文の欠落が多く、MT-5では時間的な問題がありますね
(私が理解する限り、テーブルから何もせずに時間をコピーするだけです)。
自分たちで「保管」しているようです。
コードのチェック(抜けがないか)
ここで "0 "を使っていますか?
はい、時間はテーブルから取ります。
conn_process では 0 が使用されます。
スキップはありません。
以下は、colback関数のコードです。
抜けはありません。
説明してください...。
説明してください...。
この構造は、変更のあるすべてのレコードが保存されることを意味します。
この構造は、変更のあるすべてのレコードが保存されることを意味します。
コードじゃなくて、比較表でMT5には見積もりがあって、あなたにはないってことです。
コードじゃなくて、比較表でMT5には見積もりがあって、あなたにはないってことです。
MT5では、orders_logまたはFASTからデータを取得することが多いようです。
この構造は、変更のあるすべてのレコードが保存されることを意味します。
また、どこから呼ばれるのでしょうか?Expert Advisorから?エキスパートからの場合、抜けがある。