Mt4 Fine del supporto. - pagina 39

 
George Merts:

Si può sostenere che questo sia un vantaggio.

Accidentalmente qualcuno cambierà la bandiera - e questo influenzerà il comportamento del TC.

Beh, non c'è modo di essere immuni agli incidenti. Il fattore umano è inarrestabile).
 
Реter Konow:

Ilmio compito iniziale: mostrare soluzioni efficaci senza usare OOP.


L'essenza della mia soluzione: - generare un array globale di bandiere di eventi di nuove barre di tutti i simboli e timeframes una volta al minuto.

Vantaggi:

1. Riempimento automatico della matrice e cancellazione automatica.

2. nessun carico di sistema.

3. Accesso diretto all'array da qualsiasi funzione e salvataggio del flag dell'evento prima che l'array venga cancellato.

Merda, mi sono svegliato finalmente....
Capite che una barra di qualsiasi simbolo può arrivare in qualsiasi istante e il compito è come dire al sistema nello stesso istante che è arrivata una nuova barra. Come si può prevedere che ciò avvenga quando si effettua il polling del sistema una volta al minuto?

 
Реter Konow:
Beh, non possiamo essere sicuri degli incidenti. Il fattore umano è inarrestabile)).

Ecco fatto. Pertanto, credo che il codice dovrebbe essere scritto in modo tale da limitare il più possibile i possibili errori umani. Proprio perché il fattore umano è irriducibile. Proprio ieri ho trovato un errore nel mio codice, a causa del quale le statistiche su Expert Advisor venivano raccolte dall'inizio della storia, e non dalla data specificata (data di creazione dell'EA). Ho semplicemente dimenticato di inizializzare la variabile ed è rimasta zero.

Così, ora ho ridisegnato l'analizzatore in modo tale che sarebbe necessario specificare la data, da cui l'analisi verrebbe fatta, e la fabbrica di parti di Expert Advisor restituirebbe solo la data di creazione e nessun'altra.

Ora è impossibile analizzare la storia del trading prima della data di creazione dell'Expert Advisor. Anche se la versione precedente ha fatto scambi - non saranno inclusi nelle statistiche ora.

 
Nikolai Semko:
Merda, finalmente mi sono svegliato....
Vi rendete conto che la barra di qualsiasi simbolo può arrivare in qualsiasi istante e il compito è quello di dire al sistema nello stesso istante che è arrivata una nuova barra. Come si può prevedere che ciò avvenga quando si effettua il polling del sistema una volta al minuto?

Perché "in questo preciso momento"?

Voi, amici miei, avete semplicemente approcci diversi per fare trading. Se stiamo lavorando sul timeframe M1 - dovremmo ottenere l'informazione che una nuova barra è arrivata - non "nello stesso istante", ma all'arrivo di un nuovo minuto. Se stiamo lavorando sul timeframe S1 (ciao, Volchansky) - dovremmo ottenere questa informazione all'arrivo di un nuovo secondo. Se stiamo lavorando su ogni zecca - le informazioni dovrebbero arrivare con l'arrivo di una nuova zecca.

E c'è l'opzione "lavora per evento" - ma allora non dovremmo avere la funzione IsNewBar(), ma la funzione OnNewBar(), che è in realtà un "sottoinsieme" della funzione OnTick()

 
Nikolai Semko:
Merda, finalmente mi sono svegliato....
Vi rendete conto che una barra di qualsiasi simbolo può arrivare in qualsiasi momento e il compito è quello di dire al sistema in quel momento che è arrivata una nuova barra. Come pensate che questo possa accadere quando si fa il polling del sistema una volta al minuto?

La funzione iBars() restituisce sempre il numero attuale di barre. Se è cambiato dall'ultima chiamata, commetterà un nuovo evento bar nell'array, se non è cambiato, non lo commetterà.
 
Nikolai Semko:
Merda, mi sono svegliato finalmente....
Vi rendete conto che qualsiasi barra simbolo può arrivare in qualsiasi istante e il compito è tanto quello di dire al sistema nello stesso istante che è arrivata una nuova barra. Come si può prevedere che ciò avvenga quando si effettua il polling del sistema una volta al minuto?

Capisco. Quindi la barra potrebbe non arrivare quando le iBar sono richieste, ma potrebbe arrivare un momento dopo la richiesta. Allora sarà perso dal sistema. Questo è il punto.


Allora cosa, essere continuamente accessibili? - Chiaramente non è la soluzione migliore.

 
Реter Konow:

Capisco. Quindi la barra potrebbe non arrivare al momento dello scrutinio, ma arriverà un momento dopo lo scrutinio. Allora si perderà per il sistema. Questo è il punto.

Peter, suggerisco un altro argomento di discussione, per la seconda volta. Non c'è bisogno di scrivere nulla, solo teoria.

Forum sul trading, sistemi di trading automatico e strategie di trading di prova

Mt4 End Support.

Alexey Viktorov, 2017.09.11 13:08

Credo di aver trovato un esempio primitivo dell'usabilità dell'OOP. Ecco una funzione per riempire un array con un valore specificato. Ci sono otto varietà a seconda del tipo di matrice.

Immaginate di dover scrivere una funzione che ha bisogno di passare un set di parametri, poi un altro, poi un terzo... Usando l'approccio algoritmico si ottengono N nomi di funzioni diverse. Sembrerebbe che non ci sia niente di sbagliato, potete scrivere 8 funzioni come ArrayInitializeInt()ArrayInitializeDouble() e così via. Ma è così bello non dover pensare al tipo di un array, basta usare una funzione in ogni caso, e sarebbe sicuro confondere quale array ci metti...


Документация по MQL5: Операции с массивами / ArrayInitialize
Документация по MQL5: Операции с массивами / ArrayInitialize
  • www.mql5.com
Операции с массивами / ArrayInitialize - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexey Viktorov:

Peter, suggerisco un altro argomento di discussione, per la seconda volta. Non c'è bisogno di scrivere nulla, solo teoria.


Per favore, aspettate un po'. Capiremo pienamente questo argomento e leggerò attentamente il secondo.
 
Реter Konow:
Solo un momento, per favore. Capiremo appieno questo argomento e guarderò da vicino il secondo.

Come ricordate l'argomento della nuova barra è stato portato per scoprire i pro di OOP, ma in nessun modo le opzioni di programmazione, tanto meno le vostre capacità. Ma le osservazioni sul tuo codice e sull'algoritmo in generale hanno portato la discussione nella direzione sbagliata. Quindi penso che non ci sia bisogno di continuare.

 
Alexey Viktorov:

Come ricordate, l'argomento della nuova barra è stato portato per scoprire i pro di OOP, ma non le opzioni di programmazione, tanto meno le vostre capacità. Ma le osservazioni sul tuo codice e sull'algoritmo in generale hanno portato la discussione nella direzione sbagliata. Quindi penso che non ci sia bisogno di continuare.

Cioè, volete che continui a cestinare i vantaggi dell'OOP, e che tutti continuino a trollarmi). Ma hai fondamentalmente ragione. La discussione è andata nella direzione sbagliata.
Motivazione: