[ARCHIVIO] Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 3. - pagina 309
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
È vero: è buona educazione mettere in ordine la propria spazzatura...
Ma in questo contesto, come puoi dire se la "spazzatura" deve essere ripulita ora o viceversa: non è spazzatura - sono i dati necessari per ulteriori calcoli.
Da quanto ho capito, deinit() dovrebbe essere usato per pulire il cestino, ma... viene eseguito non solo quando il grafico di uno strumento di trading viene cancellato, quando Expert Advisor viene rimosso da esso, ma anche quando TF viene cambiato. In questo caso, tutti i dati accumulati per il TF saranno persi e l'Expert Advisor ricomincerà a lavorare con un array nullo quando ritorna al timeframe precedente. Lo stesso accadrà se cambiamo uno qualsiasi dei parametri dell'Expert Advisor.
Si scopre che in alcune situazioni la "raccolta dei rifiuti" è un processo logico complesso, non un semplice cambiamento della dimensione dell'array.
Beh, non è difficile. Nel ciclo, inizializzate l'array con dei valori. Poi lavoriamo con l'array risultante. Quando il lavoro è fatto, lo rendiamo di lunghezza zero. In caso di dubbio, potete farlo alla fine del codice appena prima di return(0).
Si prega di suggerire il codice qui sotto per leggere il file di log. Legge automaticamente il file di registro corrente per data e lo invia alla stampante.
Dove:
Il file viene assemblato da parti. Ma non ho bisogno di tutto il file, solo dell'ultima riga. Aiuta a correggere, per favore.
Beh, non è difficile. Nel ciclo, l'array viene inizializzato con dei valori. Poi abbiamo lavorato con l'array risultante. Quando il lavoro è finito, lo rendiamo un array di lunghezza zero. In caso di dubbio, potete farlo alla fine del codice appena prima di return(0).
Sono stato frainteso.
Nel contesto della conversazione (se ho capito bene la premessa di questa conversazione), il loop è l'EA stessa. Dopo tutto, ogni volta che arriva un tick, l'array aumenta o rimane lo stesso a seconda che un nuovo valore debba essere scritto in esso.
Come possiamo sapere che il lavoro è finito, e non solo, per esempio, una persona ha cambiato i tempi? Anche per caso... In questo caso, verrà chiamata deinit() e tutti i dati saranno persi. L'Expert Advisor inizierà a memorizzare (scrivere in un array dinamico) di nuovo, in base ai valori ottenuti nel nuovo timeframe(un nuovo ciclo).
Questo è quello che voglio dire.
Non sono stato capito.
Nel contesto della nostra discussione (se ho capito bene la premessa di questa discussione), il ciclo è il lavoro dell'Expert Advisor stesso. Dopo tutto, ogni volta che arriva un tick l'array viene aumentato o rimane invariato, a seconda che un nuovo valore debba essere scritto in esso.
Come si può dire se un lavoro è finito e non solo una persona che cambia i tempi, per esempio? Anche per caso... In questo caso, verrà chiamata deinit() e tutti i dati saranno persi. L'Expert Advisor inizierà ad accumularli (scriverli in un array dinamico) di nuovo, basandosi sui valori ottenuti nel nuovo timeframe(un nuovo ciclo).
Il mio punto è questo.
Ho notato una caratteristica specifica del terminale. Poiché il calcolo del profitto dell'ordine non considera l'OrderSwap(), voglio che chiuda l'ordine in una volta sola.
Significa che dovremmo usare questa formula per chiudere l'ordine con un profitto:
(OrderProfit()+OrderSwap()+OrderCommission())>0
Non ho mai lavorato con la commissione e la commissione non è usata sulla demo, per questo non posso controllarla sul conto.
I miei calcoli sono corretti?
Se vai nei dettagli, puoi usare questa funzione. Vi dirà il motivo della deinizializzazione.
Abbastanza giusto... :)
L'ho dimenticato. Ora, con la mia abitudine di usare "infallibile", lo useremo...
ObjectGetValueByShift() per aiutarvi
E come ci lavorerai - solo tu lo sai...
Grazie, uomo gentile!
Posso cambiare la dimensione del lotto di un ordine in sospeso?
No, non puoi.
tutto quello che si può cambiare è spiegato qui https://docs.mql4.com/ru/trading/OrderModify