Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1196

 

@Oleg

Chiedere agli sviluppatori di mettere il numero di errore come nella Documentazione, non è chiaro perché sia nella Documentazione e non sia usato nell'editor nella Descrizione

https://www.mql5.com/ru/docs/constants/errorswarnings/errorscompile

Документация по MQL5: Константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки компиляции
Документация по MQL5: Константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки компиляции
  • www.mql5.com
Импортируемая функция не может иметь такого параметра (нельзя передавать указатель, класс или структуру, содержащую динамический массив, указатель, класс и т.д.) Недопустимый возвращаемый тип. Например, такая ошибка будет выдана для функций, импортированных из...
 
Alexandr Sokolov:

specificare semplicemente l'indice del buffer da assegnare durante l'inizializzazione in SetIndexBufer


Non sono bravo a programmare, non c'è nessun buffer nel codice dell'indicatore attraverso il quale emette i dati

 
edelweiss7:

Non sono bravo a programmare, nel codice dell'indicatore non c'è nessun buffer attraverso il quale emette dati

Non ho scavato a fondo nel tuo codice, ma ho capito che disegna livelli


... avete bisogno del gestore OnChartEvent

https://www.mql5.com/ru/docs/event_handlers/onchartevent

monitorare la creazione di nuovi oggetti (èCHARTEVENT_OBJECT_CREATE), e se il prefisso del nome è del tuo indicatore - prendere le proprietà della linea creata (lì il prezzo e il tempo dei suoi punti)

Документация по MQL5: Обработка событий / OnChartEvent
Документация по MQL5: Обработка событий / OnChartEvent
  • www.mql5.com
//|                                          OnChartEvent_Sample.mq5 | //|                        Copyright 2018, MetaQuotes Software Corp. | //|                                             https://www.mql5.com | //| Expert initialization function                                   |...
 
Alexandr Sokolov:

Non ho approfondito il tuo codice, ma ho capito che disegna livelli


... hai bisogno di un gestore OnChartEvent

https://www.mql5.com/ru/docs/event_handlers/onchartevent

monitorare la creazione di nuovi oggetti (èCHARTEVENT_OBJECT_CREATE), e se il prefisso del nome è del tuo indicatore - prendere le proprietà della linea creata (prezzo e tempo dei suoi punti)

Come implementare questo in un EA
 

Per favore aiutatemi a correggere un errore che appare nel mio registro:

Mercato MQL4: fallito il caricamento dei prodotti (intestazione get fallita [12150])

 
Il gestore (mt5, indictaor) gestisce la pressione dei pulsanti ripetutamente. Quale potrebbe essere la ragione di questo?
 
Yevhenii Levchenko:
Il gestore (mt5, indictaor) gestisce la pressione dei pulsanti ripetutamente. Quale può essere la ragione di questo?

ridisegna - ChartRedraw()

 
Yevhenii Levchenko:
Il gestore di eventi (mt5, indictaor) gestisce la pressione dei pulsanti a volte. Quale può essere la ragione?

senza un diagramma di esempio di come elaborate gli eventi è solo una supposizione

In alternativa, eseguilo nella cartella Indicators Examle\SimplePanel

e se questo codice funziona correttamente ... indovina da solo ;)

 
Yevhenii Levchenko:
Il gestore (mt5, indictaor) gestisce la pressione dei pulsanti in un intervallo di tempo. Quale potrebbe essere la ragione di questo?

ha appena fatto lo stesso bug questa mattina :-)

Il pulsante è adattato per funzionare nel tester e funziona tramite polling, non completamente nell'OnChartEvent.

L'errore era nel tipo di controllo

if (ObjectGetInteger(....,OBJPROP_STATE)!=state /* это баг, должен быть 0 */) {

    // состояние поменялось

    state=!state;

}

 

Buongiorno.

Il punto è che le ultime 50 candele sono calcolate per la media.

Domanda. Cosa aggiungere, fissare nel codice per calcolare una volta e non ogni tick. Il problema è che nell'ON-LINE c'è un accumulo di valore.

for(int j=rates_total-50-1; j<rates_total-1; j++)
     {
      if(open[j]>close[j])
         candleOC+=open[j]-close[j];
      if(close[j]>open[j])
         candleOC+=close[j]-open[j];
      candleHL+=high[j]-low[j];
      bar+=1;
     }
   if(bar>0)
     {
      filterOC=candleOC/bar;
      filterOC=NormalizeDouble(filterOC,_Digits);
      filterHL=candleHL/bar;
      filterHL=NormalizeDouble(filterHL,_Digits);
     }
//filterHL=0.00500;  //пример среднего значения HL
//filterOC=0.00250;  //пример среднего значения OC
Motivazione: