Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 667

 
Leo59:
Purtroppo non funziona.

init();
if(IsTradeAllowed()) Print("Trade is allowed");
if(!IsTradeAllowed()) Print("Il commercio non è permesso");


Dice: "Trading autorizzato"

Ci deve essere un altro modo. Come?

Prova così:

starttime=(int)TimeCurrent()+sec; // например +5 секунд. Эту строку в OnInit

if(TimeCurrent()>starttime) {
...
}

Penso che il principio sia chiaro, e finché non c'è un tick,TimeCurrent non cambierà

 
Vitaly Muzichenko:

Prova in questo modo:

starttime=(int)TimeCurrent()+sec; // например +5 секунд

if(TimeCurrent()>starttime) {
...
}

Penso che il principio sia chiaro, e finché non c'è un tick,TimeCurrent non cambierà

Sì, per Forex è buono, perché le zecche vengono spesso. E se non fosse per il Forex?
 
Leo59:
Sì, per il forex è buono perché le zecche vengono spesso. E se non fosse per il Forex?
Il punto è che durante l'inizializzazione la variabile "starttime" sarà qualche secondo più lunga del tempo del server. Così,quando i tick arrivano all'apertura del mercato, alloraTimeCurrentsarà sempre più distarttime, e i tick non hanno importanza - la condizione è soddisfatta e sarà soddisfatta fino alla prossima reinizializzazione, per esempio, cambiando timeframes, o ricaricando il terminale.
 
Vitaly Muzichenko:
Il punto è che durante l'inizializzazione il tempo della variabile "starttime" sarà qualche secondo più lungo del tempo del server.
Ho bisogno di elaborare le informazioni ora, prima che arrivi il primo tick, in modo che quando arriva il nuovo (primo) tick, tutto sia pronto a funzionare.
 
Leo59:
Non lo è. Controlla ora, se non ti dispiace). Ma non è questo il punto. Ho bisogno di elaborare le informazioni ora, prima che arrivi la prima zecca, in modo che quando arriva la nuova (prima) zecca, tutto sia pronto a partire.
Lo uso da diversi anni, ma non ho bisogno di elaborare nulla finché non c'è una zecca. Hai bisogno di un'altra soluzione, e il link che ti ho dato dovrebbe essere
 
Vitaly Muzichenko:
Lo uso da qualche anno, ma non ho bisogno di elaborare nulla finché non ci sono zecche. Hai bisogno di un'altra soluzione, e dal link che hai dato dovrebbe essere
Hai ragione, "starttime=(int)TimeCurrent()+sec; // ad esempio +5 secondi", ovviamente, è più grande di TimeCurrent(). Ho esagerato, il mio cervello sembra essere completamente fuso ))
Il link che ho dato lì dice solo TimeLocal() ma volevo evitarlo.
 
Leo59:
Hai ragione, "starttime=(int)TimeCurrent()+sec; // per esempio, +5 secondi", ovviamente, è più grande di TimeCurrent(). Ho esagerato, il mio cervello sembra essere completamente fuso ))
Il link porta solo a TimeLocal() e volevo evitarlo.

A seconda del compito, si può provare a usare una combinazione diTimeCurrent()+OnTimer(), o TimeCurrent()+TimeGMT()+TimeGMTOffset()

Potete fare tutte le condizioni con il timer e commerciare conTimeCurrent() Ci sono molte soluzioni, ma la scelta spetta a voi per il vostro compito individuale.

 
Vitaly Muzichenko:

A seconda del compito, si può provare a usare una combinazione diTimeCurrent()+OnTimer(), o TimeCurrent()+TimeGMT()+TimeGMTOffset()

Potete eseguire tutte le condizioni tramite timer e fare trading tramiteTimeCurrent() Ci sono molte soluzioni, ma la scelta spetta a voi per il vostro compito individuale.

E come, nella mia domanda, si può applicare OnTimer()?
 
Leo59:
E come, nella mia domanda, si può applicare OnTimer()?
Mantenere il flag di inibizione su fino a quando tutto è stato calcolato, per esempio...
 
Artyom Trishkin:
Tenere la bandiera di non lavoro fino a quando tutto è stato calcolato, per esempio...
Artyom, la domanda era su come definire un giorno libero programmaticamente senza ricorrere a TimeLocal(). ))