Errori, bug, domande - pagina 1545

 
Alexey Volchanskiy:
Youtube accetta tutti i file in avi finché non ci sono annunci violenti, niente porno, e la dimensione è < 15 mb se non sei in modalità avanzata. Inoltre, non ci dovrebbero essere annunci, anche nella tua firma.
Ti ho mandato un'e-mail in PM. Non funziona per me.
 
Karputov Vladimir:

Questo è un forum tecnico e ogni commento deve essere confermato:

  • informazioni sul terminale e sul sistema operativo (le prime tre righe della scheda di registro dopo il riavvio del terminale)
  • codice
  • descrizione dettagliata di ciò che hai fatto e di ciò che hai ottenuto.

Descrizione abbastanza dettagliata di ciò che ho osservato. Gli sviluppatori non mi devono niente e io non devo niente a loro. Se sono interessati, parleremo con loro nel Service Desk.

Il codice per l'indicatore vuoto è ovvio.

 
comp:

Registrato un video di come l'indicatore (in modalità standard - non debug) si aggiorna, ma non vengono disegnate nuove barre. Non appena si toglie l'indicatore dal grafico, appaiono immediatamente nuove barre.

Gli host non accettano il file video. Se necessario, posso inviarlo a servicedesk, così com'è.

Impacchettalo in un archivio e spediscilo. I file zip sono supportati.
 
Per favore ditemi come abilitare/disabilitare la "Precise time scale" in MetaTrader 5 programmaticamente. Non riesco a trovarlo.
Attraverso CHART_SHOW_DATE_SCALE - non è questo, come ho capito.

Attivare manualmente il tempo di interesse attraverso il seguente percorso:

Terminale -> Servizio -> Impostazioni -> Grafica -> Linea temporale precisa


Sto allegando il codice di prova qui sotto. Se "Precise time scale" è abilitato manualmente nel terminale di trading, questo indicatore di test disegna segmenti di linea verticale con punti di legame tra due barre. Se non è abilitato, non è tra le barre.

Lo screenshot qui sotto mostra un segmento di linea verticale creato dal codice di test tra le barre quando "Precise time scale" è abilitato



Ti dico subito la seconda cosa che mi interessa:

Se eseguo questo codice nel tester, le linee non vengono disegnate con punti di ancoraggio tra le barre. Non vengono creati come nello screenshot qui sopra, ma come nello screenshot qui sotto.

MetaTrader 5 Versione: 5.00 build 1295

Non so come fare domande più precise qui, dato che non ho una risposta alla prima.



P./S.:

Ho fatto alcune precisazioni:

  • aggiunto screenshot;
  • ha sostituito il codice del test, rimuovendo la variabile non utilizzata qui e visualizzando una finestra separata;
  • chiarimenti che ho fatto nel testo in carattere blu scuro.
File:
 

Come posso fare in modo che il terminale chiami OnCalculate in MT5? ChartRedraw non aiuta. La variante DLL non è adatta.

In altre parole, ho bisogno di creare un evento Calculate: https://www.mql5.com/ru/docs/runtime/event_fire#calculate

Документация по MQL5: Программы MQL5 / События клиентского терминала
Документация по MQL5: Программы MQL5 / События клиентского терминала
  • www.mql5.com
Программы MQL5 / События клиентского терминала - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

Dai risultati della ricerca sono giunto alla conclusione che non sembra esserci alcuna funzione nella Guida MQL5 che possa essere utilizzata per attivare/disattivare programmaticamente la "Scala temporale precisa" in MetaTrader 5.

Per qualche ragione, ho avuto l'impressione che ci siano stati dei cambiamenti in questo senso negli ultimi tempi. Anche se, naturalmente, devo essermi sbagliato.

Se è così, ripeto la mia prima domanda sopra:

Ci sarà una funzione per attivare/disattivare programmaticamente la "Scala temporale precisa"?


E in entrambi i casi (sarà o non sarà introdotto): come si fa questo interruttore on/off nel tester?

 
comp:

Come posso fare in modo che il terminale chiami OnCalculate in MT5? ChartRedraw non aiuta. La versione DLL non funziona.

Se lo trovate, per favore ditemelo anche voi).

Al momento, per quanto ne so, la risposta è "no way".

 
Комбинатор:

Se lo trovi, fallo sapere anche a me).

Al momento, per quanto ne so, la risposta è "no way".

Se sono un consigliere, è così

#define  PERIOD_NULL -1

void CallOnCalculates( void )
{
  const string Name = __FUNCTION__;

  if (GlobalVariableCheck(Name))
  {
    const int Value = (int)GlobalVariableGet(Name);

    if (Value == PERIOD_NULL)
    {
      GlobalVariableDel(Name);

      ExpertRemove();
    }
    else if (ChartSetSymbolPeriod(0, Symbol(), (ENUM_TIMEFRAMES)Value))
      GlobalVariableSet(Name, PERIOD_NULL);
  }
  else
  {
    const ENUM_TIMEFRAMES period = Period();

    if (ChartSetSymbolPeriod(0, Symbol(), (period == PERIOD_MN1) ? PERIOD_W1 : PERIOD_MN1))
    {
      GlobalVariableTemp(Name);

      GlobalVariableSet(Name, period);
    }
  }

  return;
}

void OnInit( void )
{
  CallOnCalculates();

  return;
}

Ma ne ho bisogno per qualcos'altro e non è adatto a me.

 
comp:

Se da Expert Advisor, allora come questo

Se lo script, allora possiamo (l'implementazione è completamente diversa - senza cambiare il TF)chiamare OnCalculate per un indicatore specifico sul grafico o per tutti loro in una volta.

Ma ne ho bisogno per qualcos'altro e questa variante non è adatta.

Ma anche questa variante (script) non è adatta, se l'indicatore deve far chiamare al terminale il proprio OnCalculate (MT5).

 
Con un indicatore, ho bisogno di un indicatore.