堡垒。执法问题 - 页 100 1...93949596979899100101102103104105106107...156 新评论 prostotrader 2018.02.28 13:32 #991 代码本身 //+------------------------------------------------------------------+ //| DelayTest.mq5 | //| Copyright 2017 prostotrader | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2017 prostotrader" #property link "https://www.mql5.com" #property version "1.00" // #define max_orders 100 // struct MY_ORDERS { uint req_id[max_orders]; ulong ticket[max_orders]; ulong magic[max_orders]; }; MY_ORDERS my_orders; ulong st_magic=9988776655; //+------------------------------------------------------------------+ //| Expert remove order function | //+------------------------------------------------------------------+ void RemoveOrder(const ulong a_ticket,const int idx) { my_orders.req_id[idx]=0; MqlTradeRequest request = {0}; MqlTradeResult result = {0}; request.action= TRADE_ACTION_REMOVE; request.order = a_ticket; if(OrderSendAsync(request,result)) { my_orders.req_id[idx]=result.request_id; } else { Print(__FUNCTION__,": Ордер не отправлен! Билет = ",a_ticket," Причина: ",result.retcode); } } //+------------------------------------------------------------------+ //| Expert place order function | //+------------------------------------------------------------------+ void PlaceOrder(double price,int idx,ulong magic) { MqlTradeRequest request = {0}; MqlTradeResult result = {0}; my_orders.ticket[idx] = 0; my_orders.req_id[idx] = 0; my_orders.magic[idx]=magic; request.action = TRADE_ACTION_PENDING; request.magic = magic; request.symbol = Symbol(); request.volume = 1; request.price = price; request.type=ORDER_TYPE_SELL_LIMIT; request.comment="Отложенный ордер..."; request.type_filling=ORDER_FILLING_RETURN; request.type_time=ORDER_TIME_DAY; if(OrderSendAsync(request,result)) { my_orders.req_id[idx]=result.request_id; magic++; } else { Print(__FUNCTION__,": Ордер не отправлен! Порядковый номер: ", idx, " Причина: ",result.retcode); } } //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { double step=SymbolInfoDouble(Symbol(),SYMBOL_TRADE_TICK_SIZE); double max_price=SymbolInfoDouble(Symbol(),SYMBOL_SESSION_PRICE_LIMIT_MAX); for(int i=0; i<max_orders;i++) { PlaceOrder(max_price,i,st_magic); max_price-=step; } return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { for(int i=0; i<max_orders;i++) { if(my_orders.ticket[i]>0) { RemoveOrder(my_orders.ticket[i],i); } } } //+------------------------------------------------------------------+ //| TradeTransaction function | //+------------------------------------------------------------------+ void OnTradeTransaction(const MqlTradeTransaction &trans, const MqlTradeRequest &request, const MqlTradeResult &result) { // Print("Trans type: ", EnumToString(trans.type), "; Order satte: ", EnumToString(trans.order_state)); switch(trans.type) { case TRADE_TRANSACTION_REQUEST: for(int i=0; i<max_orders;i++) { if((my_orders.req_id[i]==result.request_id) && (my_orders.req_id[i]>0)) { my_orders.ticket[i]=result.order; break; } } break; case TRADE_TRANSACTION_HISTORY_ADD: for(int i=0; i<max_orders;i++) { if((my_orders.ticket[i]==trans.order) && (my_orders.ticket[i]>0)) { my_orders.ticket[i]=0; Print(__FUNCTION__,": Ордер удалён. Билет = ",trans.order); break; } } break; case TRADE_TRANSACTION_ORDER_UPDATE: switch(trans.order_state) { case ORDER_STATE_PLACED: for(int i=0; i<max_orders;i++) { if((my_orders.ticket[i]==trans.order) && (my_orders.ticket[i]>0)) { RemoveOrder(my_orders.ticket[i],i); Print(__FUNCTION__,": Ордер установлен. Билет = ",trans.order); break; } } break; } break; } } //+------------------------------------------------------------------+ fxsaber 2018.02.28 13:39 #992 prostotrader:我每天有4000笔交易,每笔交易至少有5-6次 "抽动 "OnTradeTransaction。 谁将会对这些 "portmanteaus "做出解释呢 :)毕竟,他们需要终端的日志加上MT5服务器的日志。 如果日志将需要数千兆字节 - 我也会分析它们。我不需要服务器的日志。 我强烈建议每个声称OnTradeTransaction 没有东西的人运行这个专家顾问。 // Советник записывает подробно каждый OnTradeTransaction в файл. // Время последнего тика символа long GetSymbolTime( const string Symb ) { MqlTick Tick; return(SymbolInfoTick(Symb, Tick) ? Tick.time_msc : 0); } // Время последнего тика Обзора рынка long GetMarketWatchTime( void ) { long Res = 0; for (int i = SymbolsTotal(true) - 1; i >= 0; i--) { const long TmpTime = GetSymbolTime(SymbolName(i, true)); if (TmpTime > Res) Res = TmpTime; } return(Res); } // Текущее время на торговом сервере без учета пинга long GetCurrenTime( void ) { static ulong StartTime = GetMicrosecondCount(); static long PrevTime = 0; const long TmpTime = GetMarketWatchTime(); if (TmpTime > PrevTime) { PrevTime = TmpTime; StartTime = GetMicrosecondCount(); } return(PrevTime + (long)((GetMicrosecondCount() - StartTime) / 1000)); } string TimeToString( const long Value ) { return((string)(datetime)(Value / 1000) + "." + (string)IntegerToString(Value % 1000, 3, '0')); } class FILE { public: const string Name; const int handle; #define _H(A) if (this.handle != INVALID_HANDLE) A FILE( const string FileName ) : Name(FileName), handle(FileOpen(this.Name, FILE_READ | FILE_WRITE | FILE_IS_TEXT)) { _H(FileSeek(this.handle, 0, SEEK_END)); } ~FILE() { _H(FileClose(this.handle)); } uint Write( const string Str ) const { return(FileWrite(this.handle, Str)); } }; void OnTradeTransaction ( const MqlTradeTransaction &Trans, const MqlTradeRequest &Request, const MqlTradeResult &Result ) { static FILE File(__FUNCTION__ + ".txt"); File.Write(TimeToString(GetCurrenTime()) + "\n" + ToString(Trans) + ToString(Request) + ToString(Result)); } #define TOSTRING(A) #A + " = " + (string)(A) + "\n" #define TOSTRING2(A) #A + " = " + EnumToString(A) + " (" + (string)(A) + ")\n" string ToString( const MqlTradeTransaction &Trans ) { return(TOSTRING(Trans.deal) + TOSTRING(Trans.order) + TOSTRING(Trans.symbol) + TOSTRING2(Trans.type) + TOSTRING2(Trans.order_type) + TOSTRING2(Trans.order_state) + TOSTRING2(Trans.deal_type) + TOSTRING2(Trans.time_type) + TOSTRING(Trans.time_expiration) + TOSTRING(Trans.price) + TOSTRING(Trans.price_trigger) + TOSTRING(Trans.price_sl) + TOSTRING(Trans.price_tp) + TOSTRING(Trans.volume) + TOSTRING(Trans.position) + TOSTRING(Trans.position_by)); } string ToString( const MqlTradeRequest &Request ) { return(TOSTRING2(Request.action) + TOSTRING(Request.magic) + TOSTRING(Request.order) + TOSTRING(Request.symbol) + TOSTRING(Request.volume) + TOSTRING(Request.price) + TOSTRING(Request.stoplimit) + TOSTRING(Request.sl) + TOSTRING(Request.tp) + TOSTRING(Request.deviation) + TOSTRING2(Request.type) + TOSTRING2(Request.type_filling) + TOSTRING2(Request.type_time) + TOSTRING(Request.expiration) + TOSTRING(Request.comment) + TOSTRING(Request.position) + TOSTRING(Request.position_by)); } string ToString( const MqlTradeResult &Result ) { return(TOSTRING(Result.retcode) + TOSTRING(Result.deal) + TOSTRING(Result.order) + TOSTRING(Result.volume) + TOSTRING(Result.price) + TOSTRING(Result.bid) + TOSTRING(Result.ask) + TOSTRING(Result.comment) + TOSTRING(Result.request_id) + TOSTRING(Result.retcode_external)); } 结果会是这样的 2018.02.28 14:28:27.907 Trans.deal = 0 Trans.order = 213465763 Trans.symbol = EURUSD Trans.type = TRADE_TRANSACTION_ORDER_ADD (0) Trans.order_type = ORDER_TYPE_SELL (1) Trans.order_state = ORDER_STATE_STARTED (0) Trans.deal_type = DEAL_TYPE_BUY (0) Trans.time_type = ORDER_TIME_GTC (0) Trans.time_expiration = 1970.01.01 00:00:00 Trans.price = 1.22178 Trans.price_trigger = 0.0 Trans.price_sl = 0.0 Trans.price_tp = 0.0 Trans.volume = 1.0 Trans.position = 0 Trans.position_by = 0 Request.action = ENUM_TRADE_REQUEST_ACTIONS::0 (0) Request.magic = 0 Request.order = 0 Request.symbol = Request.volume = 0.0 Request.price = 0.0 Request.stoplimit = 0.0 Request.sl = 0.0 Request.tp = 0.0 Request.deviation = 0 Request.type = ORDER_TYPE_BUY (0) Request.type_filling = ORDER_FILLING_FOK (0) Request.type_time = ORDER_TIME_GTC (0) Request.expiration = 1970.01.01 00:00:00 Request.comment = Request.position = 0 Request.position_by = 0 Result.retcode = 0 Result.deal = 0 Result.order = 0 Result.volume = 0.0 Result.price = 0.0 Result.bid = 0.0 Result.ask = 0.0 Result.comment = Result.request_id = 0 Result.retcode_external = 0 2018.02.28 14:28:27.913 Trans.deal = 196986814 Trans.order = 213465763 Trans.symbol = EURUSD Trans.type = TRADE_TRANSACTION_DEAL_ADD (6) .... 如果连这样的日志都没有,那么任何与OnTradeTransaction有关的主张都是空谈。 ZZY 在这种情况下,时机并不完美,但我不想把一个从不同背景下 撕出来的解决方案复杂化。 附加的文件: OnTradeTransaction.mq5 4 kb prostotrader 2018.02.28 20:24 #993 fxsaber:如果日志占用了几千兆字节,我也会处理它们。服务器日志是不需要的。 我强烈建议每个声称OnTradeTransaction 没有东西的人运行这个专家顾问。 结果会是这样的 如果连这样的日志都没有,那么任何与OnTradeTransaction有关的主张都只是空谈。 在这种情况下,时机并不完美,但我没有脱离其他背景的 复杂解决方案。为什么要做这样一个 "菜园"? 这将是足够的。 void OnTradeTransaction(const MqlTradeTransaction &trans, const MqlTradeRequest &request, const MqlTradeResult &result) { Print("Trans type: ", EnumToString(trans.type), "; Order satte: ", EnumToString(trans.order_state), " Order ticket: ", trans.order); } fxsaber 2018.02.28 20:44 #994 prostotrader:为什么要做这么大的事情? 这就足够了。 不够。 Aleksey Vyazmikin 2018.03.14 08:05 #995 用手打开,刹车被确认 2018.03.14 10:01:29.516 Trades '289': exchange sell 10.00 Si-3.18 at market 2018.03.14 10:01:40.680 Trades '289': accepted exchange sell 10.00 Si-3.18 at market 2018.03.14 10:01:40.692 Trades '289': exchange sell 10.00 Si-3.18 at market placed for execution 2018.03.14 10:01:40.781 Trades '289': order #85223736 sell 10.00 / 10.00 Si-3.18 at market done in 11265.537 ms 2018.03.14 10:01:40.782 Trades '289': deal #47039430 sell 3.00 Si-3.18 at 57027 done (based on order #85223736) 2018.03.14 10:01:40.786 Trades '289': deal #47039431 sell 2.00 Si-3.18 at 57026 done (based on order #85223736) 2018.03.14 10:01:40.787 Trades '289': deal #47039432 sell 3.00 Si-3.18 at 57026 done (based on order #85223736) 2018.03.14 10:01:40.790 Trades '289': deal #47039433 sell 1.00 Si-3.18 at 57026 done (based on order #85223736) 2018.03.14 10:01:40.795 Trades '289': deal #47039434 sell 1.00 Si-3.18 at 57025 done (based on order #85223736) 而最重要的是,谁来为这一暴行买单... prostotrader 2018.03.14 15:10 #996 Aleksey Vyazmikin:用手打开,刹车被确认 而最重要的是,谁将为这一暴行买单......写信给经纪人,并附上这份日志。 我们不付给开发者,所以很难问他们,在许可协议中 它被写成(像所有的软件一样),没有人对任何事情负责。 Aleksey Vyazmikin 2018.03.14 15:15 #997 prostotrader:写信给经纪人,并附上这份日志。 我们不付给开发商,所以很难问他们,而且许可协议 它被写成(像所有的软件一样),没有人对任何事情负责。这是个反问句。 prostotrader 2018.03.14 15:16 #998 Aleksey Vyazmikin:这是个反问句。:) 但无论如何要写信给你的经纪人。 prostotrader 2018.03.19 08:18 #999 对专家顾问的记录做了一些改变,结果是这样的。 如果在1-1.5秒内没有来自服务器的响应,CheckOrders()函数就会触发。 如果没有订单票,它将显示一个信息 CheckOrders: Не получен билет. Задержка ответа сервера. Ожидание продолжается... 如果有票据,则调用 ProcessOrders()函数 来检查订单的情况 这里是结果。 2018.03.19 10:00:02.248 Trades 'xxxxx': buy limit 2.00 TRNF-9.18 at 168831 2018.03.19 10:00:02.254 Trades 'xxxxx': accepted buy limit 2.00 TRNF-9.18 at 168831 2018.03.19 10:00:02.257 Trades 'xxxxx': buy limit 2.00 TRNF-9.18 at 168831 placed for execution in 8.978 ms 2018.03.19 10:00:06.380 Trades 'xxxxx': modify order #85508034 buy limit 2.00 TRNF-9.18 at 168831 sl: 0 tp: 0 -> 170108, sl: 0 tp: 0 2018.03.19 10:00:08.318 Trades 'xxxxx': accepted modify order #85508034 buy limit 2.00 TRNF-9.18 at 168831 sl: 0 tp: 0 -> 170108, sl: 0 tp: 0 2018.03.19 10:00:08.335 Trades 'xxxxx': modify order #85508034 buy limit 2.00 TRNF-9.18 at 168831 sl: 0 tp: 0 -> 170108, sl: 0 tp: 0 placed for execution in 1955.038 ms 2018.03.19 10:00:08.364 Trades 'xxxxx': modify order #85508034 buy limit 2.00 TRNF-9.18 at 170108 sl: 0 tp: 0 -> 170110, sl: 0 tp: 0 2018.03.19 10:00:08.364 Trades 'xxxxx': modify #85508034 buy limit 2.00 TRNF-9.18 -> price: 170110, sl: 0, tp: 0) done in 0.390 ms 2018.03.19 10:01:00.575 Trades 'xxxxx': buy limit 2.00 TRNF-9.18 at 170112 2018.03.19 10:01:01.581 trader (TRNF-6.18,M1) CheckOrders: Не получен билет. Задержка ответа сервера. Ожидание продолжается... 2018.03.19 10:01:02.591 trader (TRNF-6.18,M1) CheckOrders: Не получен билет. Задержка ответа сервера. Ожидание продолжается... 2018.03.19 10:01:03.606 trader (TRNF-6.18,M1) CheckOrders: Не получен билет. Задержка ответа сервера. Ожидание продолжается... 2018.03.19 10:01:04.627 trader (TRNF-6.18,M1) CheckOrders: Не получен билет. Задержка ответа сервера. Ожидание продолжается... 2018.03.19 10:01:05.633 trader (TRNF-6.18,M1) CheckOrders: Не получен билет. Задержка ответа сервера. Ожидание продолжается... 2018.03.19 10:01:06.647 trader (TRNF-6.18,M1) CheckOrders: Не получен билет. Задержка ответа сервера. Ожидание продолжается... 2018.03.19 10:01:07.662 trader (TRNF-6.18,M1) CheckOrders: Не получен билет. Задержка ответа сервера. Ожидание продолжается... 2018.03.19 10:01:08.677 trader (TRNF-6.18,M1) CheckOrders: Не получен билет. Задержка ответа сервера. Ожидание продолжается... 2018.03.19 10:01:09.689 trader (TRNF-6.18,M1) CheckOrders: Не получен билет. Задержка ответа сервера. Ожидание продолжается... 2018.03.19 10:01:10.708 trader (TRNF-6.18,M1) CheckOrders: Не получен билет. Задержка ответа сервера. Ожидание продолжается... 2018.03.19 10:01:11.718 trader (TRNF-6.18,M1) CheckOrders: Не получен билет. Задержка ответа сервера. Ожидание продолжается... 2018.03.19 10:01:12.732 trader (TRNF-6.18,M1) CheckOrders: Не получен билет. Задержка ответа сервера. Ожидание продолжается... 2018.03.19 10:01:13.764 trader (TRNF-6.18,M1) CheckOrders: Не получен билет. Задержка ответа сервера. Ожидание продолжается... 2018.03.19 10:01:15.273 trader (TRNF-6.18,M1) CheckOrders: Не получен билет. Задержка ответа сервера. Ожидание продолжается... 2018.03.19 10:01:16.287 trader (TRNF-6.18,M1) CheckOrders: Не получен билет. Задержка ответа сервера. Ожидание продолжается... 2018.03.19 10:01:17.301 trader (TRNF-6.18,M1) CheckOrders: Не получен билет. Задержка ответа сервера. Ожидание продолжается... 2018.03.19 10:01:18.319 trader (TRNF-6.18,M1) CheckOrders: Не получен билет. Задержка ответа сервера. Ожидание продолжается... 2018.03.19 10:01:19.332 trader (TRNF-6.18,M1) CheckOrders: Не получен билет. Задержка ответа сервера. Ожидание продолжается... 2018.03.19 10:01:20.343 trader (TRNF-6.18,M1) CheckOrders: Не получен билет. Задержка ответа сервера. Ожидание продолжается... 2018.03.19 10:01:21.357 trader (TRNF-6.18,M1) CheckOrders: Не получен билет. Задержка ответа сервера. Ожидание продолжается... 2018.03.19 10:01:22.371 trader (TRNF-6.18,M1) CheckOrders: Не получен билет. Задержка ответа сервера. Ожидание продолжается... 2018.03.19 10:01:23.388 trader (TRNF-6.18,M1) CheckOrders: Не получен билет. Задержка ответа сервера. Ожидание продолжается... 2018.03.19 10:01:24.263 Trades 'xxxxx': accepted buy limit 2.00 TRNF-9.18 at 170112 2018.03.19 10:01:24.399 trader (TRNF-6.18,M1) ProcessOrders: Состояние Buy ордера не определено. Билет = 85508330 2018.03.19 10:01:25.413 trader (TRNF-6.18,M1) ProcessOrders: Состояние Buy ордера не определено. Билет = 85508330 2018.03.19 10:01:25.685 Trades 'xxxxx': buy limit 2.00 TRNF-9.18 at 170112 placed for execution in 25114.794 ms 2018.03.19 10:01:26.427 trader (TRNF-6.18,M1) ProcessOrders: Состояние Buy ордера не определено. Билет = 85508330 2018.03.19 10:01:27.444 trader (TRNF-6.18,M1) ProcessOrders: Состояние Buy ордера не определено. Билет = 85508330 2018.03.19 10:01:28.456 trader (TRNF-6.18,M1) ProcessOrders: Состояние Buy ордера не определено. Билет = 85508330 2018.03.19 10:01:29.475 trader (TRNF-6.18,M1) ProcessOrders: Состояние Buy ордера не определено. Билет = 85508330 2018.03.19 10:01:30.484 trader (TRNF-6.18,M1) ProcessOrders: Состояние Buy ордера не определено. Билет = 85508330 2018.03.19 10:01:31.501 trader (TRNF-6.18,M1) ProcessOrders: Состояние Buy ордера не определено. Билет = 85508330 2018.03.19 10:01:32.515 trader (TRNF-6.18,M1) ProcessOrders: Состояние Buy ордера не определено. Билет = 85508330 2018.03.19 10:01:33.540 trader (TRNF-6.18,M1) ProcessOrders: Состояние Buy ордера не определено. Билет = 85508330 拖延很可能不是由于经纪人的原因。 prostotrader 2018.03.22 14:00 #1000 当一个订单被异步发送时,我们有。 终端发送订单 (1) 2018.03.19 10:01:00.575 Trades 'xxxxx': buy limit 2.00 TRNF-9.18 at 170112 服务器检查了该订单并为其分配了一张票据(2) 2018.03.19 10:01:24.263 Trades 'xxxxx': accepted buy limit 2.00 TRNF-9.18 at 170112 服务器向交易所发送订单 (3) 2018.03.19 10:01:25.685 Trades 'xxxxx': buy limit 2.00 TRNF-9.18 at 170112 placed for execution in 25114.794 ms 服务器对订单被 交易所接受 的回应没有被记录下来。 但从下面的条目来看,关于交换设置订单的服务器响应来了(4)。 2018.03.19 10:01:39.952 Trades 'xxxxx': modify order #85508330 buy limit 2.00 TRNF-9.18 at 170112 sl: 0 tp: 0 -> 170114, sl: 0 tp: 0 从分配订单票并将其发送到交易所的那一刻起,经过了1.4个小时的判断。 完全发生在服务器本身,我假设延迟发生在服务器本身log(2) - log(3)。 嗯,这非常 "好"。 GP 0 19:17:29.663 Trades 'xxxxx': cancel #85167146 buy limit 3.00 UCHF-9.18 at market done in 132608.665 ms HR 0 19:17:29.678 Trades 'xxxxx': cancel #85167164 buy limit 3.00 AUDU-9.18 at market done in 132623.761 ms HK 0 19:17:29.698 Trades 'xxxxx': cancel #85167165 sell limit 3.00 AUDU-9.18 at market done in 132642.978 ms OE 0 19:17:29.721 Trades 'xxxxx': cancel #85167070 buy limit 1.00 GOLD-12.18 at market done in 132653.264 ms NG 0 19:17:29.741 Trades 'xxxxx': cancel #85167172 sell limit 1.00 ALRS-9.18 at market done in 132686.437 ms MR 0 19:17:29.755 Trades 'xxxxx': cancel #85167177 sell limit 2.00 NLMK-9.18 at market done in 132700.889 ms HP 0 19:17:29.783 Trades 'xxxxx': cancel #85167183 buy limit 1.00 PLT-12.18 at market done in 132727.785 ms CO 0 19:17:29.801 Trades 'xxxxx': cancel #85167254 sell limit 1.00 GMKR-9.18 at market done in 132746.755 ms FN 0 19:17:29.819 Trades 'xxxxx': cancel #85167689 sell limit 2.00 SBRF-12.18 at market done in 132722.855 ms QJ 0 19:17:29.839 Trades 'xxxxx': cancel #85167774 sell limit 3.00 UCHF-9.18 at market done in 132783.830 ms GH 0 19:17:29.855 Trades 'xxxxx': cancel #85167936 sell limit 2.00 MOEX-9.18 at market done in 132800.500 ms EH 0 19:17:29.870 Trades 'xxxxx': cancel #85167942 buy limit 1.00 SNGR-9.18 at market done in 132815.113 ms IR 0 19:17:29.889 Trades 'xxxxx': cancel #85167943 sell limit 2.00 SNGR-9.18 at market done in 132834.156 ms KN 0 19:17:29.916 Trades 'xxxxx': cancel #85168487 buy limit 2.00 CY-9.18 at market done in 132860.907 ms JP 0 19:17:29.935 Trades 'xxxxx': cancel #85168192 buy limit 3.00 UCAD-9.18 at market done in 132944.703 ms KL 0 19:17:29.950 Trades 'xxxxx': cancel #85170324 sell limit 1.00 VTBR-9.18 at market done in 132895.471 ms FJ 0 19:17:29.965 Trades 'xxxxx': cancel #85170435 sell limit 3.00 UJPY-9.18 at market done in 132910.178 ms RE 0 19:17:29.979 Trades 'xxxxx': cancel #85167688 buy limit 1.00 SBRF-12.18 at market done in 132883.188 ms KD 0 19:17:29.999 Trades 'xxxxx': cancel #85170988 sell limit 1.00 CHMF-9.18 at market done in 132943.997 ms PN 0 19:17:30.021 Trades 'xxxxx': cancel #85171201 buy limit 1.00 ED-12.18 at market done in 133030.275 ms DN 0 19:17:30.044 Trades 'xxxxx': cancel #85171303 buy limit 1.00 UJPY-9.18 at market done in 132989.636 ms 1...93949596979899100101102103104105106107...156 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
代码本身
我每天有4000笔交易,每笔交易至少有5-6次 "抽动 "OnTradeTransaction。
谁将会对这些 "portmanteaus "做出解释呢 :)毕竟,他们需要终端的日志加上MT5服务器的日志。
如果日志将需要数千兆字节 - 我也会分析它们。我不需要服务器的日志。
我强烈建议每个声称OnTradeTransaction 没有东西的人运行这个专家顾问。
结果会是这样的
如果连这样的日志都没有,那么任何与OnTradeTransaction有关的主张都是空谈。
ZZY 在这种情况下,时机并不完美,但我不想把一个从不同背景下 撕出来的解决方案复杂化。
如果日志占用了几千兆字节,我也会处理它们。服务器日志是不需要的。
我强烈建议每个声称OnTradeTransaction 没有东西的人运行这个专家顾问。
结果会是这样的
如果连这样的日志都没有,那么任何与OnTradeTransaction有关的主张都只是空谈。
在这种情况下,时机并不完美,但我没有脱离其他背景的 复杂解决方案。
为什么要做这样一个 "菜园"?
这将是足够的。
为什么要做这么大的事情?
这就足够了。
不够。
用手打开,刹车被确认
而最重要的是,谁来为这一暴行买单...
用手打开,刹车被确认
而最重要的是,谁将为这一暴行买单......
写信给经纪人,并附上这份日志。
我们不付给开发者,所以很难问他们,在许可协议中
它被写成(像所有的软件一样),没有人对任何事情负责。
写信给经纪人,并附上这份日志。
我们不付给开发商,所以很难问他们,而且许可协议
它被写成(像所有的软件一样),没有人对任何事情负责。
这是个反问句。
这是个反问句。
:)
但无论如何要写信给你的经纪人。
对专家顾问的记录做了一些改变,结果是这样的。
如果在1-1.5秒内没有来自服务器的响应,CheckOrders()函数就会触发。
如果没有订单票,它将显示一个信息
如果有票据,则调用 ProcessOrders()函数 来检查订单的情况
这里是结果。
拖延很可能不是由于经纪人的原因。
当一个订单被异步发送时,我们有。
终端发送订单 (1)
服务器检查了该订单并为其分配了一张票据(2)
服务器向交易所发送订单 (3)
服务器对订单被 交易所接受 的回应没有被记录下来。
但从下面的条目来看,关于交换设置订单的服务器响应来了(4)。
从分配订单票并将其发送到交易所的那一刻起,经过了1.4个小时的判断。
完全发生在服务器本身,我假设延迟发生在服务器本身log(2) - log(3)。
嗯,这非常 "好"。