Errori, bug, domande - pagina 2634
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
Ciao!
Voglio eseguire alcuni MT4 con un file batch.
Potete per favore dirmi come fare questo e perché il mio codice non funziona:
Nel migliore dei casi esegue alcuni MT4, poi si blocca.
Naturalmente non c'è carenza di RAM.
Inoltre, ho provato su diversi computer
No, non è così.
il tempo del server, a proposito, non si ferma il sabato. ecco il contrario: nel terminale, il tempo del server viene aggiornato con l'arrivo di una nuova quotazione. Per esempio, avete solo un simbolo aperto nella panoramica del mercato (non solo nel tester, ma anche nella realtà). e non ci sono tick per cinque secondi - per tutto questo tempo il timer del tempo del server non si muoverà. questo è vero per il sabato: il tempo del server è in esecuzione, ma il terminale non lo sa, perché non ci sono tick. il tester mancherà semplicemente questo periodo.
Ho già controllato. Nel tester,TimeLocal funziona nei fine settimana,TimeTradeServer anche, maTimeCurrent ovviamente no. Non ci sono ticchettii, ma il tempo del server è ancora lì.
https://www.mql5.com/ru/forum/328008/page2#comment_14166682
Come sempre, le biciclette.
La domanda qui è perché non passa.
Dopo tutto, le variabili dei parametri hanno valori iniziali.
E se si specifica la dimensione delle misure in numeri
Il compilatore lo salta, qual è il trucco?
Lo sviluppatore potrebbe commentare questo?
A quale scopo? Per eseguire l'auto-ottimizzazione nel fine settimana? Quindi l'impostazione di un timer da OnTick a distanza di qualche minuto funzionerebbe. Se funziona, allora i ticchettii si sono fermati e si può ottimizzare.
Se per altri scopi, formulateli.
No, non per altri scopi.
Non pensavo che TimeLocal funzionasse nei fine settimana, quindi ho fatto così: ho aggiunto qualche ora a TimeCurrent e ho controllato il giorno della settimana. Se è sabato, allora inizia a ottimizzare.
Naturalmente non posso essere sicuro dell'inizio del sabato, perché il mercato chiude diversamente il venerdì o nei giorni festivi.
Inoltre, non ho trovato da nessuna parte un mezzo per determinare se il mercato è chiuso o no.
No, non per altri scopi.
Non pensavo che TimeLocal funzionasse nei fine settimana, quindi ho fatto così: ho aggiunto qualche ora a TimeCurrent e ho controllato il giorno della settimana. Se è sabato, allora inizia a ottimizzare.
Naturalmente non posso essere sicuro dell'inizio del sabato, perché il mercato chiude diversamente il venerdì o nei giorni festivi.
Inoltre, non ho trovato da nessuna parte un mezzo per determinare se il mercato è chiuso o no.
Avete provato?
SymbolInfoSessionTrade
o
SymbolInfoInteger(SYMBOL_TRADE_MODE)
Qualcosa di loro dovrebbe essere buono
L'avete provato?
SymbolInfoSessionTrade
o
SymbolInfoInteger(SYMBOL_TRADE_MODE)
Uno di loro dovrebbe essere buono, ricordo.
No, non l'ho fatto. Il manuale non specifica come determinare se il mercato è aperto o no.
Il fatto è che quando il mercato "apre" il lunedì, per esempio presso un broker le quotazioni iniziano ad arrivare alle 02:05 ma le transazioni non vengono accettate per alcuni minuti e viene visualizzato "Mercato chiuso".
Non so se questo aiuterà o meno.
TEMPO D'INIZIO DEL SIMBOLO
Data di inizio dello strumento (di solito usata per i futures)
No, non l'ho fatto. La guida non dice specificamente come determinare se il mercato è aperto o no.
Il fatto è che quando il mercato si "apre" il lunedì, per esempio in un broker le quotazioni iniziano ad arrivare alle 02:05, ma le operazioni non vengono accettate per qualche minuto in più, viene fuori "Mercato chiuso".
Non so se questo aiuterà o meno.
TEMPO D'INIZIO DEL SIMBOLO
Questo è il symbol_start_time (di solito usato per i futures)
IlSymbolInfoSessionTrade mostra quando inizia il commercio e ilSymbolInfoSessionQuote quando arrivano le quotazioni.
su: questo dovrebbe aiutare
boolIsTradeAllowed(
const string symbol// simbolo
datetimetested_time//time
);
Come sempre, le biciclette.
La domanda qui è perché una tale voce non passa.
Dopo che tutte le variabili dei parametri hanno valori iniziali.
E se si specifica la dimensione delle misure in numeri
allora il compilatore lo salta, qual è la fregatura?
Lo sviluppatore commenterà questo?
Roman, questa è la seconda volta che sei caduto in una elementare mancanza di volontà di leggere la documentazione.
Solo unintero può essere un indice di matrice. Non sono ammesse più di quattro matrici dimensionali. La numerazione degli elementi della matrice inizia con 0. L'ultimo elemento di una matrice unidimensionale è numerato 1 meno della dimensione della matrice, cioè l'accesso all'ultimo elemento di una matrice di 50 interi sarà come a[49]. Lo stesso vale per gli array multidimensionali, con una dimensione indicizzata da 0 alla dimensione 1. L'ultimo elemento dell'array bidimensionale nell'esempio sarebbe come m[6][49].
Gli array statici non possono essere rappresentati come serie temporali, cioè la funzione ArraySetAsSeries() che imposta l'accesso agli elementi dell'array dalla fine di un array al suo inizio non è applicabile ad essi. Se volete fornire l'accesso a un array come nelle serie temporali, usate un oggetto array dinamico.
Se si accede al di fuori dell'array, il sottosistema di esecuzione genererà un errore critico e l'esecuzione del programma si fermerà.
E nella documentazione di mql4, se la memoria non mi inganna, si diceva chiaramente che le variabili non dovrebbero essere usate come dimensione di un array.
Come sempre, le biciclette.
La domanda qui è perché una tale voce non funziona.
Dopo tutto, le variabili da parametri, hanno valori iniziali.
E se si specifica la dimensione delle misure in numeri
Allora il compilatore lo salta, qual è il trucco?
Lo sviluppatore potrebbe commentare questo?
Non sono uno sviluppatore, ma commenterò.
Per un array statico, il compilatore deve allocare un certo numero di byte in memoria già al momento della compilazione.
Quanta memoria deve essere allocata dal compilatore se non conosciamo riga e colonna al momento della compilazione?
I valori iniziali sono utilizzati solo se i parametri sono omessi durante la chiamata. I parametri effettivi sono noti solo in fase di esecuzione.
Quindi, niente trucchi, imparate la lingua.
No, non è così,SymbolInfoSessionTrade mostra quando c'è trading eSymbolInfoSessionQuote quando arrivano le quotazioni.
ap: questo dovrebbe aiutare.
boolIsTradeAllowed(
const string symbol// simbolo
datetimetested_time//time
);
Penso che non sia quello giusto. C'è un argomento speciale qui: https://www.mql5.com/ru/forum/40295
Non l'ho guardato fino in fondo, soprattutto perché è per MQL4.
Non credo che il server debba inviare le quotazioni dei simboli se il mercato è chiuso.
Il mio robot non è realmente influenzato da questo perché dopo che il mercato "apre" quando arrivano i tick analizza la tendenza, le loro inversioni, e questo richiede un po' di tempo. Durante questo periodo il mercato si apre.
Ma è d'intralcio se vogliamo eseguire manualmente alcuni trade durante questo periodo. Se l'esecuzione è basata sul mercato, la richiesta è in attesa fino all'apertura del mercato e viene naturalmente eseguita al prezzo corrente.
La funzione diretta che riceve il nome del simbolo e restituisce vero/falso (mercato aperto/chiuso) è chiaramente mancante.