在mql4中用什么来代替OnTradeTransaction()? - 页 9

 
Dmitry Fedoseev:

假设OnTradeTransaction() 中发生了一个事件,之后需要执行一些行动,但在第一次尝试执行这个行动时发生了错误。该怎么做? 很明显,我们必须尝试再做一次,为此我们需要在某处保存有关这些行动重复的必要性的数据--很可能,这些数据被保存在专家顾问的全局变量或静态函数中。突然,我不得不重新启动终端......数据已经消失。

而当你分析目前的情况和历史时--没有任何东西走了。

如果终端崩溃了,那么在OnInit()中重启后,按惯例要进行一次全面清查。

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
В языке MQL5 предусмотрена обработка некоторых предопределенных событий. Функции для обработки этих событий должны быть определены в программе MQL5: имя функции, тип возвращаемого значения, состав параметров (если они есть) и их типы должны строго соответствовать описанию функции-обработчика события. Именно по типу возвращаемого значения и по...
 
Vitaly Muzichenko:

这甚至可以作为一个不完整的OnTrade()使用。

void OnTrade()
 {
  ...
 }

static __OTotal = -1;
static __HTotal = -1;
int OT=OrdersTotal();
int HT=OrdersHistoryTotal();
  if(OT!=__OTotal || HT!=__HTotal) // если изменилось - выполняем
   {
     OnTrade(); // здесь дёргаем текущую ситуацию на счёте и заполняем структуры
     __OTotal=OrdersTotal(); // запомним текущее количество
     __HTotal=OrdersHistoryTotal(); // запомним количество в истории
   }

是的,我已经阅读了这个主题的所有内容,并得出结论,这个解决方案是简单、可靠和 "便宜 "的。我将尝试再次查看mql4的所有功能,如果我发现了什么,我将把它添加到这个帖子。谢谢你的帮助。

我还记得Metatrader 4终端的日志,作为一项规则,所有的交易事件都添加到那里。此外,还有向移动终端 发出的关于贸易活动的通知。更新:不幸的是,如果没有DLL,这些事件也不能被访问。

Мобильные приложения MetaTrader 5 для iPhone/iPad и Android
Мобильные приложения MetaTrader 5 для iPhone/iPad и Android
  • www.metatrader5.com
Мобильный трейдинг в MetaTrader 5 — это возможность торговать на Форексе, фондовой бирже, а также фьючерсами в любое время из любой точки мира. Имея смартфон или планшет с установленным приложением MetaTrader 5 для iOS или Android, вы всегда будете в курсе рыночной ситуации и сможете совершать торговые операции 24 часа в сутки. Все возможности...