Errori, bug, domande - pagina 2394

 
Ciao!

Dati: due grafici nel terminale mt5, ad esempio EURUSD H1, EURUSD H1. Che i grafici abbiano i numeri 1 e 2, rispettivamente, quando si numerano da sinistra a destra.

Se il "pannello" (praticamente qualsiasi) è posto sul grafico che ha il numero 1, allora, dopo il passaggio al grafico 2 e il ritorno al grafico 1, il pannello è minimizzato - minimizzato nell'angolo superiore sinistro.

Allo stesso tempo, se il "pannello" è posto nel grafico 2, con l'esistente, ovviamente, grafico 1, allora dopo il passaggio al diagramma 1 e il ritorno al diagramma 2, la minimizzazione - minimizzazione del "pannello" nell'angolo superiore sinistro non avviene :).

Chi può spiegare qual è il problema e come affrontarlo?

Pannello-01Pannello-02
File:
 
SEM:

Ciao!

L'ultima versione(build 2007, 25 febbraio 2019) ha scoperto due bug:

1) 1) Quando si apre il programma (o si cambia il profilo) molti grafici (41 in totale) mostrano un eterno "Waiting for update".

2) 2) Quando si chiude il programma, non si chiude completamente, il task manager mostra che il programma non è chiuso, anche se visivamente non è più visualizzato.

3) Bug controverso (sulla versione di dicembre 2018 tutto funzionava bene, nessun errore), forse un bug dell'indicatore, quando si avvia il programma o si cambia il profilo, l'indicatore non viene calcolato correttamente, si può vedere dai dati renderizzati che alcuni dati non vengono calcolati correttamente. Quando si riapplica il modello o le proprietà dell'indicatore di apertura e chiusura, i dati vengono calcolati correttamente.

4) Per qualche motivo gli agenti hanno smesso di funzionare nel cloud dopo l'aggiornamento (l'account è elencato). Test superati 586, tempo passato 0 ore 0 minuti.

Errore nel rendering dei grafici, succede anche con gli indicatori standard, solo il riavvio del terminale e la chiusura forzata tramite task manager aiuta.

Quale può essere l'errore? La storia dei simboli viene caricata.

errore

 
SEM:

Errore con il rendering dei grafici, succede con gli indicatori standard, solo il riavvio del terminale, e la chiusura forzata tramite task manager aiuta.

Quale potrebbe essere l'errore? La storia dei simboli è caricata.


Per lo più in indicatori dove lavoro con oggetti (etichette, ecc.). Forse è collegato al grande numero di array di indicatori, in media circa 40 "INDICATOR_DATA" e "INDICATOR_CALCULATIONS". A proposito, se la memoria non mi inganna, in queste situazioni anche dopo una compilazione riuscita il terminale non aggiornerebbe gli indicatori, ma non ne sono sicuro.

Il codice è stato ottimizzato per elaborare i dati dal minor numero possibile di questi array per unità di tempo, con lo stesso numero di array o più.

Использование аналитических объектов - Графики котировок, технический и фундаментальный анализ - MetaTrader 5
Использование аналитических объектов - Графики котировок, технический и фундаментальный анализ - MetaTrader 5
  • www.metatrader5.com
Определение трендов, построение каналов, выявление циклов и уровней поддержки/сопротивления — все эти и многие другие задачи решаются при помощи аналитических объектов. Всего в торговой платформе доступно 46 таких инструментов. Среди них имеются геометрические фигуры, различные каналы, инструменты Ганна, Фибоначчи, Эллиотта и многое другое. В...
 
Ilya Malev:

Non sono a conoscenza di tali sottigliezze, in quanto non sono stato coinvolto nello sviluppo del mio TS su MT5 in passato. Com'è che i take sono dei marketplace, qual è la novità? Se colpiscono un gap devono essere eseguiti alla prima quotazione, cioè in caso di slittamento dei limiti verso il lato positivo. Un broker di qualità può permetterlo sul conto reale. Ma naturalmente questa non è una regola. Ma se lo spread per barra fosse massimo, compenserebbe il profitto sui limiti.

Probabilmente il modo più veloce per controllare lo slippage nello Strategy Tester

Forum sul trading, sistemi di trading automatico e test di strategia

Biblioteche: TradePanel_Csharp

fxsaber, 2019.03.05 10:10

Demo

Visualizza la colonna SlipPage

La colonna SlipPage mostra lo slippage all'apertura (per limite) e alla chiusura (per presa) in pip. Puoi vedere perfettamente come il Tester in modalità tick reali sovrastima il profitto.

 
È possibile in altri compilatori?
void OnInit()
{
  OnInit2(); // Пропишите внизу OnInit
}

#define OnInit OnInit2
In questo momento il compilatore dà
'OnInit2' - function not defined        Test3.mq5       3       3
1 error(s), 0 warning(s)                2       1


Vorrei che desse

'OnInit2' - function not defined        Test3.mq5       3       3 Пропишите внизу OnInit
1 error(s), 0 warning(s)                2       1
 
fxsaber:
Altri compilatori hanno questa caratteristica?


Vorrei che emettesse

È improbabile nei compilatori, molto probabilmente negli interpreti. I compilatori di solito hanno il binding statico dei puntatori alle chiamate di funzione o alle variabili (dovrebbe essere come suona?), cioè tutti gli offset dei puntatori saranno calcolati al momento della compilazione

Nel tuo esempio, tutto è alla vecchia maniera, #define e #ifndef ( _DEBUG ? )

 
Igor Makanu:

nei compilatori è improbabile, negli interpreti molto probabilmente possibile, i compilatori di solito usano il binding statico dei puntatori alle chiamate di funzione o alle variabili (dovrebbe suonare così? ), cioè tutti gli offset dei puntatori saranno calcolati in fase di compilazione

Nel tuo esempio, tutto è come prima, #define e #ifndef ( _DEBUG ? )

Volevo solo che il compilatore completasse il messaggio di errore con un commento di riga.

 
Vjacheslav Lapaev:

Non posso dire che nell'ultima versione, ma in quelle precedenti - di sicuro. Soprattutto negli indicatori, dove lavoro con oggetti (etichette ecc.). probabilmente è collegato a un gran numero di array di indicatori. in media, circa 40, sia "INDICATOR_DATA" che "INDICATOR_CALCULATIONS". A proposito, se la memoria non mi inganna, in queste situazioni anche dopo una compilazione riuscita il terminale non aggiornerebbe gli indicatori, ma non ne sono sicuro.

Il codice è stato ottimizzato per elaborare i dati dal minor numero possibile di questi array per unità di tempo, con lo stesso numero di array o più.

Grazie per il suggerimento! È un peccato, naturalmente, che il programma sia instabile, non c'era questo errore nella versione di dicembre.
 
Ilyas:

Non sono entrato nel codice presentato, lasciami provare a indovinare - il problema è che entrambi gli EA lavorano con la stessa risorsa grafica.

questo è un esempio di utilizzo della classe CAppDialog della libreria standard

se si usa questa classe, il metodo Minimize() viene sempre chiamato quando si cambia grafico

Non ho voluto capirlo, ho semplicemente scritto il mio OnClickButtonMinMax(), era piuttosto incasinato, ma ha funzionato senza problemi.

CAppDialog::OnClickButtonMinMax()
  {
   if(Width()<200) Minimized_state=false;
   if(Minimized_state)
     {
      Minimize();
     }
   else
     {
      Maximize();
      ObjectSet(TS1.Name()+"Label",OBJPROP_BACK,true);
      ObjectSet(TS2.Name()+"Label",OBJPROP_BACK,true);
      ObjectSet(CP.Name()+"Label",OBJPROP_BACK,true);
     }
  }

c'è un altro bug nella classe CAppDialog, dopo Minimize() e Maximize() la proprietà OBJPROP_BACK della classe CCheckBox viene cambiata, e le caselle di controllo diventano con bordo "quadrato", ho fissato ObjectSet(TS1.Name()+"Label",OBJPROP_BACK,true) in questo codice rapidamente; ...

 
Vjacheslav Lapaev:
Ciao!

Dati: due grafici nel terminale mt5, ad esempio EURUSD H1, EURUSD H1. Che i grafici abbiano rispettivamente i numeri 1 e 2, con numerazione da sinistra a destra.

Se il "pannello" (praticamente qualsiasi) è posto sul grafico che ha il numero 1, allora, dopo il passaggio al grafico 2 e il ritorno al grafico 1, il pannello è minimizzato - minimizzato nell'angolo superiore sinistro.

Allo stesso tempo, se il "pannello" è posto nel grafico 2, con l'esistente, ovviamente, grafico 1, allora dopo il passaggio al diagramma 1 e il ritorno al diagramma 2, la minimizzazione - minimizzazione del "pannello" nell'angolo superiore sinistro non avviene :).

Chi può spiegare qual è il punto e come affrontarlo?

Cancellato la mia risposta precedente

La finestra crolla perché non si adatta al grafico.
Se uscite dalla modalità "grafico a tutta la finestra del terminale", vedrete le dimensioni reali dei grafici.

Per evitare che la finestra del grafico collassi sul grafico, è necessario aumentare le dimensioni dei grafici.
Dopo di che, puoi espandere il grafico a tutto il terminale e provare a passare da uno all'altro