Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1196

 

@Oleg

Peça aos desenvolvedores para colocar o número de erro como na Documentação, não está claro porque ele está na Documentação e não é usado no Editor na Descrição

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

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

basta especificar o índice tampão a ser atribuído durante a inicialização no SetIndexBufer


Eu não sou bom em programação, não há buffer no código do indicador através do qual ele emite dados

 
edelweiss7:

Eu não sou bom em programação, no código do indicador não há buffer através do qual ele emite dados

Não escavei fundo em seu código, mas entendo que ele desenha níveis


... você precisa do manipulador OnChartEvent

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

monitorar a criação de novos objetos (éCHARTEVENT_OBJECT_CREATE), e se o prefixo do nome for de seu indicador - tomar as propriedades da linha criada (aí o preço e o tempo de seus pontos)

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

Eu não entrei em seu código em profundidade, mas entendo que ele desenha níveis


... você precisa de um manipulador OnChartEvent

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

monitorar a criação de novos objetos (éCHARTEVENT_OBJECT_CREATE), e se o prefixo do nome for de seu indicador - tomar as propriedades da linha criada (preço e tempo de seus pontos lá)

Como implementar isto em uma EA
 

Por favor, ajude-me a corrigir um erro que aparece no meu registro:

Mercado MQL4: falhou no carregamento de produtos (o cabeçalho falhou [12150])

 
O manipulador (mt5, indicador) maneja os botões pressionados repetidamente. Qual poderia ser a razão para isto?
 
Yevhenii Levchenko:
O manipulador (mt5, indicador) maneja os botões pressionados repetidamente. Qual pode ser a razão para isto?

redesenhar - ChartRedraw()

 
Yevhenii Levchenko:
O manipulador de eventos (mt5, indiciador) às vezes maneja botões de pressão. Qual pode ser a razão?

sem um diagrama de exemplo de como você processa os eventos é apenas adivinhar

Alternativamente, execute-o na pasta Indicators Examle\SimplePanel

e se este código funcionar corretamente ... adivinhe por si mesmo ;)

 
Yevhenii Levchenko:
O manipulador (mt5, indicador) maneja o botão pressiona em um intervalo de tempo. Qual poderia ser a razão para isto?

acabou de fazer o mesmo erro esta manhã :-)

O botão é adaptado para funcionar no testador e funciona através de sondagens, não completamente no OnChartEvent.

O erro estava no tipo de verificação

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

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

    state=!state;

}

 

Bom dia.

A questão é que as últimas 50 velas são calculadas para a média.

Pergunta. O que acrescentar, fixe no código para calcular uma vez e não cada tick. O problema é que no ON-LINE há uma acumulação de valor.

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
Razão: