Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 986
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
In OnInit() chiamate la serie temporale del simbolo: iTime(Symbol,Timeframe,1);
All'inizio di OnTick(), chiedete la barra necessaria della serie temporale necessaria tramite la corrispondente iFunc(), o se( iTime(Symbol,Timeframe,10)==0) ritornate;
In questo caso, l'Expert Advisor non rileverà una nuova barra e aspetterà il prossimo tick.
In OnInit() abbiamo richiesto i dati della serie temporale, attivando così la paginazione dei dati.
In OnTick() controlliamo se la storia minima richiesta è disponibile per l'EA e se non è ancora disponibile, aspettiamo il prossimo tick.
E fino a quando tutti i dati richiesti dall'Expert Advisor non saranno ricevuti, esso aspetterà il prossimo tick.
Non appena tutti i dati necessari vengono scaricati e ottenuti, l'Expert Advisor inizierà a lavorare con la nuova barra e la storia richiesta.
Per mantenere aggiornati i dati seriali, assicuratevi di accedervi almeno una volta ogni due minuti. Fai un secondo timer per circa un minuto e mezzo (90 secondi) e in esso, accedi semplicemente a qualsiasi serie temporale del simbolo desiderato, per esempio iTime(Symbol,Timeframe,1); Senza controllare i dati ricevuti - semplicemente "sposta" la storia. Quindi tutti i dati sul simbolo saranno sempre aggiornati.
Naturalmente, proverò a controllare la nuova barra usando tutti i TF ma non è sincrono, questo non è MT4. Il problema non è con la barra ma con gli indicatori che non sono attivati dall'indicatore, che a sua volta è attivato dall'EA.
Lavoro a minuti, quindi la cronologia dovrebbe essere sempre aggiornata.
E, tutti questi controlli sono fatti per il test e non faranno altro che rallentare il lavoro su un conto reale, perché lì tutto funziona più lentamente che nelle condizioni stazionarie del tester, ripeto che su un conto reale l'indicatore funziona correttamente.
Finora ho risolto il problema controllando la prontezza degli indicatori, che sono falliti, prima dell'inizio del codice principale
Ma questo approccio non è universale, perché è necessario elencare tutti gli indicatori, c'è un altro metodo più universale per far funzionare correttamente l'ambiente tester?
In OnTick() controlliamo se la storia minima richiesta è disponibile per l'Expert Advisor, e se non è ancora disponibile - aspettiamo il prossimo tick.
E fino a quando tutti i dati richiesti dall'EA non saranno ottenuti, esso aspetterà il prossimo tick.
Non appena tutti i dati necessari sono stati pompati e ottenuti, l'Expert Advisor inizierà a lavorare con la nuova barra e la storia richiesta.
Come proponi di controllare la disponibilità della storia, non capisco...
Aggiungere questa linea prima della funzione MQL4
e funzionerà in MT5.
Questo è geniale. Grazie mille!
Si può dire MT5 può implementare tali pulsanti, forse già hanno uno, condividere il codice ...
Prevedere lo slittamento e le riquotazioni.
Ciao, se i prezzi Ask e Bid della classe CSymbolInfo sono più o meno chiari, come ottenere per esempio SessionInterest o SessionBuyOrdersVolume o SessionPriceLimitMin, dà degli zeri, non riesco a capire perché...
Ciao, se i prezzi Ask e Bid della classe CSymbolInfo sono più o meno chiari, come ottenere ad esempio SessionInterest o SessionBuyOrdersVolume o SessionPriceLimitMin, dà degli zeri, non riesco a capire perché...
Se il server di trading trasmette queste informazioni, le riceverete.
Di norma, queste informazioni sono trasmesse dai Broker per i simboli delle azioni (non confondere i Broker e i centri di negoziazione).
Se il server di trading trasmette queste informazioni, le riceverete.
Queste informazioni sono di solito trasmesse dai Broker per i simboli di scambio (non confondere Broker e centri di negoziazione).
Broker Otkritie, il RTS Index Futures, suppongo che deve trasmettere almeno SessionPriceLimitMin e SessionPriceLimitMax (perché sono, per quanto ho capito, i prezzi di apertura utilizzati negli ordini a mercato). L'apertura non si traduce... Io prescrivo per esempio:
Print(m_symbol.Ask()," ",m_symbol.SessionBuyOrdersVolume()); - dal vostro EA
Ricevo solo i prezzi di Ask nel registro
Per favore, aiutatemi a scrivere un pezzo di codice che determini correttamente la data dell'ultima barra con qualsiasi spostamento in qualsiasi TF, preciso al TF corrente.
Questo codice generalmente funziona, ma solo se l'ora di inizio della barra corrente coincide con la barra attuale (arrotondata al minuto), poiché il mio grafico attuale è M1. E se non coincide, allora si verificano vari contrattempi, a seconda dei diversi TF. Per esempio, ho bisogno di sapere la data di inizio dell'ultima barra M1 nell'ultima ora, se erano le 12 nessun problema, l'ora sarà 12:59, ma se erano le 13 sarà 13:58 perché la barra oraria ha aperto alle 14:05 e non alle 14:00 e la funzioneiBarShift ha restituito la barra più vicina alle 14:00, cioè 13:59.
Aggiunto: fatto questo, sembra funzionare
Otkritie broker, RTS index futures, presumo che dovrebbe trasmettere almeno SessionPriceLimitMin e SessionPriceLimitMax (come ho capito sono utilizzati in ordini di mercato da prezzi di apertura ). L'apertura non si traduce... Io prescrivo per esempio:
Print(m_symbol.Ask()," ",m_symbol.SessionBuyOrdersVolume()); - dal vostro EA
Ricevo solo i prezzi di Ask nel registro