Errori, bug, domande - pagina 2652
![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Perché state litigando? Perché non facciamo qualcosa di utile insieme?
Stanislav ha postato uno script fantasticamente utile in KB. Crea facilmente archivi con file MQL e risorse.
Ho un EA con centinaia di file mqh. Usando lo script posso ora trasferire facilmente il mio EA al codice sorgente, controllare le versioni e condividere con gli altri.
Grazie. Cercherò di rompere e controllare le opzioni con gli eventi del grafico.
Dai un'occhiata al thread, recentemente ha trattato la questione in dettaglio -https://www.mql5.com/ru/forum/327888
Anton Shpilyuk: 2) Циклом-перебором до тех пор пока дата не будет совпадать(минус - скорость работы) это так?
A proposito di "ottenere l'indice delle barre per copiare il tempo"
Orrore, lo è davvero! Il compito era quello di ottenere le barre del timeframe M1 nell'indicatore, anche se l'indicatore stesso funziona su timeframe M5.
1. abbiamo dovuto inizializzare il timeframe desiderato in OnCalculate() per caricarlo prima dell'inizio dell'indicatore (dopo l'inizializzazione il FirstStartFlag = false;). Ricordate, negli indicatori, se non è caricato, darà -1 o non completamente caricato, quindi controlliamo quanto è caricato, se non abbastanza, andiamo all'inizio direturn(0);
dichiarare array MqlRates rates[]; all'inizio, dovecnt_bars*5; - ricalcolare il numero di barre M5 in M1
Dopo di che, aggiorniamo i dati storici su M1 nel corpo della funzione richiesta ogni volta che eseguiamo i calcoli:
Inoltre, nel ciclo delle barre M5, facciamo un ciclo incorporato di ricerca dell'indice della barra M1 corrispondente,essendo time[s] la barra M5 corrente del timeframe in elaborazione:
E poi usiamo questo indice per trovare i dati necessari della barra M1, nel mio caso è rates[IndexRates-5].time e rates[IndexRates-k-4].close
Grazie al cielo questo ciclo annidato passa attraverso le barre rapidamente, anche su una storia di 90 giorni. Ma vorrei essere in grado di cercare gli indici delle barre nell'array rates[].time come una ricerca binaria usando la funzione ArrayBsearch
Breve riassunto del bug:
Quando c'è eredità di classe A <= B <= C <= D
e vengono implementate due funzioni di sovraccarico, per esempio, una con parametro A* e una con parametro B*,
Quando si passa un oggetto C* o D* in una tale funzione, il MQL causa un errore di compilazione "chiamata ambigua a funzione sovraccaricata".
Domanda: c'è un workaround più sensato a questo bug idiota di quello presentato sopra?
Eccoci con altri "Perché MQL != C++"...
Perché commentare qualcosa se non si è arrivati in fondo?
Perché commentare qualcosa se non si è arrivati in fondo?
Perché ho aperto da tempo un topic per tali chiarimenti (perché nessuno come te potrebbe farlo da solo).
E poi che la differenza di lingue non ha niente a che vedere con errori o bug!
Il MQL si sta demoralizzando a poco a poco:
Breve riassunto del bug:
Quando c'è eredità di classe A <= B <= C <= D
e due funzioni sono implementate, per esempio, una per A* e una per B*,
In MQL, il passaggio di un oggetto C* o D* in una tale funzione causerà un errore di compilazione "chiamata ambigua a funzione sovraccaricata".
Domanda: c'è un workaround più sensato a questo bug idiota di quello presentato sopra?
Beh, STL non è trasposto uno a uno. Qui bisogna guardare da vicino le specifiche. Il modo più semplice è quello di scrivere tutte le funzionalità possibili nei metodi astratti in una classe base o interfaccia, e nei discendenti - o implementazione o =delte. In questo caso, è necessario passare puntatori o riferimenti dello stesso tipo ai metodi della classe base. Anche se c'è un male inevitabile sotto forma di una tabella virtuale, ma è meglio organizzare l'architettura in modo tale che non ci siano costose ramificazioni tramite dynamic_cast da nessuna parte.