Supponiamo che si sia verificato un evento in OnTradeTransaction() dopo il quale qualche azione deve essere eseguita, ma si è verificato un errore al primo tentativo di eseguire questa azione. Cosa fare? Ovviamente, dobbiamo provare a farlo di nuovo, e per questo abbiamo bisogno di salvare da qualche parte i dati sulla necessità della ripetizione di queste azioni - molto probabilmente, questi dati sono salvati nelle solite variabili globali di Expert Advisor o nelle funzioni statiche. E improvvisamente ho dovuto riavviare il terminale... i dati sono spariti.
E quando si analizza la situazione attuale e la storia - niente è andato da nessuna parte.
Se il terminale è andato in crash, allora dopo il riavvio in OnInit() e così è consuetudine condurre un inventario completo.
В языке MQL5 предусмотрена обработка некоторых предопределенных событий. Функции для обработки этих событий должны быть определены в программе MQL5: имя функции, тип возвращаемого значения, состав параметров (если они есть) и их типы должны строго соответствовать описанию функции-обработчика события. Именно по типу возвращаемого значения и по...
Questo può anche essere usato come un 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(); // запомним количество в истории
}
Sì, ho letto tutto in questo thread e ho concluso che questa soluzione è semplice, affidabile ed "economica". Cercherò di guardare ancora una volta tutte le funzioni di mql4, se trovo qualcosa, lo aggiungerò a questo post. Grazie per l'aiuto.
Mi sono anche ricordato dei log del terminale Metatrader 4, di regola tutti gli eventi commerciali sono aggiunti lì. Inoltre, ci sono anche notifiche al terminale mobile sugli eventi commerciali. upd: purtroppo anche questi eventi non sono accessibili senza dll
Мобильный трейдинг в MetaTrader 5 — это возможность торговать на Форексе, фондовой бирже, а также фьючерсами в любое время из любой точки мира. Имея смартфон или планшет с установленным приложением MetaTrader 5 для iOS или Android, вы всегда будете в курсе рыночной ситуации и сможете совершать торговые операции 24 часа в сутки. Все возможности...
Supponiamo che si sia verificato un evento in OnTradeTransaction() dopo il quale qualche azione deve essere eseguita, ma si è verificato un errore al primo tentativo di eseguire questa azione. Cosa fare? Ovviamente, dobbiamo provare a farlo di nuovo, e per questo abbiamo bisogno di salvare da qualche parte i dati sulla necessità della ripetizione di queste azioni - molto probabilmente, questi dati sono salvati nelle solite variabili globali di Expert Advisor o nelle funzioni statiche. E improvvisamente ho dovuto riavviare il terminale... i dati sono spariti.
E quando si analizza la situazione attuale e la storia - niente è andato da nessuna parte.
Se il terminale è andato in crash, allora dopo il riavvio in OnInit() e così è consuetudine condurre un inventario completo.
Questo può anche essere usato come un OnTrade() incompleto
Sì, ho letto tutto in questo thread e ho concluso che questa soluzione è semplice, affidabile ed "economica". Cercherò di guardare ancora una volta tutte le funzioni di mql4, se trovo qualcosa, lo aggiungerò a questo post. Grazie per l'aiuto.
Mi sono anche ricordato dei log del terminale Metatrader 4, di regola tutti gli eventi commerciali sono aggiunti lì. Inoltre, ci sono anche notifiche al terminale mobile sugli eventi commerciali. upd: purtroppo anche questi eventi non sono accessibili senza dll