Discussione sull’articolo "Elaborazione di eventi di trading nell'Expert Advisor utilizzando la funzione OnTrade()"

 

Il nuovo articolo Elaborazione di eventi di trading nell'Expert Advisor utilizzando la funzione OnTrade() è stato pubblicato:

MQL5 ha fornito una miriade di innovazioni, incluso il lavoro con eventi di vario tipo (eventi timer, eventi di trading, eventi personalizzati, ecc.). La capacità di gestire gli eventi ti consente di creare tipi completamente nuovi di programmi per il trading automatico e semi-automatico. In questo articolo, considereremo gli eventi di trading e scriveremo del codice per la funzione OnTrade(), che elaborerà l'evento Trade.

Allora vedremo che dopo l'apertura per funzione di mercato OnTrade() e insieme ad essa i nostri Alert sono stati eseguiti quattro volte:

Figura 1. Avvisi

Autore: KlimMalgin

 

Durante la compilazione dà un errore di conversione implicita da 'numero' a 'stringa' TradeControl.mq5 349 99
in questa riga

_alerts += "Sulla coppia "+PositionList[i].symbol+" lo stoploss è stato modificato da "+ PrevPositionList[i].sl +" a "+ PositionList[i].sl +"\n";

 
sergey1294:

In fase di compilazione dà un errore di conversione implicita da 'number' a 'string' TradeControl.mq5 349 99
in questa riga

_alerts += "Sulla coppia "+PositionList[i].symbol+" lo stoploss è stato modificato da "+ PrevPositionList[i].sl +" a "+ PositionList[i].sl +"\n";

Non si tratta di un errore, ma di un avviso che indica che questa riga contiene una conversione implicita di un numero in una stringa. In questi casi, il compilatore avverte della conversione e il programmatore deve decidere se questa conversione è un errore o meno.

Per rimuovere questo avviso, è necessario effettuare una conversione esplicita:

_alerts += "Su Steam".+PositionList[i].symbol+" ha cambiato lo stoploss da "+ (string)PrevPositionList[i].sl +" su "+ (string)PositionList[i].sl +"\n";
 
KlimMalgin:

Non si tratta di un errore, ma di un avviso che indica che questa riga contiene una conversione implicita di un numero in una stringa. In questi casi, il compilatore avverte della conversione e il programmatore deve decidere se questa conversione è un errore o meno.

Per rimuovere questo avviso, è necessario effettuare una conversione esplicita:

Grazie, la proveremo.
 

In qualche modo non funziona correttamente, la posizione si è chiusa al take profit, ma non ci sono informazioni al riguardo. ecco il log

DS 0 TradeControl (EURUSD,M5) 22:36:06 Evento commerciale ricevuto
EJ 0 TradeControl (EURUSD,M5) 22:36:06 Errore # 4751
PN 0 TradeControl (EURUSD,M5) 22:36:06 876874 Ordine ricevuto per l'elaborazione
DH 0 TradeControl (EURUSD,M5) 22:36.:08 Evento commerciale ricevuto
IS 0 TradeControl (EURUSD,M5) 22:36:08 Errore #4751 Ordine 876874 non trovato!
HK 0 TradeControl (EURUSD,M5) 22:36:08 Errore # 4751 stato:4
RQ 0 TradeControl (EURUSD,M5) 22:36:08 0 Ordine eseguito:36:08 0 Ordine eseguito, procedere alla negoziazione
OD 0 TradeControl (EURUSD,M5) 22:36:08 876874 ordine generato trade #947094
RS 0 TradeControl (EURUSD,M5) 22:36:08 Aperta una posizione in acquisto su EURUSD
DQ 0 TradeControl (EURUSD,M5) 22:36:08 Ricevuto l'evento commerciale
DI 0 TradeControl (EURUSD,M5) 22:36:08 Ricevuto evento commerciale
KQ 0 TradeControl (EURUSD,M5) 22: 41:45 Ricevuto evento Trade
KI 0 TradeControl (EURUSD,M5) 22:41:45 Evento commerciale ricevuto
KQ 0 TradeControl (EURUSD,M5) 22:41:45 Evento commerciale ricevuto

 
L'articolo non tratta la chiusura di posizioni con take-profit e stop-loss. Vengono presi in considerazione solo gli eventi indicati all'inizio dell'articolo.
 
KlimMalgin:
L'articolo non tratta la chiusura di posizioni con take-profit e stop-loss. Vengono considerati solo gli eventi indicati all'inizio dell'articolo.

Capisco, è un peccato che non vengano presi in considerazione. Aspetterò che appaia un articolo simile o che voi aggiungiate il vostro in accordo con esso. L'analogo dell'articolo per MT4 si trova qui https://www.mql5.com/ru/articles/1399.

  1. Apertura di una posizione
    • "Posizione di mercato
      • Comprare
      • Vendere
    • Ordine pendente
      • Limite di acquisto
      • Limite di vendita
      • Acquisto Stop
      • Vendi Stop
  2. Attivazione dell'ordine
    • Limite di acquisto
    • Limite di vendita
    • Buy-stop
    • Vendi Stop
  3. Chiusura della posizione
    • "Posizione di mercato
      • Acquista
        • Stop Loss
        • Prendi profitto
        • Manuale (non Stop Loss o Take Profit)
      • Vendere
        • Stop Loss
        • Prendere profitto
        • Manualmente
    • Ordine pendente (cancellare)
      • Limite di acquisto
        • Tempo di scadenza
        • Manualmente
      • Limite di vendita
        • Tempo di scadenza
        • Manualmente
      • Stop all'acquisto
        • Tempo di scadenza
        • Manuale
      • Vendi stop
        • Tempo di scadenza
        • Manuale
  4. Modifica della posizione
    • "Posizione di mercato
      • Acquista
        • Stop Loss
        • Prendere profitto
      • Vendere
        • Stop Loss
        • Prendere profitto
    • Ordine pendente
      • Limite di acquisto
        • Prezzo di apertura
        • Stop Loss
        • Profitto
        • Tempo di scadenza
      • Limite di vendita
        • Prezzo di apertura
        • Stop Loss
        • Presa di profitto
        • Tempo di scadenza
      • Acquisto Stop
        • Prezzo di apertura
        • Stop Loss
        • Presa di profitto
        • Tempo di scadenza
      • Vendi Stop
        • Prezzo di apertura
        • Stop Loss
        • Presa di profitto
        • Tempo di scadenza
События в МetaТrader 4
События в МetaТrader 4
  • 2006.05.29
  • Andrey Khatimlianskii
  • www.mql5.com
Статья посвящена программному отслеживанию событий в терминале МetaТrader 4, таких как открытие, закрытие и модификация ордеров, и рассчитана на пользователя, обладающего базовыми навыками работы с терминалом и программирования на MQL 4.
 

Nessuna elaborazione di HistorySelect()==false! Un caso abbastanza frequente...

 
KlimMalgin:
L'articolo non tratta la chiusura di posizioni con take-profit e stop-loss. Vengono considerati solo gli eventi indicati all'inizio dell'articolo.
Dovreste essere invano... Aspettavo questo articolo solo per un esempio di gestione degli stop...
 

MQL5 fornisce la modalità di elaborazione degli eventi,

Perché non si forniscono i parametri dell'evento?

ComeOnChartEvent(....), fornire l'id dell'evento e i parametri!!!!!!!!!!!!!

 
DxdCn:
Desiderio comeOnChartEvent(....), fornire l'id dell'evento e i parametri!!!!!!!!!!!!!

L'evento OnChartEvent è utilizzato nell'articolo Creare pannelli di controllo attivi in MQL5 per il trading.