Suponha que ocorreu um evento na OnTradeTransaction() após o qual alguma ação precisa ser executada, mas um erro ocorreu na primeira tentativa de executar essa ação. O que fazer? Obviamente, devemos tentar fazer isso novamente, e para isso precisamos salvar em algum lugar dados sobre a necessidade de repetição dessas ações - muito provavelmente, esses dados são salvos em variáveis globais do Expert Advisor ou em funções estáticas. E de repente tive que reiniciar o terminal... os dados desapareceram.
E quando você analisa a situação atual e a história - nada foi a lugar algum.
Se o terminal falhar, então após o reinício no OnInit() e, portanto, é costume conduzir um inventário completo.
В языке MQL5 предусмотрена обработка некоторых предопределенных событий. Функции для обработки этих событий должны быть определены в программе MQL5: имя функции, тип возвращаемого значения, состав параметров (если они есть) и их типы должны строго соответствовать описанию функции-обработчика события. Именно по типу возвращаемого значения и по...
Isto pode até ser usado como um OnTrade() incompleto
voidOnTrade()
{
...
}
static __OTotal = -1;
static __HTotal = -1;
int OT=OrdersTotal();
int HT=OrdersHistoryTotal();
if(OT!=__OTotal || HT!=__HTotal) // если изменилось - выполняем
{
OnTrade(); // здесь дёргаем текущую ситуацию на счёте и заполняем структуры
__OTotal=OrdersTotal(); // запомним текущее количество
__HTotal=OrdersHistoryTotal(); // запомним количество в истории
}
Sim, li tudo neste tópico e concluí que esta solução é simples, confiável e "barata". Tentarei procurar em todas as funções do mql4 mais uma vez, se encontrar algo, acrescentarei a este posto. Obrigado pela ajuda.
Também me lembrei dos logs do terminal Metatrader 4, como regra geral todos os eventos comerciais são adicionados lá. Além disso, há também notificações para o terminal móvel sobre eventos comerciais. upd: infelizmente. estes eventos também não podem ser acessados sem a dll
Мобильный трейдинг в MetaTrader 5 — это возможность торговать на Форексе, фондовой бирже, а также фьючерсами в любое время из любой точки мира. Имея смартфон или планшет с установленным приложением MetaTrader 5 для iOS или Android, вы всегда будете в курсе рыночной ситуации и сможете совершать торговые операции 24 часа в сутки. Все возможности...
Suponha que ocorreu um evento na OnTradeTransaction() após o qual alguma ação precisa ser executada, mas um erro ocorreu na primeira tentativa de executar essa ação. O que fazer? Obviamente, devemos tentar fazer isso novamente, e para isso precisamos salvar em algum lugar dados sobre a necessidade de repetição dessas ações - muito provavelmente, esses dados são salvos em variáveis globais do Expert Advisor ou em funções estáticas. E de repente tive que reiniciar o terminal... os dados desapareceram.
E quando você analisa a situação atual e a história - nada foi a lugar algum.
Se o terminal falhar, então após o reinício no OnInit() e, portanto, é costume conduzir um inventário completo.
Isto pode até ser usado como um OnTrade() incompleto
Sim, li tudo neste tópico e concluí que esta solução é simples, confiável e "barata". Tentarei procurar em todas as funções do mql4 mais uma vez, se encontrar algo, acrescentarei a este posto. Obrigado pela ajuda.
Também me lembrei dos logs do terminal Metatrader 4, como regra geral todos os eventos comerciais são adicionados lá. Além disso, há também notificações para o terminal móvel sobre eventos comerciais. upd: infelizmente. estes eventos também não podem ser acessados sem a dll