( 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".
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?
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.
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)
structMqlTick { 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
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.
Standard Constants, Enumerations and Structures / Data Structures / Price Data Structure - Reference on algorithmic/automated trading language for MetaTrader 5
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.
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.
#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.
OnTimer()
https://www.mql5.com/en/docs/basis/function/events#ontimer
E SymbolName(x,1);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.
{
Print(i," Symbol: ",SymbolName(i,1)," Ask: ",MarketInfo(SymbolName(i,1),MODE_ASK)," Bid: ",MarketInfo(SymbolName(i,1),MODE_BID));
}
{
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 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:
{
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:
Esempio:
{
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.
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.
E ho bisogno di descrivere la mia situazione.
Tutta questa preoccupazione viene da qui.
---
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.