亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

MQL5-JSON-API:用Socket+JSON讓MT5交易與Python無(wú)縫對(duì)接

MQL5-JSON-API:用Socket+JSON讓MT5交易與Python無(wú)縫對(duì)接 簡(jiǎn)介MQL5的JSON通信接口是一套面向MetaTrader 5平臺(tái)開(kāi)發(fā)者的開(kāi)源工具包主要用于打通交易終端與外部系統(tǒng)之間的實(shí)時(shí)數(shù)據(jù)通道。它圍繞市場(chǎng)價(jià)格數(shù)據(jù)即引號(hào)數(shù)據(jù)的獲取、解析與轉(zhuǎn)發(fā)完整展示了基于JSON格式、Socket套接字以及ZeroMQ底層消息庫(kù)的API設(shè)計(jì)思路適合有一定MQL5編程基礎(chǔ)、希望搭建自動(dòng)化交易或數(shù)據(jù)服務(wù)模塊的開(kāi)發(fā)者參考學(xué)習(xí)。壓縮包共含11個(gè)文件整體大小約49KB其中有多個(gè)mqh頭文件用于封裝JSON解析和錯(cuò)誤控制邏輯兩個(gè)mq5示例一個(gè)指標(biāo)、一個(gè)智能交易用于演示請(qǐng)求報(bào)價(jià)、處理響應(yīng)等核心流程同時(shí)附有md格式的說(shuō)明文檔、清理腳本以及許可證文件目錄結(jié)構(gòu)清晰便于按閱讀順序逐層理解。這套資源已被368人學(xué)習(xí)下載屬于典型的實(shí)戰(zhàn)型示例代碼。通過(guò)閱讀源碼可以掌握J(rèn)SON對(duì)象的編碼與解碼方法、套接字連接的建立與維護(hù)、ZeroMQ消息模式在MQL5中的具體應(yīng)用并能基于自帶示例快速改造出自己的實(shí)時(shí)報(bào)價(jià)推送模塊或歷史數(shù)據(jù)查詢工具從而顯著降低MT5生態(tài)與外部系統(tǒng)集成時(shí)的開(kāi)發(fā)門(mén)檻。1. MQL5-JSON-API 到底解決什么問(wèn)題把行情、交易和歷史數(shù)據(jù)變成 JSON 接口做量化的人遲早會(huì)撞上一個(gè)尷尬策略在外部程序里跑但交易執(zhí)行和數(shù)據(jù)源都在 MT5 里兩邊隔著一堵墻。MQL5-JSON-API 的核心思路很直接——把 MQL5 端的數(shù)據(jù)查詢、K線拉取、下單改單全部包裝成 JSON 格式的請(qǐng)求通過(guò) TCP Socket 或 ZeroMQ 暴露給外部程序Python、Node.js、Java 都能用同一套協(xié)議消費(fèi)這個(gè) trading-api。它解決的是外部程序怎么安全可控地驅(qū)動(dòng) MT5 執(zhí)行交易、讀取歷史數(shù)據(jù)這個(gè)老問(wèn)題。拿到這套資源之后不需要再手搓通信協(xié)議把封裝好的報(bào)價(jià)與交易層拿來(lái)改參數(shù)就能用。新手跑通連接即可練手熟手可以替換消息推送層換成自己的消息總線。2. MQL5-JSON-API 架構(gòu)選型為什么是 Socket JSON 而不是 WebRequest先交代清楚底層選擇后面所有排錯(cuò)才有依據(jù)。MQL5 留給開(kāi)發(fā)者的外部通信接口一直很有限官方的 WebRequest 看似能用實(shí)際做項(xiàng)目會(huì)被三條硬約束卡死這也是 MQL5-JSON-API 沒(méi)有走官方接口、而是在 MT5 端直接開(kāi) Socket 的根本原因。理解了這幾條你才知道什么時(shí)候該改配置、什么時(shí)候該換通信層。2.1 WebRequest 的三道坎白名單、短連接、單向通道第一道坎是白名單。WebRequest 只能訪問(wèn)在工具-選項(xiàng)-智能交易系統(tǒng)里手動(dòng)登記過(guò)的 URL交易圖表上還要勾選允許 WebRequest。域名每次變更哪怕只是端口從 80 改到 8080都要進(jìn)配置改一遍、重啟終端。對(duì)自動(dòng)化部署來(lái)說(shuō)這基本等于讓運(yùn)維天天做手工活。第二道坎是短連接。WebRequest 每次請(qǐng)求都是一開(kāi)一合服務(wù)端響應(yīng)完就斷開(kāi)連接狀態(tài)不保留。行情推送、服務(wù)端主動(dòng)向 MT5 下發(fā)指令這種場(chǎng)景完全做不了。有人用循環(huán) WebRequest 去輪詢一個(gè)遠(yuǎn)端命令隊(duì)列但一秒鐘輪詢一次已經(jīng)是極限輪詢太密會(huì)把終端主線程堵住太疏又損失實(shí)時(shí)性兩難。第三道坎是單向通道。MQL5 側(cè)永遠(yuǎn)只能作為 HTTP 客戶端外部程序沒(méi)法主動(dòng)推數(shù)據(jù)過(guò)來(lái)。換到交易場(chǎng)景就是這樣外部策略判斷出該開(kāi)倉(cāng)可它只能等著 MT5 過(guò)來(lái)取命令。MQL5-JSON-API 的做法正好相反MT5 端運(yùn)行后主動(dòng)監(jiān)聽(tīng)本地端口外部程序作為客戶端連接過(guò)來(lái)主動(dòng)權(quán)回到外部一側(cè)。實(shí)際部署時(shí)我一般綁定 127.0.0.1再讓本機(jī)的 Python 服務(wù)連它。外部程序和 MT5 不在同一臺(tái)機(jī)器時(shí)才綁內(nèi)網(wǎng)網(wǎng)卡并加一層 token 校驗(yàn)避免端口裸奔。2.2 請(qǐng)求與響應(yīng)模型id、method、params 三個(gè)字段必須定死協(xié)議字段決定后續(xù)對(duì)接是否省心。我拆過(guò)幾份 MQL5-JSON-API 的實(shí)現(xiàn)能直接落地的版本協(xié)議上都有一個(gè)共同的三段式結(jié)構(gòu)id、method、params。id 是外部程序自增生成的請(qǐng)求編號(hào)。這一項(xiàng)不能省因?yàn)?MT5 端單線程處理消息多個(gè)請(qǐng)求并發(fā)進(jìn)來(lái)時(shí)響應(yīng)順序和請(qǐng)求順序沒(méi)法保證一致。外部程序拿到響應(yīng)必須先讀 id才知道對(duì)應(yīng)哪次請(qǐng)求。我習(xí)慣用整數(shù)序列號(hào)起始 1000出問(wèn)題時(shí)對(duì)著日志按 id 就能串起完整調(diào)用鏈。method 是動(dòng)作名get_rates、get_tick、get_positions、order_send、order_close 是常見(jiàn)路由。method 直接決定 params 的解析分支相當(dāng)于 RPC 路由表。命名上建議統(tǒng)一小寫(xiě)加下劃線避免大小寫(xiě)問(wèn)題成為外部程序的兼容性坑。params 是參數(shù)對(duì)象內(nèi)容隨 method 變化。get_rates 需要 symbol、timeframe、start、countorder_send 需要 symbol、volume、action、type、price、sl、tp。字段類(lèi)型在文檔里寫(xiě)清楚服務(wù)端再做一次類(lèi)型校驗(yàn)比靠外部程序自覺(jué)要可靠得多。響應(yīng)結(jié)構(gòu)同樣要統(tǒng)一。我被問(wèn)得最多的問(wèn)題是為什么響應(yīng)里有時(shí)有 result、有時(shí)有 error混亂的根源是兩邊寫(xiě)協(xié)議時(shí)沒(méi)有約定成功和失敗的形狀。這里建議定死為要么 result 非空、要么 error 非空不能兩個(gè)同時(shí)給。{ id: 1001, result: { status: ok, rates: [] }, error: null }error 字段也不要只放一段人話最好是一個(gè)帶 code 和 message 的對(duì)象。外部程序可以根據(jù) code 判斷是否重試message 留給人在排查時(shí)看。成功的 result 里 status 字段可以省略直接把 result 本身當(dāng)作狀態(tài)即可。2.3 ZeroMQ 的適用邊界什么時(shí)候值得多引一個(gè) DLL外部程序只有一個(gè)、交互都是請(qǐng)求-響應(yīng)時(shí)純 TCP Socket 完全夠用代碼量最小部署也最簡(jiǎn)單。但一旦出現(xiàn)一個(gè) MT5 對(duì)多個(gè)外部客戶端或MT5 要主動(dòng)往外推數(shù)據(jù)這兩類(lèi)需求手寫(xiě) Socket 就有點(diǎn)吃力了。連接管理、消息幀邊界、斷線重連全要自己實(shí)現(xiàn)這也是 MQL5-JSON-API 的 ZeroMQ 版本存在的價(jià)值。用 ZeroMQ 封裝時(shí)核心交易鏈路和數(shù)據(jù)查詢建議走 REQ/REP外部發(fā)請(qǐng)求、MT5 回復(fù)一問(wèn)一答語(yǔ)義清晰。實(shí)時(shí)行情廣播走 PUB/SUBMT5 作為 PUB 端發(fā)布 JSON 消息外部按主題訂閱。最常用的主題可以按品種和周期拆比如 XAUUSD.tick、EURUSD.M1訂閱端想收什么就訂閱什么不需要把全部數(shù)據(jù)推給所有客戶端。選型上還有一個(gè)容易被忽略的成本ZeroMQ 在 MQL5 里要借助外部 DLL這會(huì)引入運(yùn)行庫(kù)依賴和終端允許 DLL 導(dǎo)入的開(kāi)關(guān)。如果你的部署環(huán)境是托管服務(wù)器且不允許加載 DLL那就只能回歸純 Socket 方案把多客戶端分發(fā)寫(xiě)在業(yè)務(wù)層。我先講清這個(gè)邊界是因?yàn)橐?jiàn)過(guò)不少團(tuán)隊(duì)在純 Socket 能解決的情況下硬上 ZeroMQ最后反而被 DLL 依賴卡在生產(chǎn)環(huán)境外面。注意ZeroMQ 版本和純 Socket 版本在 MQL5-JSON-API 內(nèi)部是兩套不同的接入層業(yè)務(wù)層可以復(fù)用。遷移成本主要在連接層協(xié)議層不需要?jiǎng)印?. 實(shí)戰(zhàn)搭建從 Socket 初始化到歷史數(shù)據(jù)與交易指令收發(fā)原理說(shuō)完直接看怎么把服務(wù)端跑起來(lái)。MQL5-JSON-API 的代碼組織大體分三層連接層負(fù)責(zé) Socket 的創(chuàng)建、監(jiān)聽(tīng)、讀取協(xié)議層負(fù)責(zé) JSON 的序列化和解析業(yè)務(wù)層把 method 映射到 MQL5 原生調(diào)用。下面按這三層拆開(kāi)。3.1 MQL5 端 Socket 初始化與消息循環(huán)MQL5 沒(méi)有異步 Socket消息循環(huán)通常落在定時(shí)器里。用 OnInit 創(chuàng)建監(jiān)聽(tīng)套接字int g_listener INVALID_HANDLE; int OnInit() { g_listener SocketCreate(); if(g_listener INVALID_HANDLE) { Print(SocketCreate error: , GetLastError()); return INIT_FAILED; } // 端口要和外部客戶端約定好建議避開(kāi)特權(quán)端口 if(!SocketBind(g_listener, 5555)) { Print(SocketBind error: , GetLastError()); return INIT_FAILED; } if(!SocketListen(g_listener)) { Print(SocketListen error: , GetLastError()); return INIT_FAILED; } EventSetTimer(1); // 每秒觸發(fā)一次OnTimer用來(lái)accept和讀數(shù)據(jù) return INIT_SUCCEEDED; }SocketCreate 返回一個(gè)句柄失敗時(shí) GetLastError() 是具體錯(cuò)誤碼。SocketBind 第二參數(shù)是端口號(hào)同一臺(tái)機(jī)器跑多個(gè) EA 實(shí)例時(shí)端口要做成輸入?yún)?shù)不要硬編碼。EventSetTimer(1) 把 OnTimer 設(shè)成每秒執(zhí)行一次這個(gè)頻率對(duì)非高頻消息夠用也不會(huì)搶行情線程的時(shí)間片。核心循環(huán)放在 OnTimer 里用 SocketAccept 接受新連接再循環(huán)讀取數(shù)據(jù)避免一次 SocketReceive 只讀到半個(gè) JSONvoid OnTimer() { int client SocketAccept(g_listener); if(client ! INVALID_HANDLE) { Print(Client connected, handle, client); g_client client; // 單客戶端版本多客戶端見(jiàn)第5章 } if(g_client ! INVALID_HANDLE) { ProcessSocketInput(); } } void ProcessSocketInput() { uchar buffer[2048]; uint timeout 10; int received SocketReceive(g_client, buffer, sizeof(buffer), timeout); if(received 0) { string message CharArrayToString(buffer, 0, received, CP_UTF8); // 這里按method分發(fā)到具體處理函數(shù) string response HandleRequest(message); char response_data[]; int length StringToCharArray(response, response_data, 0, WHOLE_ARRAY, CP_UTF8) - 1; SocketSend(g_client, response_data, length); } }SocketReceive 的 timeout 單位是毫秒返回 0 表示超時(shí)小于 0 才是出錯(cuò)別把超時(shí)當(dāng)成斷開(kāi)。CharArrayToString 用 CP_UTF8 是因?yàn)?JSON 內(nèi)容里可能帶非 ASCII 字符。發(fā)送響應(yīng)時(shí) StringToCharArray 會(huì)帶上結(jié)尾符減掉 1 避免多出一個(gè) \0這是很多人卡過(guò)的小坑。但這段代碼只處理了單客戶端而且讀一次就解析一次TCP 半包問(wèn)題仍然存在。放到真實(shí)場(chǎng)景中ProcessSocketInput 需要改進(jìn)成維護(hù)接收緩沖區(qū)、累積字節(jié)直到遇到換行符再解析。這個(gè)處理放到第四章講先把主干功能走通。3.2 歷史數(shù)據(jù)查詢CopyRates 的參數(shù)與時(shí)間戳處理外部程序最常調(diào)用的方法就是拉歷史數(shù)據(jù)。CopyRates 能把 K 線直接復(fù)制到 MqlRates 數(shù)組里但參數(shù)細(xì)節(jié)決定返回質(zhì)量。bool HandleGetRates(const string symbol, string timeframe, datetime start_time, int count, string response) { ENUM_TIMEFRAMES tf StringToTimeframe(timeframe); MqlRates rates[]; ArraySetAsSeries(rates, true); // 結(jié)束時(shí)間取當(dāng)前報(bào)價(jià)時(shí)間start_time由外部傳字符串轉(zhuǎn)datetime datetime stop_time TimeCurrent(); int copied CopyRates(symbol, tf, start_time, stop_time, rates); if(copied 0) { response BuildError(-1, CopyRates failed); return false; } // 限制返回條數(shù)防止一次拉太多卡住終端 int use_count MathMin(count, copied); response BuildRatesResponse(rates, use_count); return true; }CopyRates 參數(shù)順序是品種、周期、起始位置、結(jié)束位置、輸出數(shù)組。start_time 是 datetime 類(lèi)型外部傳進(jìn)來(lái)的是字符串需要先用 StringToTime 轉(zhuǎn)。用 TimeCurrent() 作為結(jié)束時(shí)間是拉最近一段K線的常見(jiàn)做法它取的是終端維護(hù)的最新報(bào)價(jià)時(shí)間。ArraySetAsSeries(rates, true) 讓數(shù)組下標(biāo) 0 對(duì)應(yīng)最新一根K線外部客戶端處理時(shí)會(huì)少繞一個(gè)彎。序列化時(shí)我只保留最小必要字段time、open、high、low、close、tick_volume。tick_volume 是 tick 成交量不是真實(shí)交易量部分品種會(huì)有 real_volume但實(shí)盤(pán)賬戶經(jīng)常拿不到所以默認(rèn)不給避免外部程序拿到空字段后產(chǎn)生誤判。time 字段直接用 Unix 秒不帶時(shí)區(qū)信息時(shí)區(qū)換算放在外部展示層。3.3 交易指令下發(fā)JSON 字段和 MqlTradeRequest 的映射交易接口是整個(gè) API 里最敏感的部分字段映射必須準(zhǔn)確。從 JSON 請(qǐng)求到 MqlTradeRequest常見(jiàn)字段對(duì)照如下。JSON 字段類(lèi)型MqlTradeRequest 映射說(shuō)明actionstringreq.actiondeal 對(duì)應(yīng) TRADE_ACTION_DEALsymbolstringreq.symbol品種名必須精確匹配typestringreq.typebuy/sell 映射到 ORDER_TYPE_BUY/SELLvolumedoublereq.volume注意最小手?jǐn)?shù)限制pricedoublereq.price建議顯式傳服務(wù)端只做差值校驗(yàn)sl/tpdoublereq.sl / req.tp止損止盈價(jià)magiclongreq.magic用于策略識(shí)別交易來(lái)源請(qǐng)求 JSON 示例{ id: 2001, method: order_send, params: { symbol: XAUUSD, action: deal, type: buy, volume: 0.01, price: 2045.5, sl: 2030.0, tp: 2060.0, magic: 20250101 } }MQL5 端收到后填充結(jié)構(gòu)體的核心代碼如下bool HandleOrderSend(JsonObject params, string response) { MqlTradeRequest req {}; MqlTradeResult res {}; req.action TRADE_ACTION_DEAL; req.symbol params[symbol]; req.volume params[volume].ToDouble(); req.type params[type] sell ? ORDER_TYPE_SELL : ORDER_TYPE_BUY; req.price params[price].ToDouble(); req.sl params[sl].ToDouble(); req.tp params[tp].ToDouble(); req.magic params[magic].ToLong(); req.deviation 20; // 滑點(diǎn)容忍度單位是點(diǎn)數(shù) bool ok OrderSend(req, res); if(!ok || res.retcode ! TRADE_RETCODE_DONE) { response BuildError(res.retcode, ReturnCodeMessage(res.retcode)); return false; } response BuildOrderResult(res); return true; }MqlTradeRequest 必須用 {} 做零初始化否則殘留字段會(huì)帶來(lái)詭異報(bào)錯(cuò)。price 字段我特意要求外部顯式傳參而不是服務(wù)端繼續(xù)用 Ask/Bid因?yàn)榭焖傩星橄路?wù)端現(xiàn)取價(jià)很容易和外部策略邏輯不一致。retcode 是交易服務(wù)器返回的結(jié)果碼OrderSend 返回 true 只代表請(qǐng)求已受理不能認(rèn)為已經(jīng)成交最終狀態(tài)以 TRADE_RETCODE_DONE10009為準(zhǔn)。如果啟用算法交易成交結(jié)果還會(huì)通過(guò) OnTradeTransaction 異步通知過(guò)來(lái)。JSON API 的請(qǐng)求-響應(yīng)模式通常不會(huì)主動(dòng)推送異步結(jié)果外部程序要做狀態(tài)確認(rèn)就輪詢 get_positions 或 get_deals。4. 避坑指南MQL5-JSON-API 使用中五個(gè)典型故障與排查下面五條來(lái)自實(shí)際跑通和修過(guò)的部署環(huán)境按現(xiàn)象-原因-解決展開(kāi)。遇到類(lèi)似癥狀可以按順序排查。4.1 現(xiàn)象客戶端連接成功但收不到完整響應(yīng)外部程序 SocketConnect 返回成功發(fā)送請(qǐng)求后 MT5 日志顯示收到了但響應(yīng) JSON 被截?cái)喽嗾?qǐng)求幾次后數(shù)據(jù)開(kāi)始錯(cuò)位。原因SocketReceive 一次只返回當(dāng)前可讀的字節(jié)數(shù)TCP 會(huì)把一條消息拆成好幾分片。單次讀就做解析必然遇到半包。另一個(gè)常見(jiàn)來(lái)源是 MQL5 端發(fā)送時(shí)多帶上一個(gè)字符串結(jié)尾符。解決接收端做緩沖拼接按消息邊界切分。實(shí)現(xiàn)成本最低的辦法是協(xié)議約定每條 JSON 以換行符 \n 結(jié)束。服務(wù)端循環(huán) SocketReceive把新數(shù)據(jù)追進(jìn)緩沖區(qū)直到末尾出現(xiàn) \n 才截取解析。發(fā)送端記得去掉 StringToCharArray 產(chǎn)生的結(jié)尾符。這個(gè)約定也是很多 MQL5-JSON-API 默認(rèn)采用的消息分幀方式。4.2 現(xiàn)象拉一年 M1 歷史數(shù)據(jù)時(shí) MT5 終端卡死外部請(qǐng)求把 start_time 設(shè)到一年前沒(méi)有限制返回條數(shù)MT5 終端界面直接無(wú)響應(yīng)幾十秒。原因CopyRates 是同步阻塞調(diào)用MQL5 程序跑在終端主線程上一次拉幾萬(wàn)根K線會(huì)占據(jù)大量行情處理時(shí)間。解決服務(wù)端對(duì)單次請(qǐng)求條數(shù)做硬限制比如最多 5000 根。需要更長(zhǎng)歷史時(shí)外部客戶端分頁(yè)拉取以上一批最后一根K線時(shí)間作為下一次的 start_time。服務(wù)端最好再加一層簡(jiǎn)單的日期緩存重復(fù)請(qǐng)求直接命中避免反復(fù)打接口。4.3 現(xiàn)象外部程序解析出來(lái)的K線時(shí)間比圖表少 8 小時(shí)Python 端打印 K線時(shí)間是凌晨 02:00MT5 圖表同一根K線顯示 10:00。原因CopyRates 返回的 datetime 是 Unix 時(shí)間戳本質(zhì)是 UTC 時(shí)間。MT5 圖表按經(jīng)紀(jì)商時(shí)區(qū)顯示不同平臺(tái)有時(shí)差兩邊就對(duì)不上。解決協(xié)議層統(tǒng)一時(shí)間基準(zhǔn)。API 返回的 time 字段一律用 UTC Unix 秒外部展示層做時(shí)區(qū)換算。請(qǐng)求里如果允許傳入日期字符串同樣要求 UTC 字符串并在文檔里寫(xiě)明。最怕的是同一個(gè)請(qǐng)求里 start_time 用本地時(shí)間、響應(yīng)又是 UTC對(duì)賬到凌晨必亂。4.4 現(xiàn)象ZeroMQ 版 API 加載失敗客戶端連接超時(shí)換到 ZeroMQ 封裝版本后MT5 端似乎正常外部客戶端連接超時(shí)日志里有 DLL 加載失敗痕跡。原因八成是終端沒(méi)有開(kāi)啟允許 DLL 導(dǎo)入或者 libzmq 的依賴庫(kù)缺失、dll 位置放錯(cuò)。解決先在工具-選項(xiàng)-智能交易系統(tǒng)勾選允許 DLL 導(dǎo)入。再把 dll 和 MQL5 腳本放在同一發(fā)布目錄注意主 dll 的依賴項(xiàng)要一起帶過(guò)去。部署到新機(jī)器時(shí)優(yōu)先選靜態(tài)編譯版本少背運(yùn)行庫(kù)環(huán)境債。4.5 現(xiàn)象請(qǐng)求體里帶特殊字符就解析失敗外部傳參數(shù)帶引號(hào)、反斜杠或中文MT5 端返回 parse error純英文數(shù)字則正常。原因手寫(xiě) JSON 解析器沒(méi)有正確處理轉(zhuǎn)義和 UTF-8一遇到嵌套引號(hào)、反斜杠就崩。部分實(shí)現(xiàn)為了省事用 StringFind 找大括號(hào)做解析經(jīng)不起揉搓。解決不要自己寫(xiě) JSON 解析器用成熟庫(kù)替換。資源包里一般會(huì)帶 JSON 解析庫(kù)放在 Include 目錄正確引用即可。MQL5 端讀取 Socket 數(shù)據(jù)統(tǒng)一用 CP_UTF8避免中文品種名亂碼。我接手任何 MQL5 JSON 資源時(shí)第一件事就是確認(rèn)解析庫(kù)版本把它換成長(zhǎng)期驗(yàn)證過(guò)的實(shí)現(xiàn)。5. 進(jìn)階改造從單連接升級(jí)到多客戶端與行情推送把基礎(chǔ)鏈路跑通之后單客戶端模式在實(shí)盤(pán)里很快就不夠用。策略程序、風(fēng)控腳本、手工監(jiān)控面板都要連同一臺(tái) MT5需要把接入層從單連接升級(jí)成能區(qū)分客戶端身份的服務(wù)模式。5.1 多客戶端接入連接句柄按客戶端 ID 管理純 Socket 實(shí)現(xiàn)里把全局唯一的 g_client 換成結(jié)構(gòu)體數(shù)組每個(gè)客戶端保存套接字句柄和自己的 id。MQL5 無(wú)法直接用自定義類(lèi)存連接我一般用兩個(gè)平行數(shù)組管理int g_clients[]; string g_client_ids[]; void OnTimer() { // 每輪先接受所有新連接再逐個(gè)處理已有連接 int new_client SocketAccept(g_listener); if(new_client ! INVALID_HANDLE) { int size ArraySize(g_clients); ArrayResize(g_clients, size 1); ArrayResize(g_client_ids, size 1); g_clients[size] new_client; g_client_ids[size] client_ IntegerToString(size 1); } for(int i 0; i ArraySize(g_clients); i) { if(g_clients[i] ! INVALID_HANDLE) ReadAndDispatch(g_clients[i], g_client_ids[i]); } }MQL5 數(shù)組不能直接刪除中間元素客戶端斷開(kāi)后把句柄置為 INVALID_HANDLE數(shù)組長(zhǎng)度只增不減。一次交易會(huì)話通常也就幾個(gè)客戶端內(nèi)存增長(zhǎng)量可以接受。真正重要的是連接假死清理MQL5 端沒(méi)有內(nèi)置空閑檢測(cè)要靠在協(xié)議里約定心跳。外部客戶端 10 秒發(fā)一次 ping服務(wù)端記錄每個(gè)客戶端上次活躍時(shí)間超過(guò) 30 秒沒(méi)有消息就斷開(kāi)清理。多客戶端還要考慮響應(yīng)怎么回到正確的連接。每個(gè)連接是獨(dú)立 Socket請(qǐng)求和響應(yīng)天然隔離但派生出的異步推送成交回報(bào)、風(fēng)控告警要按客戶端訂閱項(xiàng)分發(fā)這就要在客戶端連接握手階段登記它的訂閱列表而不是廣播給所有人。5.2 ZeroMQ PUB/SUB 行情推送快照與增量結(jié)合實(shí)時(shí)行情是最容易把 MT5 拖垮的地方。每來(lái)一個(gè) tick 就序列化一條 JSON 推送終端主線程根本忙不過(guò)來(lái)。我的做法是訂閱 Tick 后用緩沖區(qū)聚合成批固定每 200 毫秒推一批增量void OnTick() { MqlTick tick; SymbolInfoTick(_Symbol, tick); // 先把tick攢到批量緩沖區(qū)攢滿100條或滿200ms再推 g_tick_buffer[g_tick_count] tick; if(GetTickCount() - g_last_push_ts 200 || g_tick_count 100) { PushTickBatch(); } }外部客戶端第一次訂閱時(shí)先用 get_tick 拿一次當(dāng)前快照之后接收增量自行拼接出連續(xù)狀態(tài)。推送消息的 JSON 只帶訂閱主題和價(jià)格變化比如快照消息{ topic: XAUUSD.tick, type: snapshot, data: { time: 1700000000, price: 2045.5, volume: 100 } }增量消息只帶變化字段{ topic: XAUUSD.tick, type: delta, data: { time: 1700000005, price: 2045.6 } }頻率上200 毫秒一批對(duì)大多數(shù)策略足夠也能把消息量控制在每秒幾十條以內(nèi)不會(huì)堵塞外部程序的消息隊(duì)列。PUB/SUB 下 ZeroMQ 自己會(huì)做斷線重連和消息積壓但積壓不是無(wú)限容忍的。外部客戶端消費(fèi)不過(guò)來(lái)時(shí)內(nèi)存會(huì)持續(xù)膨脹要在服務(wù)端設(shè)定發(fā)送緩沖區(qū)上限超閾值時(shí)丟棄最舊的批量消息。5.3 心跳與安全校驗(yàn)長(zhǎng)連接最容易忽略的一層長(zhǎng)連接跑起來(lái)后的隱患是連接假死。外部程序崩潰后 TCP 連接可能還開(kāi)著MQL5 端不知道反復(fù)寫(xiě)入后句柄就開(kāi)始報(bào)錯(cuò)。我在協(xié)議里固定增加一組心跳方法外部每 10 秒發(fā)一次 ping服務(wù)端回 pong同時(shí)記錄每個(gè)客戶端最后一次收到消息的時(shí)間。超過(guò) 30 秒無(wú)消息的客戶端直接斷開(kāi)。對(duì)多客戶端數(shù)組遍歷時(shí)標(biāo)記為超時(shí)的連接立即釋放句柄。安全校驗(yàn)要前置。MQL5-JSON-API 暴露的是交易能力如果機(jī)器被掃描到 5555 端口又沒(méi)校驗(yàn)等于把下單權(quán)限送人。我采用 init 握手外部連接建立后第一條消息必須是 auth 方法并帶 token驗(yàn)證通過(guò)才把連接標(biāo)記為可用其余 method 一律返回 auth error。token 放在外部配置文件中不寫(xiě)進(jìn)代碼倉(cāng)庫(kù)。6. 一個(gè)驗(yàn)證技巧用 Python 腳本對(duì)整套 API 做端到端檢查接入這套 MQL5-JSON-API 之后第一件事不是寫(xiě)業(yè)務(wù)代碼而是用一個(gè)小腳本把整條鏈路從頭到尾驗(yàn)證一遍確認(rèn)連接、請(qǐng)求、解析、交易通道都通。我習(xí)慣把這個(gè)腳本保存成 verify_api.py每次改完 MQL5 端代碼就跑一遍作為回歸測(cè)試的基礎(chǔ)。腳本邏輯非常簡(jiǎn)單建立 Socket發(fā)送一個(gè) get_tick 請(qǐng)求斷言返回的 JSON 里 id 和請(qǐng)求一致、error 為 null再檢查結(jié)果里包含 symbol 和 price 字段。如果服務(wù)端配置了 init 握手先發(fā)送 auth 再發(fā)業(yè)務(wù)請(qǐng)求import json import socket def rpc(sock, method_id, method, params): ### 構(gòu)造JSON請(qǐng)求末尾加\n作為消息邊界 request { id: method_id, method: method, params: params } sock.sendall((json.dumps(request) \n).encode(utf-8)) # 循環(huán)接收直到收到完整的一行 response while not response.endswith(\n): response sock.recv(4096).decode(utf-8) return json.loads(response.strip()) sock socket.create_connection((127.0.0.1, 5555), timeout5) # 先握手再查實(shí)時(shí)報(bào)價(jià) print(rpc(sock, 1, auth, {token: test_token})) result rpc(sock, 2, get_tick, {symbol: XAUUSD}) print(result) sock.close()發(fā)送方在 JSON 后追加換行符和服務(wù)端約定的消息邊界保持一致接收端循環(huán)讀直到緩沖區(qū)以換行結(jié)尾。拿到結(jié)果后重點(diǎn)核對(duì)三件事id 是否原樣返回、error 是否為 null、result 內(nèi)字段名是否和文檔一致。這個(gè)腳本可以繼續(xù)擴(kuò)展成回歸測(cè)試把 get_rates、get_positions、order_send 依次執(zhí)行把每步的響應(yīng)打印出來(lái)。我第一次用類(lèi)似腳本接入時(shí)發(fā)現(xiàn) token 流程就占了一半問(wèn)題先握手再請(qǐng)求的邏輯一旦跑通后續(xù)隱患少了很多。order_send 的驗(yàn)證一定要在模擬賬號(hào)上跑把價(jià)格、手?jǐn)?shù)、品種核對(duì)無(wú)誤后再切真實(shí)賬戶。就算這樣首次實(shí)盤(pán)我仍然會(huì)掛只讀監(jiān)控不放開(kāi)自動(dòng)交易權(quán)限跑一個(gè)完整交易時(shí)段確認(rèn)返回碼和持倉(cāng)變化一致。從那以后我每次部署 MQL5-JSON-API 到新環(huán)境都強(qiáng)制走一遍這個(gè)端到端腳本先驗(yàn)證再談業(yè)務(wù)功能。這套資源本身把連接、協(xié)議、交易封裝都做好了但環(huán)境差異永遠(yuǎn)存在驗(yàn)證腳本就是環(huán)境差異的照妖鏡。拿到資源包以后先從這一段開(kāi)始希望這個(gè)習(xí)慣能幫你在接入時(shí)省下幾個(gè)通宵排查的時(shí)間。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
手机看片日韩人妻| 福利天堂| 欧美青青草视频| 天天天肏屄肏屄肏屄欧美欧美| 一区二区三区视频| 国产午夜激片Av毛片不卡| 丁香五月婷婷五月| 欧洲与亚洲欧美精品中文字幕| 一本大道久| 欧美亚洲第一页| 成人免费在线网站| 国产美女激情| 91劲爆| 久久久久久久久久va| 人妻熟女午夜精品在线| 51一区二区三区| 午夜激情成人在线观看| 日日干夜夜欢| 国产福利电影| 台湾佬中文娱乐自偷自拍| 综合色区偷拍| 亚洲无套久久嗯嗯| 五月天亚洲色图| 奇米四色影视777久久久| 香一区二区三区| 高清孕妇孕交 交| 免费av在线播放二区| 日本综合久久| 在线二区不卡| 东京日日夜夜| A级毛片在线看免费| 中文字幕加勒比海高清无码免费视频| 一级乱伦网站| 美女天天干| 色香阁在线| 色色九区| 亚洲图片偷拍欧美| 超碰在线99| 神马麻豆福利院| 啪啪资源网| 精品综合久久久久久97| 亚洲熟妇自偷自拍另欧美| 亚洲骚逼少妇| xxx亚洲午夜天堂| 亚洲 日本 不卡| 久久国产视频性吧| 欧成人在线| 色综合99| 三级特黄60分钟播放| 欧美操逼视频二区| 可以在线观看AV的网站| 久久久久久人| 五月丁香啪啪啪| 欧美激情综合| 91操人| 天堂8在线新版官网| 搞中出视频在线观看| 9国产超碰| 2017天天透天天通天天擦| 乱伦系列一区二区| 伊人网免费视频| av一区二区三区四区五区久草臀| 被体育老师抱着c到高潮| 伊人伊人LD| 欧美大香蕉专区网| 91精品人妻| 久久a久久| 国产精品日韩在线一区| 精品无人区麻豆乱码1区2区图片| 人妻天天夜夜爽一区二区| 人人操人人舒服| 97射欧美| 日本黄色XXX| 野狼激情网| 国产对白刺激视频| www欧美91| 日本一天色道久久久精品视频| 人人妻人人狠人人| 屁股久久久久久| 亚洲视频一二区| 色婷婷久久| 亚洲密乳AV| 清纯唯美综合| 婷婷精品国产欧美精品亚洲人人爽| 九九在线视频| aⅴ日韩成人电影av在线免费看av大全| 韩国三级色呦呦| 亚洲有薄码区久久在线一区| 亚洲美女色图| 午夜福利久久久噜久噜久久综合| 熟女这里只有精品6| 精人妻一区二区三区| 日逼五月天| 亚洲AV无码国产精品久久久久| 天天综合91| 色狠人在线99| 淫妻综合网| 日韩人成网站在线播放| 日熟女| 久久少妇人妻| 97色论| 超91综合网| 免费看日本操逼视频| 97爱| 国产激情视频一区区三区| 日本亚欧爱爱| 色777999综合| 人妻喷水| 天天摸天天操视频| 国产超碰欧美| 一二三四区操操Av| 97久久精品不卡| 天堂亚洲精品久久老牛| 97伪v| 亚洲情色一区三区| 啊啊啊用力在线观看| 国模精品娜娜一二三区 | 天天爱天天操| 国产成人在线观看综合| 黄色av片三级三级三级免费看| 人人操人人插人人摸人人干| 超碰国产精品无码| www.久久制服糖| 日韩综合无码一区久久92| 欧美人妖内射| 精品人妻一区二区三区视频在线| #NAME?| 日日嗷| 亚洲中文字幕av | 精品人妻一区二区三区四区不卡在| 亚洲在线综合| 欧美性爱综合,免费| 国产精品网址| 精品视频在线观看| 张柏芝国产一区在线观看| 亚洲综合九九| 熟妇的味道HD中文字幕| 日va操| 久久久久久久国产a∨| 久久社区一区二区三区| 日韩人妻一区二区精品| 我爱大香蕉| 丁香五月婷婷五月| 欧美 日韩 国产传媒| 91色噜噜狠狠| 欧美第五页| 国产日韩怡红院| 青青青青青手机视频| 野狼福利社区| 久久精品日韩| 婷婷五月成人| 国产亚洲日本| 猛猛干| 欧美激情激情xxxx欧美专区| 黄骗免费| 亚洲欧美精品91| 丝袜性亚洲| 亚洲成人妻日韩在线| 四虎免费视频| 亚洲天堂精品日韩电影| 久久一区二区高清免费| 无码又爽又硬又激情免费视频| 丁香激情五月天| 精品人妻一区二区免费蜜桃| 亚洲色图伊人网| 欧美激情高清性猛交| 久久国产AⅤ| 污污汅18禁网站在线永久免费观看| 91在线精品| 中文字幕老熟妇黄色视频| 99操| 午夜男人的天堂| 九九九999久久久网站| 欧州一区二区三区四区| 亚洲精品aa久久伊人| 日韩亚洲美州欧洲综三区一品在线| 亚洲五区熟女| 麻豆天美在线| 国产野战露脸在线播放| 国产乱码久久| 不卡在线观看视频| 亚洲性爱无码乱伦av| 又大又白奶子| 欧美,亚洲,日韩,v,天堂,手机在线观看 | 久久久久久中文| 日韩欧美加勒比| 久久久久久久久成人av解说| AV天堂电影网| 啊啊啊操死我了| 亚洲精品白浆高清久久久久久| 日本九九九九| 色妺妺AⅤ| 综合自拍| 欧美一品道| 成全在线观看免费观看| 蜜桃久久久久久久久久久久| 91 天天综合| 国产主播福利| 久久精品视-一级做a爰片性色毛片16美国-中国女与老外在线精品 | 超碰在线人妻| 国产情色第一第二页在线观看| 俄罗斯及免费在线看| 精品成人av一区二区三区在线| 99re8免费高清在线| 天天做天天爱| 成人网址在线观看| 91中出在线| 欧美亚洲中文字幕| 一级黄碟| 欧美性爱中文字幕无线码| 一级黄碟在线观看| 啊啊啊想要| 色五月av| 91丝袜美女视频| 国产精品老师| 丰满人妻-区二区三区免费看| 精品一区二区在线针对华人免费观看这里只有精品免费观看 | 乳欲人妻办公室奶水| 久久综合18p| 久久精品人妻一区| 黑操B| 97视频在线免费观看| 中文字幕五区| 激情五月天中文字幕色| 亚洲 日本 一 二 三| 欧美综合天堂| 内射日韩大臀美女| 国产黄色在线播放观看| 日夜干射色啊| 丁香五月综合| 91黄站| 99操视频| 亚洲AV无码乱码| 日韩精品一区二区三区四虎影视| 亚洲色图图片| 神马久久中文字幕| 国产亚洲精品美女久久久m| 综合情欲网| 久久香蕉国产传媒一区剧情天美| 日本色色色视频| 人妻娇喘 激情视频| 嗯啊啊啊轻点视频| 亚欧高清v| 黄色成年| 偷拍在线观看视频| 99热18| 久久国产在线一区二区| 精久久久| 九七毛片九九毛片| 人妻天天夜夜爽一区二区| 天天激情综合站| 91美女视频直播| 91人妻丝袜无码| av天堂5| 国产精品人妻免费精品| 蜜臀va69| 公司1区2区3区精产精| 欧美亚州手机在线| 国产精品亚洲一区二区三区四区| 国产午夜在线观看| 国产精品日日摸天天碰| 欲色啪| 少妇人妻精品| 天天添天天干电影| 9999久久久久| 人人操人人操草草| 免费?级毛片无码?∨蜜芽试看| 亚洲无码一区成人免费午夜| 欧美色图亚洲色,麻豆| 一级黄碟在线观看| 欧美日韩m| 久久免费精彩视频| 手机看av网站在线看| 婷婷av在线中文字幕| 日本一线产区和二线产区伦理片| 在线小视频| juliaann精品熟女一区| 人妻天天操天天爽视频免费| 五月婷在线| 久久久久国产一区二| 日韩中文字幕精品一区在线| 亚洲男人综合| 午夜舔阴达高潮视频免费看| 色姑娘综合网| 天天噜| 天天干18禁| 天美av在线| 91劲爆| 啊啊啊啊啊啊啊在线| 99www.bibizy香蕉资源国产一区二区三区高清| 99re这里只有精品中心播放| 伊人五月天青青草婷婷| 校园春色综合| 中文字幕丝袜人妻| 动漫av中文| 欧美亚州色的图| 超碰午夜| 欲色综合| 91精品91久久久久77777俄罗斯老妇姓x| 成人日本片久久久蜜桃| 最新制服中文第一页| 欧洲视频在线| 精品人妻一区二区三区日产| 亚洲 暴爽 AV人人爽日日碰| 久久久九九九| 做爱A级亚欧| 操逼1区| 97摸视频| 亚洲 91 在线| 亚洲大色堂| 日韩久草| 风间由美日韩欧美久久| 日韩一级二级三级免费看完整版| 色婷婷六月丁香七月婷婷| 亚洲色图 欧美热图 清纯唯美 另类自拍| 人妻天堂综合网| 高清不卡一二三区视频......| 欧美亚男人的天堂| 91 综合 色| 一区超碰一区| 天天网综合| 无码一区二区精品视频久久久春药| 高清无码一区二区三区| 五月色网| 久久久熟妇熟女国产| 久久超碰大香蕉| 91国产丝袜美女| 久久超碰com| 一区二区三区美女超清| 黄片免费看的| 99在线免费观看| 美女淫穴| 色香av| 国产精品盗摄 偷窥盗摄| 最新中文字幕精品在线| 国产av高清版| 中文字幕免费看| 亚洲黄色AV电影| 人妻偷拍一区二区三区| 久久人人爽人人爽人人片Ⅴ| 人妻天天爽夜夜爽爽| 97一本大道亚洲一区| 欧美成人贴图| 约操熟妇| 中美日韩毛片| 97超碰欧美| 五月天丁香婷婷综合网站| av天天在线观看| 91丨精品丨国产丨丝袜| 网友自拍第一页| 操逼片中文| 久久精品视-一级做a爰片性色毛片16美国-中国女与老外在线精品 | PMv在线观看| 乱精品一区字幕二区| 神马九九| 亚洲天堂电影网| 国产11页| 思思热免费在线视频| 中文字幕一区二区三区蜜桃视频| 成人乱码一区二区三少妇| 97超碰欧美手机在线| 超踫中文字幕| 欧美人妻久久精品二区三区| 免费操逼91| 青青草原香蕉日本Ap| 亚洲另类久操网| 性爱综合网| 香蕉久久AⅤ...| 成年人黄色| 国偷自 一区二区| 九九精品美女高溯喷水| 97精品一二区| 91人人爽人人爽| 九色婷婷| 97人人超| 日韩三级一区 | 韩美日操逼| av影片在线观看不卡| 亚洲天堂少妇| 后入合集| 欧美精品三区| 人妻丰满熟妇一区二区三| 国产色产精品在线观看| 亚洲区 欧美区| 人人澡人人澡人人| yazhououmeizongya| 美女黄页网站| 久9九综合在线| 日韩无码极品| 嗯啊抽插大香蕉网页| 两性色网| 日日狠狠久久偷偷色综合免费| 99操视频| 免费人人搞97| 四虎国产精品永久在线囯在线| 亚洲网自拍| 欧美日韩在线小说| 婷婷五月影院| 日韩av乱伦| 久久亚洲欧美一区二区三区-亚洲国产精品第一区二区 | 久久精品国产亚洲AV无码电影| 国产伦精品一区二区三区在线观| 一区二区三区在线资源| 亚洲国产综合久久久性感熟妇| 久插不卡| 国产精品另类| 熟女五十路一区二区三| 精久久久| 超碰久热| 超碰97日韩| 人妻精品一区二区在线| 国产精品动态一区二区三区四四| 91精品无码久久久久久久| 99热这里都是精品| 精品一区二区三区丰满熟女-亚洲欧美一区| 日韩高清黄片| 九九九九免费高| 综合欧美日韩在线观看| 91超碰丝袜制服| 中国探花熟女| 综合网亚| 精品国产91av一区二区三区 | 中文字幕人妻资源在线| 国产传媒美日韩av| 91粉嫩萝控精品福利网站_精品影音先锋国| 亚洲国产丝袜在线观看| 欧美精品99久久久| 日本一区二区三区午夜观看| 蜜臀av网址| 久久精品高清AV| 欧美在线亚洲| 97国产色综合| 日韩乱伦视频| 亚洲欧美中日韩| 高清国产无码av| 操逼片中文| 日本丝袜美腿人妻九九| 国产三级中文字幕粉嫩 | 久久五月天婷婷丁香中文字幕| 亚洲日韩肥臀视频在线观看| 乱伦1色页| 日日爱99| 亚洲国产麻豆一区二区三区| v91av| 欧美图片色综合| 国产精品亚洲免费| 国产精品一区二区三区,亚洲综合 性开放中文AV高清无码免费看 | 夜夜躁狠狠躁日日躁av| 这里只有97精品| av线电影| 99re在线视频国产| 二三四区精品| 夜夜 中文视频rt| 粉嫩国产精品久久粉嫩| 亚洲中文字幕精品久久久久久直播| 免费无码婬片AAAA片直播色戒| 久久精品女同亚洲女同13| 亚洲色9| 五月天激情国产综合婷婷婷| 欧美一区二区福利在线| 日本性感人妻91| 农村女一级毛卡片| 久久五月天婷婷| 性爱视频无打码在线观看| 久久超碰国产一区二区三区| 国产后入| 欧美组图日韩亚洲中文字幕| 亚洲色阁| 操www| 国产60页| 在线观看高清AV| 无码直播久久久| 欧美福利视频啊啊啊啊| 亚洲综合网图| 日本色婷婷| 国产久久久9999| 91精品国产长腿丝袜美女| 天天上日日上日韩精品| 秋霞视频一区二区 | 欧洲天天在线| 欧美色图99| 国产人伦a片信息免费片| 成人午夜无码视频| 欧美96交| 欧美日韩一干二干| 日本大香蕉综合网红本杳社区| 亚洲第一黄色av网站| 欧美日韩黄色片一区二区三区四区人与兽做爱 | 桃色六月天| 欧美性暴力猛交| 一级免费啪啪片| 久久久久幕乱码| 久久人人舔人人爽舔人人av片| 美女啊啊啊啊pc| 超碰99re| 91人人爽人人爽人人人,gav福利视频导航,日韩欧美亚洲国产字幕四区 | 亚洲婷婷丁香在线| 狠狠躁AV| 狠日操| 白 大 人妻 区 在线| 先锋影音av先锋一区| 亚洲少妇诱惑| 影音综合网| 国产又粗又大硬免费色网视频| 亚洲不卡AV在线| 三久久久四久久久久| 97天天搞在线| 国产精品成人福利在线| 51一区二区三区| 97天天摸天天碰| 色欲Av人妻精品一区二| 啊啊啊要高潮了| av一区二区三区 中文| 亚洲操人| 超碰99在线观看| 国产精品99久久久www| 日韩传媒在线| 日韩无码视频黄色| 亚洲吊色| 日日操免费视频| 99啪啪视频| 成人26uuu| 9精品在线| 五月婷婷六月丁香网址| 天海翼久久| 97内射偷拍| 国内毛片热久久思思热| 五月婷婷六月丁香| 97chaopengongkai| 亚洲丝袜B诱惑| 91熟女视频| 中文字幕少妇色| 亚洲伊人a线观看视频| 91精产一区二区三区| 日韩免费大片一级播放| 亚洲高清综合网| 啊啊啊啊二区好大| 国产精品自产拍在线观看社区| 天天性射网| 嗯……啊…嗯嗯…啊…好舒服| 日韩熟女乱伦中出| 97久久久久久久久久| 亚洲国产欧美日韩人妻日中文| 精品亚洲俞拍视频一区| 婷婷色导航| 天天操天天干一区二区| 久久综合资源一区二区| 啊啊啊不要好疼视频| 日韩少妇无吗| 国产精品久久久久久久久久久久久久久久| 热热色中文无码| av日韩手机在线影视| 麻豆精品A片免费观看| 日韩人妻一区二区| 色婷婷丁香五月| 国产毛片片精品天天看视频 | 极品五月天噜噜| 操逼网免费无码视频| 日本黄大片在线观看视频| 青青草原成人| 搞中出视频在线观看| 一及黄久一点| caopeng97| 日本三级日本三级99| 国产 亚洲 一二三四| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区 | 欧美在线视频播放| 亚洲成av人片色午夜乱码| 日韩素人无码一区二区三区三州| 国产农村一一级特黄毛片| 中文人妻av高清一区| 九九九精品| yw尤物av无码点击进入麻豆| 最新国产精品| 日本韩国国产精品一区| 在线观看AV片| 亚洲天堂电影精品一区| 啊啊啊97视频| 97久久久久久久久久| 黑人精品欧美一区二区蜜桃| 欧美热图99| 淫荡网址| 在线观看色视频| 狠狠色噜噜狠狠狠狠狠色综合久久| 日韩欧美俄罗斯A片| 天天综合精品| 九九九久千久久激情蜜桃在线看 | 99re欧美| 欧美天天| 老熟女熟妇| 亚洲国产精品久久久久婷婷青年| 欧美亚洲20p| 欧美色日| 91人精品妻入口| 五月香婷婷| 激情天天视频| 美女高潮视频91| 亚洲丝袜色| 亚洲精品一区二区三区新线路| 欧美综合色站| 99久久99九九99九九九| 大香樵伊人网| 久久久国产av美女私房| http://qxhbdz.com| 久久综合五月天| 久久这里都是精品| 性色av一区二区| 蜜桃传媒视频第一区入口在线看| 日韩大香蕉AV影片| 91深夜夜| 长长久久曰曰夜夜成人网| 久久久久国产亚洲一区欧美色图日韩| 九九九九免费高| 大香蕉伊人75| 天天草天天干天天日| 色老汉玖玖爱| 日韩综合97P| av影片在线观看不卡| 丰满人妻一区二区三区四区| 五月综合久久| 99热这里只有精品1| 男人天堂2017| 激情无码日韩| 熟妇人妻一区二区三区| 中文字幕一品色图| 色欲无码人妻日韩欧美精品| 久久精彩免费视频| 逼操网站| 国产人伦精品一区二区三区| 果冻传媒A片一二三区| 久久在线观看免费视频| 九九久久综合| 老熟妇一区二区三区| 插入逼91| 超碰在线99| 亚洲日韩97| 国产日韩欧美操逼视频| 亚洲另类色图片| 99999国产| 亚洲精品人妻吞精av| 免费农村成人少妇人妻Aa一区二区视频| 狠狠干2020| 久久精品中文字幕无码l| 色月天AV导航| 国产精品点击进入在线影院高清 | 天天添天天干电影| 亚洲性刺激| 日韩卡一卡二卡三在线| 麻豆婷婷成人一二三| 96麻豆精品一区二区三区| 黑人综合网| 干B| 91精品久久久久久综合五月天| 亚洲成人性| 久久精品国产亚洲5555| 天天操熟妇| 偷拍色图| 最新av在线| 日本高清电影欧美色图| 毛片视频白嫩| 97久久国产亚洲精品超碰热| 日本色色色| 日韩黄色片子| 口爆欧美91| 亚洲色性情三级| 夜夜爽爽爽| 九九热三级片| 淫纸中9区| 九九九九精品一区| 日夜干射色啊| 玖玖爱综合| 亚洲色图久久精品蜜| 97精品综合久久| 午夜a成v人电影| 超碰精品日韩欧美国产| 天天综合官网| 网友自拍第1页| 人妻少妇精品无码专区二区密桃 | 欧美瑟综合| 久久久一区二区| 69视频入口| 91狠狠综合| 超碰地址久久| 欧美性爱一区二区三区| 久久久青青草| 人妻久久| 亚洲综合20p| 三四中文字幕| 97干色| 一区二区三区四区理论片| 天天爽天天干| 97久操| 久久av网| 日韩中文字幕视频在线观看| 夜夜嗨视频| 五月天伊人| 五月婷婷性爱| 情趣丝袜无码操逼视频| 久久99深爱久久99精品| 91人妻人人妻| 可以在线观看的黄色网址| 美女诱惑久久| 伊人991| 精品超碰中文在线| 亚洲h片在线免费观看| 欧美色图综合网| 啊啊啊97视频| 久久婷婷色| 3028国产精品| 亚洲天天操| 暴力av在线| 久久曰曰| 日韩性爱视频免费在线| 日本亚洲熟女视频| 花野真衣| 试看福利| 夜夜欧美| 中文字幕丰满人妻日本| 激情婷婷综合久久| 亚洲精品影视老司机| 欧美一区二区亚洲天堂| 中文字幕精品丝袜| 麻豆精品三区视频| 精品天堂| 国产精品网址| 欧美国产日韩清纯唯美| 嗯嗯嗯啊啊啊操的我好爽| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 爆乳免费黄网站| 亚州高清av| 久久中文字幕在线观看| 国产精品美女久久久久AⅤ国产馆| 国产精品制服丝袜清纯唯美 | 亚洲1区2区三区高清中文字幕| 欧美激情 亚洲色图| 国产视频第2页| 99久久久久久久久| 九九综合久久| 啊啊啊啊在线观看网址| 99少妇内射| 先锋影音av先锋一区| 性一交一乱一交A片久久四色| 91热| 蜜臀无码一区二区| 久久伦理视频久久大香蕉视频| 日韩 欧美 校园一区| 久久发布国产伦子伦精品| 久久97| 激情深爱五月天| 99爱爱| 狠狠干狠狠色| 亚洲欧美国产日本一区二区三区| 中文字幕一区二区三区视频播放| 日本五十路熟女一区二区| 黄片aaaaa一区| 伊人久久在线视频观看| 国产 无码 一区二区| 约操熟妇| 色色色色电影网| 精品国产91内射久久| 国产精品久久久久久久AV大片| 探花一区在线| 中文字幕日韩精品一区二区三区| 久久国语| 日韩性爱视频在线免费观看| 亚洲男人的天堂亚洲| 97精品人妻一二三四| 少妇一级婬片免费放一级a性色.| 国模限制级电影| 欧成人在线| 久久香蕉国产线看观看猫咪av| 欧美一二在线| 可以免费看黄片的视频| 五月天黄色av| 亚洲图片激情小说| 色墦五月丁香| 一区二区三区麻豆| 天堂8在线新版官网| 色爱欲亚洲| 久久久久久91香蕉国产| www..com操老师| 欧美日韩制服| 日韩噜噜69| 国产精品经典一卡久久久| A级毛片在线看免费| 91精品丝袜在线观看| 免费精品人妻一区二区三| 91社操逼| 91亚·色| 伊人久久蜜月| 大奶尤物鲍汁淫荡欧美视频粉嫩夜夜骚 | 国产伦精品| 黑操B| 久久久久久久97| 欧美综合自拍亚洲综合图| 精品无av| 亚洲αv一区二区三区| 97色色网| 97情超碰色| 亚洲一区二区三区春色| 911粉嫩人妻| 草久久久| 91亚州| 粉嫩粉嫩一区性色AV片| 天天香香欲综合| 人妻喷水| 日韩国产乱子伦App| 婷婷久草一区二区三区| 91高潮喷水美女| 97操| 久久黄黄| 208天天久久九九九| 2026国产精品视频| 男女啊啊啊| 色哟哟-国产专区| 96久久久| 一级黄碟| 国产黄色av大片网站| 午夜精品久久久久久久第一页按摩| 嫖老熟女A片一二三区| 久久99国产精品| 亚洲成人一二三区| 色久桃花影院在线观看| 黄站在线免费观看| 一区黄二区黄| 国产女人与拘做受视频免费| 久久伊人东京热| 欧美中文字幕男人天堂久久精品| 色操逼网| 人妻丝袜肏逼| 91亚洲精品青草| 亚洲麻豆av一区二区| 超碰97在线色男人??| 91精品女厕偷拍视频| 亚洲黄色电影| 蜜桃久久综合视频| 国语国产操逼伊人AV网| 亚洲自拍青操视频| 国产精品久久久视频| 国产精品盗摄 偷窥盗摄| 欧美在线大香999| 天天日天天插| 亚洲无码?第一页| 国产91专区| 97色97好| 天堂种子在线www网资源| 日韩兔费看黄片| 综合免费无码中文| 性色乱AV一区二区| 日本黄色精品专区网站| 曰本精品久久久| 亚洲午夜精品久久久中文影院| 婷婷丁香熟妇综合网| 午夜一区二区三区国产| 亚洲毛片久久| 玖玖资源视频一区二区三区| 女一区二区| 伊人AAA| 亚洲色图 欧美热图 清纯唯美 另类自拍 | 色欧美在线| 色蜜AV| 超碰成人人人爽人人爽| 中文字幕少妇色| 国产美女在线精品免费看| 中文字幕少妇色| 乱伦图av| 熟女高潮精品一区二区| 国产后入精品| 天天草天天日| 欧洲精品欧洲精品| 丰满人妻大屁一区二区| 男人久久天堂| 日本在线视频导航| 一级一性爱免费视频| 欧美日韩欧美| 国产97av| 超碰69| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 天天肏美女| 大香蕉九九| 亚洲成人久久美女| 激情小说成人日本无码一| 八戒无码国产午夜福利| 极品销魂美女一区二区| 色激情综合网站| 91精品人妻一区二区三区蜜桃| 91精品91久久久久77777| 日韩中文字幕宗合在线| 色臀aV| 国产精品在线一区二区| 精品无码久久久久| 亚洲色图欧美色图制服诱惑| 色九九九综合| 伊人亚洲综合| 欧美 亚洲 91| 久久偷偷色综合蜜桃| AV色五月天| 日韩人妻精品| 国产AV天美传媒一区二区三区| 国产精品69久久久久久久| 91在线色| 亚洲伊人久久精品影院| 嗯~啊~轻一点 视频| 国产91丝袜 在线播放| 婷婷丁香人妻| 日韩无码第3页| 国产精品国产精品国产| 色吧91| 亚洲 欧美 制服 另类 自拍| 蜜桃久久久久久久| 国语国产操逼伊人AV网| 欧美少妇人妻| 密臀在线一区尤物| 精品国产乱码久久久影院| 久久精品国产72国产精品福利| 精品国产一区二区三区四区在线看| 操逼视频色| 两性综合网| wwwss在线观看| 白丝AV网站| 欧美熟妇亚洲版| 亚洲午夜免费狠狠干| 97天天| 黄色成年| 一区二区视频在看| 色香综合天天影视综合 | 久插不卡| 无码heyzo高清一区| 国语人妻精彩刺激| 婷婷丁香五月激情啪啪| 99热99在线播放激情| 人人看黄色视频| 国产黄色剧情影片麻豆免费播放| 色欧美综合| 精产品久久| 日韩射图| 日本 情色 1区2区3区| 黑人粗大V S日韩女优视频| 神马久久久久久久久久| 国产五码丝袜屁眼| 色婷婷综合久久久久中文一区二区| 免费一级精品啪啪视频| 综合免费无码中文| 色婷婷亚洲婷婷| 中文字幕AV片| 97碰碰色| 欧美一区二区观看在线| 夂久色| 国产99999久久精品| 久热一区二区| 手机在线视频国内精品| 99精品丰满人妻无| 精品人妻一二三四区视频| 女人天堂av在线播放| 色黄色美女大长腿午夜视频| 欧美极品女人的天堂| 蜜桃不卡一区二区| 欧美综合1性辶| 久久精品高清AV| 日韩欧美麻豆大片| 久久精品无码专区| 欧美日日操| 人妻在线臀日韩| 男人的天堂1024| 久久东京伊人一本到鬼色| 成 人 影视 一区 二区 三区 四区| 免费成人在线熟妇网| 色色毛片| 免费一级视频特黄色大片| 久久99草| 超碰人人操97碰| 男人的天堂啪啪啪啪啪蜜桃不卡| 亚洲怡春院| 亚洲国产精品V?在线播放| 天天综合91在线| 欧美日韩97在线| 欧美αv.com| 老熟女熟妇| 亚洲色图 欧美| 色婷婷六月| 天天日熟妇| 午夜福利在线合集| 人人噜夜夜操| 黄色片A级一区二区三区| 美女超碰978| 国产一区二区啪啪视频| 五月天婷婷久久| 欧美国产日韩清纯唯美| 久久熟女久| 91综合中文字幕| 中文字幕一区二区三区人妻不卡| 日韩精品碰碰| 欧美久久毛片基地| 国产精品人妻一区二区| 96AV久久久| 男人天堂电影院| 91大胆欧美| 九九久久久| 婷婷情色综合网| 亚洲成?V人片在线观看福利| 东京热激情视频一二三区| 亚洲综合射| 麻豆天美一区二区| 精品国产肉丝袜在线拍国语| 亚洲精品 超碰| 色亚洲欧美| 欧美成人性爱视频免费观看| 嗯嗯嗯好爽| 中文字幕免费在线观看| 密乳无码| 久久9亚洲| 亚洲国产天堂| 欧美综合娱乐久久| 真实高潮91| 深夜国产福利| 在线观看国产黄色| 青草视频人妻在线观看| 欧美大片91| 色五月婷婷在线| 亚洲成人AB| 日韩精品免费高清视频在线| 欲色影视综合吧| 精品人妻视频一区二区在线播放| 操人人| 密臀在线免费观看| 欧美成人精品欧美一级乱黄一区二…| 亚洲美女自拍偷拍视频| 婷婷色综合| 精品美女少妇一区二区| 26uuu国产成人综合| 操美女人妻| 天天做天天爱夜夜爽毛片试看| 日本超碰在线国产一区| 九九久久国产精品怡红院| 91爆操视频| 淫骚熟女一区二区三区| 日本精品一级二级三级| 99re9在线| 一二三区视频在线观看| 中文 人妻 制服| 欧美拳交在线播放| 无码人妻一区二区三区色欲aⅴ| 是还免费视频1727我| 国产99 中文字幕日韩小视频| 国产内射爽爽大片| 啊啊啊啊啊啊啊啊要喷了| 韩国一级做A片免费的| 亚洲天堂一区| 东北操逼| 中文字幕在线24| 蜜臀AV秘一区翔田千里| 伊人网在线点播| 国产精品一二三区福利| 国产精品午夜福利亚洲综合网| 欧美,亚洲,日韩,v,天堂,手机在线观看| 99精品在线| 国产精品网址| 久久啊啊啊| 国产人妻一区二区三区欧美毛片| 九九热在线精品视频| 色狠狠 - 百度| 日韩91网站| 99国产精品自在自在| 色综合久| 无码人妻精品一区二区中文| 久久精品久久久久久久| 密臀AV在线| 亚洲有薄码区日本系列中文字幕| 国产大学生口爆吞精合集| 神马麻豆福利院| 久久久国产护士丝袜美腿一| 久草色悠悠在线视频| 久久东京国产精品视频| 乱伦a片视频| chaopen97久久| 一区二区三区成人| 亚洲AV乱码专区国产噜噜亚洲 | 国产无吗在线播放| 青青操日韩| 超碰97亚洲区| 大香蕉免| 久久婷五月天| 久久久成人国产精品无码| 亚洲欧美首页| 91爱剪切久久| 超碰导航97| k频道色撸撸| 手机久操欧美综合色码| 亚洲成人一二三区| 久久影视二区三区行押| 日韩精品 资源| 中文字幕亚洲永久精品| 91热热色| 欧美后入视频| 免费AV中文网在线观看| 蜜乳av一区二区| 久久人妻少妇| 欧美成人9797| 少妇超碰在线| 久操精品网| 曰本人妻人人澡人人夹| 日婷婷| 色九久| 91九色丨风韵犹存| 久久久9品一区二区三区| 色图综合网| 无码二级三级| 九九九精品一区二区无码| 激情久久久| 亚洲日韩精品一区视频在线| 日韩成人高清一区二区| 蜜臀久久99'精品久久久| 91精品成人| 96AV精品| 黄色片大香蕉| 在线观看免费视频国产| 亚洲麻豆av一区二区| 夜夜做夜夜爽精品视频| 殴洲老熟女| 天天亚洲综合| 激情久久久| 全球成人中文在线| 人妻 中文 日韩| 黄片视频观看| 亚洲天堂男人的天堂| 国产97/欧美| 污到发麻的视频 国产| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 国产精品久久久久久久AV大片| 再深点灬舒服灬太大了添视频| www.av在线视频| 青青伊人这里只有精品| 国产福利影视| 久久极品一区二区| 国产又黄又猛又粗又爽的网站| 一区中文字幕二区日韩| 国产人妻一区二区三区欧美毛片| 欧美伦乱爱| 亚洲色棕合| 亚洲色欧美| 欧美天天干| 国产2.3.4区| 亚洲天天自拍| 视频国产成人精品日本亚洲18| 亚洲色图尤物视频| 大香蕉久| 狠狠综合| 一区| 97色操| 亚洲性网| 国产三级中文有码在线视频| A久久| 啊啊啊啊视频免费| 中文字幕乱偷人妻久久艾草网| 国产丝袜啪啪| 天天视频黄| 欧美做爰无码A片视频| 久久中文字幕女同性恋一区| 青草青草久热| 日韩有码一区三区|