Errori, bug, domande - pagina 363

 

Da dove prendono le informazioni SymbolsTotal() e SymbolName() nel tester? Ho una mancata corrispondenza tra l'i-esimo simbolo nel terminale e il tester.

Se nel terminale il 3° USDJPY allora nel tester il 3° EURGBP.

Sto solo facendo un'enumerazione dei simboli di MarketWatch e li codifico in Expert Advisor per numeri di serie.

 

Buon pomeriggio!

Ho una domanda sulla funzioneIndicatorSetString in cui è possibile specificare un nome breve per l'indicatore, in riferimento al quale questo indicatore può essere successivamente rimosso dal grafico.

Penso che questa sia una situazione strana.

Sul PC dell'ufficio questa procedura va bene, ma sull'altro PC, quello di casa, il valore del suo nome breve è impostato automaticamente all'inizio (cioè, senza tener conto dei parametri di ingresso, che uso per formare un nuovo nome), e il nuovo nome appare solo dopo aver staccato l'indicatore e il suo ricaricamento.

La prima cosa che mi è venuta in mente sono state le differenze nel software, ma dopo aver confrontato, mi sono reso conto che tutto è di base, identico:

- Codici esperti e indicatori;

- versione del software (Build 425);

- OS (WinXP SP3);

- le stesse impostazioni (specialmente a confronto).

In generale, il controllo è il seguente:

1. Diversi pulsanti sono visualizzati sullo schermo, ognuno di loro ha un nome breve e generale di un indicatore

2. Quando premete il pulsante, appare l'indicatore corrispondente al suo nome comune, e quando lo rilasciate, viene cancellato in base al nome breve.

3. sul PC dell'ufficio gli indicatori sono cancellati dalla prima pressione, mentre sul PC di casa solo dalla seconda pressione.

Quale potrebbe essere la possibile ragione di questo?

Se schematicamente, escludendo le solite cose per gli esperti e gli indicatori, così come altre funzionalità che non sono direttamente collegate alla domanda menzionata, appare come segue:

1. In indicatore My_Indicator:

   input double  Offset  = 0;
   int OnInit()  
   {  
      string NewNameIndicator = OldNameIndicator + Offset;
      IndicatorSetString (INDICATOR_SHORTNAME, NewNameIndicator);
   }

2. In EA:

   void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
   {  
        String ShortNameIndicator1;
        //---При нажатии            
        if (sparam==My_Button1.Name()){
            if(My_Button1.State()==true){
                Int handle = iCustom (_Symbol,_Period, "My_Indicator1 ", "FirstParameter");
                ChartIndicatorAdd(0,0,handle);
                ShortNameIndicator1 = ChartIndicatorName(0,0,ChartIndicatorsTotal(0,0)-1);
                 Alert (“State()=true, IndicatorName()=”,   ShortNameIndicator1);
             }
        }
         //---При отжатии
        if (sparam==My_Button1.Name()){
           if(My_Button1.State()==false){
                  Alert (“State()=false, IndicatorName()=”,   ShortNameIndicator1);
                  ChartIndicatorDelete(0,0,ShortNameIndicator1);  
           }
        }
    }

Come risultato:

Sul PC dell'ufficio,IndicatorName viene emesso come nuovo nome dal primo passaggio, mentre sul PC di casa solo dal secondo passaggio.

Sul PC dell'ufficio, l'IndicatorName viene cancellato dopo il primo clic, mentre sul PC di casa viene cancellato dopo il secondo clic.

Allo stesso tempo, dopo la prima pressione e rilascio sul PC di casa viene visualizzato il nome iniziale dell'indicatore (My_Indicator senza aggiungere il parametro di ingresso al nome), anche se il codice dell'Expert Advisor e dell'indicatore, ripeto, viene utilizzato in entrambi i casi lo stesso.

 

Per citare il mio messaggio a servicedesk qui


Версия и битность терминала



MetaEditor 5.00 build 425. Windows 7 ultimate, build 7600.

Описание проблемы

При создании файла скрипта с кодом

void OnStart()
{
}


Il tentativo di compilazione porta all'errore interno #108

dopo aver scaricato l'ultima versione del terminale e averlo reinstallato nella stessa cartella, l'errore è cambiato in errore interno #-3

La sequenza di azioni
Non so se è legata all'errore, ma ha iniziato ad apparire subito dopo che ho aggiornato i file di aiuto MQL5 usando la corrispondente procedura automatica di MetaEditor.

Il risultato atteso


normale compilazione dello script))


Il problema è scomparso oggi dopo una pulizia antivirus del computer.

Il malware sembra essere nuovo, dato che non è stato rilevato da nessuno degli antivirus conosciuti. Le manifestazioni esterne erano le seguenti:

  • La presenza di un file con un nome senza senso ed estensione .dat nella cartella c:\Windows\AppPatch. L'intestazione del file mostra che è eseguibile, il nome originale è dd.exe, e i campi "nome del prodotto" e "copyright" sono serie di lettere maiuscole senza senso.
  • presenza di una voce Userinit modificata nella chiave di registro HKLM\Software\Microsoft\Windows NT\Winlogon con il percorso del suddetto file. Quando la voce viene cancellata, quest'ultima tende a ricrearsi inosservata se il virus è ancora in memoria.
  • esecuzione occasionale di diverse copie dei processi conhost.exe e route.exe, e talvolta netsh.exe
  • problemi con MetaEditor 5)) - L'editor Metaquotes era un rilevatore di malware piuttosto buono, oltre a tutte le sue caratteristiche)

Ho pulito tutto in modalità provvisoria.

Sì, è stato graffiato Webmoney conto locale, ma i dati di identificazione non sono scomparsi )))).

Raccomando a tutti di controllare manualmente.

 
Urain:

Da dove prendono le informazioni SymbolsTotal() e SymbolName() nel tester? Ho una mancata corrispondenza tra l'i-esimo simbolo nel terminale e il tester.

Se nel terminale il 3° USDJPY allora nel tester il 3° EURGBP.

Sto solo facendo un'enumerazione dei simboli di MarketWatch e li codifico in Expert Advisor per numeri di serie.

Non potete fare affidamento sull'ordine dei simboli in MarketWatch, perché può essere qualsiasi per definizione.
 

File:
Test_X.mq5  1 kb
MyMQL4.mqh  5 kb
 
EvgeTrofi:

che cos'è?

assomiglia a enum enum_TYPE_MARKET_INFO, in forma numerica.

Ho la stessa cosa. segnalalo alla SD.

 
Renat:
L'ordine dei caratteri nel marketwatch non può essere basato su, perché può essere qualsiasi ordine per definizione.

Non si tratta dell'ordine dei simboli o del numero di simboli, ma l'ordine e il numero sono diversi nel terminale e nel tester allo stesso tempo.

Ho risolto il problema passando la lista dei simboli al tester attraverso un file. Anche se sinceramente credo che questo sia un bug.

 
Urain:

Non si tratta dell'ordine dei simboli o del numero di simboli, ma l'ordine e il numero di simboli allo stesso tempo sono diversi nel terminale e nel tester.

In generale, ho risolto il problema passando il set di caratteri al tester attraverso un file. Anche se onestamente penso che sia un bug.

Non capisco bene il problema...

E se l'utente cambia l'ordine dei caratteri nel Marketwatch mentre lavora, sarà anche questo un bug?

 
AlexSTAL:

Non capisco bene il problema...

Se l'utente cambia l'ordine dei caratteri in Marketwatch mentre è in esecuzione, anche questo sarebbe un bug?

Quando il tester è in esecuzione? È improbabile, dopo l'avvio del tester funziona in modo autonomo, ma nella modalità di pre-avvio ci si aspetta che i simboli corrispondano (quelli tra i test di Expert Advisors, per esempio quando si cambia un EA o quando si cambia un simbolo o un periodo, e qualsiasi cambiamento nelle impostazioni del tester dovrebbe portare a una corrispondenza dei simboli, imho).
 
Urain:

Non si tratta dell'ordine dei caratteri o del numero di caratteri, ma l'ordine e il numero sono diversi nel terminale e nel tester allo stesso tempo.

In generale, ho risolto il problema passando una lista di caratteri nel tester attraverso un file. Anche se sinceramente credo che questo sia un bug.

Il database dei simboli (market watch) è aggiornato in modo asincrono e casuale dal server. Non si può fare affidamento sul suo ordine in ogni caso.

Tester è un programma separato, spesso remoto. Nel tester, la base di simboli non è trasferita completamente, e solo i simboli che sono usati nei calcoli - questo è fatto per risparmiare risorse. Pertanto, l'ordine dei simboli (aggiunti alla lista dei simboli attivi nel tester) è diverso.

Usare i nomi dei simboli nei parametri - questa è un'opzione più sicura.