Errori, bug, domande - pagina 2449

 
Alexey Navoykov:

Qualcuno qui ha consigliato di calcolare l'hash dai sorgenti. Per questo è necessario conoscere tutti i sorgenti (includniki) utilizzati dal programma, il che significa che è necessario analizzare il codice in modo approfondito. Non sono necessariamente specificati esplicitamente (#include <file.mqh>), ma possono essere specificati come macro.

Beh, se qualcosa dipende dalle macro, allora per cambiare il risultato bisogna cambiare le macro, cioè la fonte. Ho dato lettura di tutte le dipendenze su include-ums nell'articolo. Lì, tra l'altro, si tolgono i commenti e si lascia il codice nudo.

#property script_show_inputs

input string SourceFile = "filename.txt";
input string IncludesFolder = "";
input bool LoadIncludes = false;

void OnStart()
{
  Preprocessor loader(SourceFile, IncludesFolder, LoadIncludes);
  
  if(!loader.run())
  {
    Print("Loader failed");
    return;
  }

  // output entire data as it is assembled from one or many files
  int handle = FileOpen("dump.txt", FILE_WRITE | FILE_TXT | FILE_ANSI, 0, CP_UTF8);
  FileWriteString(handle, loader.text().get());
  FileClose(handle);
}
Ma sono d'accordo che è più comodo avere tutto nell'editor stesso piuttosto che manualmente.
 
Stanislav Korotky:

Beh, se qualcosa dipende dalle macro, allora le macro, cioè il codice sorgente, devono cambiare per cambiare il risultato. Ho dato tutte le dipendenze da include-um nell'articolo. Lì, a proposito, i commenti sono stati tolti, quindi rimane il codice nudo.

Grazie, anche io non ne ero a conoscenza. È vero che hai scritto lì a proposito dell'inciampo sulle macro, ma lo controlleremo attentamente.

Lo sviluppo di questo progetto ha ancora un enorme potenziale, soprattutto in termini di miglioramento del linguaggio internamente, perché molte cose in MQL non sono state ancora implementate e molte cose funzionano male (bug) e gli sviluppatori, da quanto ho capito, non hanno intenzione di migliorare nulla nel linguaggio stesso.

 
Nella classe CCanvas, i metodi FontGet, TextWidth, TextHeight e TextSize sono dichiarati non costanti per qualche motivo, anche se non apportano alcun cambiamento alla classe. Lavorano solo per ottenere dati.
 

Non capisco, è impossibile impostare una proprietà come Enabled=false per l'elemento grafico "Button" in modo che il pulsante non sia disponibile per la pressione?

Cioè, l'utente inizialmente preme il pulsante, parte un qualche tipo di processo, e il pulsante dovrebbe rimanere nella posizione premuta senza rispondere a ulteriori pressioni. è possibile fare questo?

p.s. Trovato. Imposta la priorità dell'oggetto su negativo.
 

Come si possono recuperare dati (testo) da questa lista?

 
fxsaber:

Potete dirmi come recuperare i dati (testo) da questa lista?

https://www.mql5.com/ru/docs/convert/enumtostring

Документация по MQL5: Преобразование данных / EnumToString
Документация по MQL5: Преобразование данных / EnumToString
  • www.mql5.com
//| Script program start function                                    |
 

Ho bisogno di un elenco di tutti gli enum dal tooltip.

Ho provato diversi programmi a finestra. Non funziona, perché la lista scompare quando il focus va via.
Программы для работы с окнами приложений | Темная сторона Силы | Blog. Just Blog
  • ManHunter / PCL
  • www.manhunter.ru
В процессе разработки программ, а также их исследования, очень часто приходится работать с окнами приложений на уровне системы. То есть просматривать или менять стили окон, передавать или отслеживать сообщения и уведомления, обрабатывать другие параметры окон. У меня накопилась небольшая подборка программ, значительно облегчающих выполнение...
 

Aiutatemi con OnTradeTransaction(). Il comportamento descritto qui sotto è normale? Ho controllato nel tester - è così :( E su un account "live"?

OnTick() ha un ciclo che chiude le posizioni in ordine.

OnTradeTrancaction() calcola il numero di posizioni aperte.

L'Expert Advisor lo fa in questo modo: prima chiude il ciclo fino alla fine, poi va a OnTradeTransaction ed esegue i calcoli nello stesso ordine.

In altre parole, non

закрытие тикета #1 -> подсчёт с учетом закрытия тикета #1 -> закрытие тикета #2 -> подсчёт с учетом закрытия тикета #2 -> ...

а

закрытие тикета #1 -> закрытие тикета #2 -> ... -> подсчёт с учетом закрытия тикета #1 -> подсчёт с учетом закрытия тикета #2 -> ...

cioè funziona in modo sequenziale, non in parallelo.

Se quanto descritto sopra è normale, risulta che OnTradeTransaction() può essere usato in modo sicuro solo in Expert Advisors che aprono/chiudono un solo ordine. Se c'è una griglia o una griglia a più simboli (o una griglia a più simboli, dove si trova :) ) - l'algoritmo si rompe.

 
Igor Zakharov:

Aiutatemi con OnTradeTransaction(). Il comportamento descritto qui sotto è normale? Ho controllato nel tester - è così :( E su un account "live"?

Tutto è sempre più complicato su un conto reale che su uno demo e nel tester.

Il concetto di OnTradeTransaction è mal pensato, ma l'opinione "semplicemente non sai come cucinarli" si sente costantemente.


O scrivere senza i dati della transazione, o ottenerli dall'esterno in qualsiasi punto del programma senza aspettare che OnTradeTransaction entri.

L'asincronia è buona per la griglia multisimbolo. Pertanto, sceglierei la seconda opzione.
 
È terminal64.exe o metatester64.exe dove si trova il Tester? Bisogna capire quale file cambiare per evitare il bug.