Errori, bug, domande - pagina 418

 

Sto lavorando con MT5 da un paio di giorni e ho notato che gli stop e i profitti possono ora essere modificati con il mouse, il che è buono, ma c'è un piccolo bug. Quando sposto il mouse sullo stop, il puntatore cambia per mostrare che lo stop è attivo per la modifica, ma il puntatore cambia anche quando si usa lo strumento "Crosshair", il che significa che se voglio misurare la distanza dallo stop, non è molto comodo, perché il secondo punto è dietro il puntatore e non posso vedere dove lo sto portando. Volevo fare PrintScreen, ma non fa una foto del mouse.

La linea di fondo: non è conveniente misurare con "Crosshair" dalla fermata.

 
mql5:
L'errore è stato risolto.
Il controllo degli interruttori "fetch" è stato discusso e non possiamo implementare un controllo corretto/corretto.
Il valore di un'espressione switch può essere qualsiasi cosa, per esempio:

Ok, capisco. Il compilatore non può controllare il valore dell'espressione switch al posto del programmatore.

Come questione secondaria, questo costrutto è usato nell'esempio precedente:

enum EV { v1, v2, };
...
   switch(EV(3))

Significa che è accettabile gestire dati di un tipo enumerato non solo con costanti nominate (v1, v2, ecc.) ma anche specificando il loro numero ordinale nell'enumerazione ( EV(n) )?

...Ho fatto tali costruzioni per risolvere una tale questione - ma qui può essere molto più semplice.

 
Yedelkin:

Questo significa che è accettabile riferirsi ai dati di un tipo enumerato non solo con costanti nominate (v1, v2, ecc.) ma anche specificando il loro numero ordinale in un'enumerazione ( EV(n) )?

In questo caso, viene applicata solo la conversione standard del tipo int in EV. In notazione funzionale.

Ci sono due possibili forme sintattiche di conversione di tipo in mql5 che sono equivalenti nel risultato: (Nome_tipo) Valore e Nome_tipo(Valore).

Voglio dire, non è una caratteristica speciale legata alle enumerazioni, è solo una normale conversione di tipo.

 
Jhonny:

Sto lavorando con MT5 da un paio di giorni e ho notato che gli stop e i profitti possono ora essere modificati con il mouse, il che è buono, ma c'è un piccolo bug. Quando sposto il mouse sullo stop, il puntatore cambia per mostrare che lo stop è attivo per la modifica, ma il puntatore cambia anche quando si usa lo strumento "Crosshair", il che significa che se voglio misurare la distanza dallo stop, non è molto comodo, perché il secondo punto è dietro il puntatore e non posso vedere dove lo sto portando. Volevo fare PrintScreen, ma non fa una foto del mouse.

In conclusione: non è conveniente misurare con "Crosshair" dalla fermata.

Sono d'accordo, è una buona osservazione, ma non è un bug.

Auguri per MT5

 
MetaDriver:

In questo caso, è stata applicata solo una conversione standard da int a EV. In notazione funzionale.

Ci sono due possibili forme sintattiche di conversione di tipo in mql5, che sono uguali nel risultato: (Nome_tipo) Valore e Nome_tipo(Valore).

Voglio dire, non è una caratteristica speciale legata alle enumerazioni, è solo una normale conversione di tipo.

Fico! Cercherò di digerire il tutto. Ma da quello che hai detto, la risposta alla mia domanda è positiva. Questo è buono! Grazie!
 

Impossibile avviare il test in modalità di visualizzazione. Il visualizzatore stesso si avvia, ma il test non parte. Questo è quello che c'è scritto nel registro:

2011.06.16 21:25:47 EURUSD: simbolo sincronizzato, 2904 byte di informazioni sul simbolo ricevuti
2011.06.16 21:25:47 simbolo EURUSD errore di sincronizzazione
2011.06.16 21:25:47 impossibile ottenere cronologia EURUSD,M1
2011.06.06.16 21:25:47 file di log "C:\Program Files\MetaTrader 5\Tester\Agent-127.0.0.1-3000\logs\20110616.log" scritto
2011.06.16 21:25:48 agente tester chiuso

 

Sviluppatori.

Il tester visivo è davvero così lento o mi sto solo immaginando le cose?

 
molotkovsm:

Impossibile avviare il test in modalità di visualizzazione. Il visualizzatore stesso si avvia, ma il test non parte. Questo è ciò che è scritto nel log:

2011.06.16 21:25:47 EURUSD: simbolo sincronizzato, 2904 byte di informazioni sul simbolo ricevuti
2011.06.16 21:25:47 EURUSD errore di sincronizzazione del simbolo
2011.06.16 21:25:47 non può ottenere la storia EURUSD,M1
2011.06.16 21:25:47 file di log "C:{ProgrammiMetaTrader 5\Tester\Agent-127.0.0.1-3000\logs\20110616.log" scritto
2011.06.16 21:25:48 arresto dell'agente tester

Lo stesso problema. Il log dell'agente non può essere aperto tramite il percorso specificato.

2011.06.16 22:40:52     tester agent shutdown
2011.06.16 22:40:52     log file "C:\Program Files\MetaTrader 5 - 64\Tester\Agent-127.0.0.1-3000\logs\20110616.log" written
2011.06.16 22:40:52     cannot get history EURUSD,M1
2011.06.16 22:40:52     symbol EURUSD synchronization error
2011.06.16 22:40:52     EURUSD: symbol synchronized, 2904 bytes of symbol info received
2011.06.16 22:40:51     Pentium Dual-Core  T4300 @ 2.10 GHz, 3001 MB
2011.06.16 22:40:51     13 Kb of total initialization data received
2011.06.16 22:40:51     successfully initialized
2011.06.16 22:40:51     expert file added: Experts\Тест.ex5. 2958 bytes loaded
2011.06.16 22:40:51     346 bytes of selected symbols loaded
2011.06.16 22:40:51     196 bytes of input parameters loaded
2011.06.16 22:40:51     1490 bytes of tester parameters loaded
2011.06.16 22:40:51     3788 bytes of group info loaded
2011.06.16 22:40:51     login (build 468)
2011.06.16 22:40:51     initialization finished
2011.06.16 22:40:51     MetaTester 5 started on 127.0.0.1:3000
2011.06.16 22:40:51     MetaTester 5 x64 build 468 (16 Jun 2011)


 
Si prega di fornire il codice.
 
Renat:
Per favore, datemi il codice.

Buona notte, mi chiedevo se in questo codice

  if(B >= spred && IND == true && proverka()==true)

dopo aver controllato B>spred, che è "FALSE", il resto dei valori viene controllato

Aumenta il tempo di esecuzione del test, quindi devo modificare il codice nel modo seguente

   if(B >= bar)
    {
     if (IND == true) 
      {
       if (proverka)==true)
        {
         .......

E il più dispendioso in termini di calcolo (proverka() - copia dei valori del buffer di un indicatore)

L'ho messo per ultimo ma non controlla l'ultimo. Mi chiedo.

E perché proprio questo?

Oppure non controlla l'ultimo:

 if(B >= bar) if (IND == true) if (proverka()==true)