consulente esperto - domande varie - pagina 17

 

#Calcoli degli ordini e aggiornamenti delle informazioni sul conto- Aperto

( Una volta ho chiesto - ma ho ancora bisogno di aiuto )

Chiamo le mie funzioni di calcolo con OnTick() o Start(), e queste dipendono dai Tick dei simboli del grafico.
E ho iniziato a ricercare come posso fare gli aggiornamenti di calcolo del mio EA non dipende da Ticks e simboli ( / Chart - Ticks, Symbols ).
Sto solo cercando di fare "Tutti i calcoli degli ordini e le informazioni sul conto" si aggiornanoin sincronia (/ tempo reale) con "Terminal > Trade".

Per favore aiutatemi, grazie.
Grazie in anticipo.

 
Documentation on MQL5: Language Basics / Functions / Event Handling Functions
Documentation on MQL5: Language Basics / Functions / Event Handling Functions
  • www.mql5.com
Language Basics / Functions / Event Handling Functions - Reference on algorithmic/automated trading language for MetaTrader 5
 
Marco vd Heijden:

E SymbolName(x,1);

Buon commento, che mi ha aiutato, grazie mille.
Ora, sto usando OnTick() e OnTimer(), entrambe le funzioni funzionano bene per me. (È la prima volta che uso OnTimer() per gli EA)

---

Inoltre vorrei provare Ticks. Ho solo bisogno di Ticks da quali simboli (coppie) su 'Terminal > Trade' e simbolo del grafico corrente. Questo SymbolName() potrebbe aiutarmi?
Per favore, aiutatemi o datemi un consiglio, come posso fare?

Tutto il meglio.

 
   for(int i=0;i<SymbolsTotal(1);i++)
     {
      Print(i," Symbol: ",SymbolName(i,1)," Ask: ",MarketInfo(SymbolName(i,1),MODE_ASK)," Bid: ",MarketInfo(SymbolName(i,1),MODE_BID));
     }
 
Marco vd Heijden:
   for(int i=0;i<SymbolsTotal(1);i++)
     {
      Print(i," Symbol: ",SymbolName(i,1)," Ask: ",MarketInfo(SymbolName(i,1),MODE_ASK)," Bid: ",MarketInfo(SymbolName(i,1),MODE_BID));
     }

Incredibile esempio e commento davvero utile per me, grazie mille amico.

È possibile che i Ticks provengano da coppie / simboli di trading, per favore?
Perché quasi tutto il tempo il mio Market Watch mostra tutti i simboli - specialmente io cerco nuove buone coppie per i trade e questa è l'unica ragione per cui sto cercando alcuni modi per come posso ottenere simboli/coppie 'Terminal > Trade', solo attualmente aprendo trade ticks.

Grazie mille in anticipo.

 
no ma potete aggiornare il prezzo nella funzione OnTimer() impostata su un valore basso per esempio 250 millisecondi sarà uguale a 4 tick al secondo quindi perché ne avete bisogno?
 
Marco vd Heijden:
no ma puoi aggiornare il prezzo nella funzione OnTimer() impostata su un valore basso per esempio 250 millisecondi sarà uguale a 4 tick al secondo quindi perché ne hai bisogno ?

Grazie per il tuo commento.

( sottotopic -#Calcoli degli ordini e aggiornamenti delle informazioni sul conto - Aperto) Come ho detto, io uso i calcoli dei profitti degli ordini e questo non è sincronizzato con 'Terminal > Trade', questa è l'unica ragione.
Così, a volte la volatilità molto bassa, Ticks viene meno quantità, e penso che le funzioni potrebbero essere eseguito 4 volte in un secondo, in modo che l'esecuzione per niente ( / vano ).

Se non riesco a trovare il modo in cui può darmi ' Terminale > Commercio ' ticks per Ordini Calcoli di profitto e conto info ( / aggiornamenti ) sincronizzazione. Userò i tuoi metodi molto utili - quale mi hai mostrato che modi nei tuoi ultimi commenti, grazie mille. (Ho già testato e quel modo mi funziona)

Grazie in anticipo.

 

Beh, se siete davvero interessati, potete usare:

struct MqlTick
  {
   datetime     time;          // Time of the last prices update
   double       bid;           // Current Bid price
   double       ask;           // Current Ask price
   double       last;          // Price of the last deal (Last)
   ulong        volume;        // Volume for the current Last price
   long         time_msc;      // Time of a price last update in milliseconds
   uint         flags          // Tick flags
  };

La struttura per restituire i prezzi correnti (MqlTick)

Questa è una struttura per memorizzare gli ultimi prezzi del simbolo. È progettata per il recupero veloce delle informazioni più richieste sui prezzi correnti.

La variabile di tipo MqlTick permette di ottenere i valori di Ask, Bid, Last e Volume con una sola chiamata della funzione SymbolInfoTick().

I parametri di ogni tick vengono compilati indipendentemente dal fatto che ci siano cambiamenti rispetto al tick precedente. Così, è possibile trovare un prezzo corretto per qualsiasi momento nel passato senza la necessità di cercare i valori precedenti nella cronologia dei tick. Per esempio, anche se solo un prezzo Bid cambia durante un tick di arrivo, la struttura contiene ancora altri parametri, tra cui il precedente prezzo Ask, il volume, ecc.

Puoi analizzare i tick flags per scoprire quali dati sono stati cambiati esattamente:

  • TICK_FLAG_BID - il tick ha cambiato un prezzo Bid
  • TICK_FLAG_ASK - un tick ha cambiato un prezzo Ask
  • TICK_FLAG_LAST - un tick ha cambiato l'ultimo prezzo di scambio
  • TICK_FLAG_VOLUME - un tick ha cambiato un volume
  • TICK_FLAG_BUY - un tick è il risultato di un'operazione di acquisto
  • TICK_FLAG_SELL - un tick è il risultato di un'operazione di vendita

Esempio:

void OnTick()
  {
   MqlTick last_tick;
//---
   if(SymbolInfoTick(Symbol(),last_tick))
     {
      Print(last_tick.time,": Bid = ",last_tick.bid,
            " Ask = ",last_tick.ask,"  Volume = ",last_tick.volume);
     }
   else Print("SymbolInfoTick() failed, error = ",GetLastError());
//---
  }

Vedi anche

https://www.mql5.com/en/docs/constants/structures/mqltick

Strutture e classi, CopyTicks(), SymbolInfoTick()

Quindi puoi usarlo per controllare se c'è stato un nuovo tick per un simbolo specifico, ma questo sarà effettivamente un passo in più rispetto alla lettura diretta dei livelli di prezzo, quindi ancora una volta, perché ne avresti bisogno.

Documentation on MQL5: Standard Constants, Enumerations and Structures / Data Structures / Price Data Structure
Documentation on MQL5: Standard Constants, Enumerations and Structures / Data Structures / Price Data Structure
  • www.mql5.com
Standard Constants, Enumerations and Structures / Data Structures / Price Data Structure - Reference on algorithmic/automated trading language for MetaTrader 5
 

Marco vd Heijden:

Beh, se ti piace davvero puoi usare: ...
Così puoi usarlo per controllare se c'è stato un nuovo tick per un simbolo specifico, ma questo sarà effettivamente un passo in più rispetto alla lettura diretta dei livelli di prezzo, quindi ancora una volta, perché ne avresti bisogno.

Grazie per il tuo commento informativo, molto apprezzato.

---

Se ho ragione questa parte della frase è una domanda.

... perché ne avresti bisogno.
C'
è solo una ragione, sto cercando di evitare loop di funzioni irrilevanti / esegue.

( Vorrei menzionare oggi, mentre stavo testando il calcolo del profitto degli ordini del mio EA, il calcolo è stato continuamente aggiornato ( / loop per niente ) Lo stavo testando sul grafico EURUSD, e mentre stavo testando, ho visto un volume molto basso quasi 20 ( non oltre ) al minuto.
E mentre stavo testando, un'altra volta ero sicuro, potrei trovare un modo che mi darà solo 'Terminal > Trade' Ticks. Vorrei dire ancora una volta, non c'è alcuna ragione.
So solo che i modi che possono darmi ticks OnTick() solo ticks potrebbe venire da Chart Symbol. E altri OnTimer() potrebbe darmi 4 tick al secondo... e così via, che ho imparato dai vostri commenti molto utili e grandi, un altro grazie mille per questo. )

E ho bisogno di descrivere la mia situazione.

Il mio calcolo del profitto degli ordini potrebbe essere sincronizzato con il pannello Terminal Trade mentre il mio EA è in esecuzione sul simbolo del grafico (ad esempio: EURUSD) se il simbolo del grafico è uguale al simbolo dell'ordine, ma se apro una nuova posizione per GBPUSD e poi la sincronizzazione si interrompe con il pannello Terminal Trade.
E se ho ordini per EURUSD, ma provo a cercare nuove buone coppie per il commercio su altri simboli grafici (ad esempio: GBPUSD, NZDUSD e così via) il calcolo dei profitti degli ordini non si sincronizza con il pannello 'Terminal > Trade'.
( Non dimenticare che conosco già OnTimer(), che mi hai aiutato come posso usarlo per 4 ticks al secondo. )

Tutta questa preoccupazione viene da qui.

Oggi, apro posizioni per brevi termini, se apro posizioni per lunghi termini, non darò attenzione a quella sincronizzazione con Terminal Trade.

---

Spero che tu mi capisca ora più chiaramente.

Tutto il meglio.

 

Beh, se vuoi davvero aspettare ogni tick dovrai scrivere un EA separato per ogni simbolo e usare la funzione OnTick().

Ma posso dirti che programmo anche micro controllori e sono in un ciclo while infinito (per sempre) fino a quando non si verifica un'interruzione di corrente, o un interrupt.

Per controllare se una condizione è vera o falsa, usa il più piccolo tipo di dati booleani e il tuo processore lo fa già milioni se non miliardi di volte al secondo con tutti i processi in esecuzione in background e la grafica ecc.

È quando si inizia a fare calcoli pesanti che coinvolgono tipi di dati più grandi, che questo diventa un problema.