Perguntas de um "boneco" - página 7

 
kPVT:

Tenho um perito com o qual tento lidar com os acontecimentos.

Recebo eventos que não correspondem a acções.

Corresponde exactamente a um clique no gráfico e a um clique num botão

Um evento controverso id=9(CHARTEVENT_CUSTOM), que é gerado quando, por exemplo, o gráfico é deslocado e há cerca de 10 eventos semelhantes.

O eventoCHARTEVENT_OBJECT_ENDEDIT não foi verificado.

Todo o resto não é claro. Ou a descrição não corresponde ao número do evento ou o evento de criação de um objecto é gerado incorrectamente quando se cria o objecto manualmente.

Em suma, por favor, ajudem.

Seria melhor se fosse assim:

//+------------------------------------------------------------------+
//| Expert chart event function                                      |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,         // идентификатор события  
                  const long& lparam,   // параметр события типа long
                  const double& dparam, // параметр события типа double
                  const string& sparam) // параметр события типа string
  {
   string str_id="";
   switch(id)
     {
      case CHARTEVENT_KEYDOWN:          str_id="KEYDOWN";        break;
      case CHARTEVENT_OBJECT_CREATE:  str_id="OBJECT_CREATE";  break;
      case CHARTEVENT_OBJECT_CHANGE:  str_id="OBJECT_CHANGE";  break;
      case CHARTEVENT_OBJECT_DELETE:  str_id="OBJECT_DELETE";  break;
      case CHARTEVENT_CLICK:            str_id="CLICK";          break;
      case CHARTEVENT_OBJECT_CLICK:      str_id="OBJECT_CLICK";   break;
      case CHARTEVENT_OBJECT_DRAG:       str_id="OBJECT_DRAG";    break;
      case CHARTEVENT_OBJECT_ENDEDIT:    str_id="OBJECT_ENDEDIT"; break;
      case CHARTEVENT_CHART_CHANGE:      str_id="CHART_CHANGE";   break;
      default:
         if(id>CHARTEVENT_CUSTOM)       str_id="CUSTOM+"+IntegerToString(id-CHARTEVENT_CUSTOM);
         else                         str_id="UNKNOWN";
     }
//--- для отладки
   printf("ChartEvent :id=%s, l=%d d=%f s=%s",str_id,lparam,dparam,sparam);
//---
   ExtExpertPrg.ChartEvent(id,lparam,dparam,sparam);
  }
 

Provavelmente estou a fazer algo errado, mas tentarei descrever mais detalhadamente porque é que estou a ter um mal-entendido.

AlexSTAL:

Inicialmente atribui correspondências numéricas às constantes numéricas já atribuídas CHARTEVENT_XXXXXXXXXXXXX...

Onde posso ver que valor numérico têm as constantes CHARTEVENT_XXXXXXXXXXXXX?

Não consegui encontrá-lo, por isso experimentei e descobri queCHARTEVENT_KEYDOWN = 0 e CHARTEVENT_CLICK = 4, o que corresponde à ordem de descrição destas constantes na ajuda.

Atribuí números a outros eventos em conformidade, por isso há uma série de eventos[10].

Rosh:

Infelizmente, não compreendo a sua pergunta. O que é que está exactamente a correr mal?

Com base na minha numeração de eventos e utilizando o Expert Advisor do meu posto anterior:

Por exemplo, desenho uma linha de tendência -> eventoCHARTEVENT_OBJECT_OBJECT_CHANGE,

mover esta linha -> o eventoCHARTEVENT_OBJECT_OBJECT_CHANGE,

alterar propriedades através do menu -> 2 eventosCHARTEVENT_CHART_CHANGE e CHARTEVENT_CUSTOM,

removê-lo premindo Del -> event only CHARTEVENT_KEYDOWN, (se a numeração do evento estiver errada, ainda deve haver 2 eventos, remoção e premir o botão).

Tudo isto se baseia na minha numeração.

A seguir...

Estou a utilizar um consultor especializado:

Desenho de uma linha de tendência -> ChartEvent :id=OBJECT_DRAG, l=0 d=0.000000 s=H1 Linha de tendência 40716

move esta linha -> ChartEvent :id=OBJECT_DRAG, l=0 d=0.000000 s=H1 Trendline 40716

Mudo as propriedades através do menu -> ChartEvent :id=OBJECT_CHANGE, l=0 d=0.000000 s=H1 Trendline 40716 e ChartEvent :id=CHART_CHANGE, l=0 d=0.000000 s=

Elimino-o pressionando Del -> ChartEvent :id=KEYDOWN, l=46 d=0.000000 s=

A situação ainda não está esclarecida.

Só por precaução:

MT5 64x - construir 458.

O sistema é W7 64x Home Extended.

Obrigado pela sua capacidade de resposta ))




Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика - Документация по MQL5
 
kPVT:

Provavelmente estou a fazer algo errado, mas vou tentar descrever mais detalhadamente porque estou a ter um mal-entendido.

Onde posso encontrar o valor numérico das constantes de CHARTEVENT_XXXXXXXXX?

Não consegui encontrá-lo, por isso experimentei e descobri queCHARTEVENT_KEYDOWN = 0 e CHARTEVENT_CLICK = 4, o que corresponde à ordem de descrição destas constantes em ajuda.

Dei os números do resto dos eventos em conformidade, foi assim que o evento da matriz[10] se revelou.

Isto não deve ser feito de forma alguma!

Os valores numéricos são atribuídos pelo revelador e podem ser alterados em qualquer altura.

Apenas constantes de caracteres podem ser usadas

--------------

tioVic deu-lhe um exemplo de utilização correcta (ou o meu snippet de ajuda)

--------------

O que está a fazer? Porque precisaria de uma representação numérica?

 
AlexSTAL:

Isto não deve ser feito em circunstância alguma!

Os valores numéricos são atribuídos pelo revelador e podem ser alterados em qualquer altura.

Apenas constantes de caracteres podem ser usadas

OK. Concordo que não o deve fazer.

Esqueça o meu trabalho prático).

Seguindo em frente...

AlexSTAL:

o tio Vic deu-lhe um exemplo de uso adequado (bem, ou a minha ajuda)

Como escrevi acima, usando o exemplodo tioVic também se obtêm eventos que não correspondem à acção.

kPVT:

Desenhar uma linha de tendência -> ChartEvent :id=OBJECT_DRAG, l=0 d=0,000000 s=H1 Linha de tendência 40716 em vez deCHARTEVENT_OBJECT_CREATE.

.....

removê-lo pressionando Del -> ChartEvent :id=KEYDOWN, l=46 d=0.000000 s=Em vez deCHARTEVENT_OBJECT_DELETE e depois CHARTEVENT_KEYDOWN

AlexSTAL:

O que está a fazer? Porque precisaria de uma representação numérica?

É uma longa explicação, e não importa. Vamos esquecer a minha numeração.

O principal é que estou a tentar dar sentido aos eventos, mas mesmo usando o exemplodo tioVic não compreendo a inconsistência entre os eventos gerados e as acções realizadas.

 
kPVT:

OK. Concordo que não se pode fazer isso.

Esqueça o meu asa-delta ).

Seguindo em frente...

Como escrevi acima, usando o exemplodo tioVic também se obtêm eventos que não correspondem à acção.

kPVT:


Adicioná-lo à inicialização:

   ChartSetInteger(0, CHART_EVENT_OBJECT_CREATE, true);
   ChartSetInteger(0, CHART_EVENT_OBJECT_DELETE, true);

Vai ficar bem:

Создание:
DS      0       _err (EURUSD,M30)       17:13:18        ChartEvent :id=OBJECT_CREATE, l=0 d=0.000000 s=M30 Horizontal Line 58241
DG      0       _err (EURUSD,M30)       17:13:18        ChartEvent :id=OBJECT_DRAG, l=0 d=0.000000 s=M30 Horizontal Line 58241
Удаление кл. Del:
EH      0       _err (EURUSD,M30)       17:13:21        ChartEvent :id=OBJECT_DELETE, l=0 d=0.000000 s=M30 Horizontal Line 58241
QD      0       _err (EURUSD,M30)       17:13:21        ChartEvent :id=KEYDOWN, l=46 d=0.000000 s=
 

Alex muito obrigado.

AlexSTAL:

Acrescentar à inicialização:

....

Adicionado ao bloco de peritos

void OnInit()
{
 ChartSetInteger(0, CHART_EVENT_OBJECT_CREATE, true);
 ChartSetInteger(0, CHART_EVENT_OBJECT_DELETE, true);
}

Tudo está no seu lugar.

Olhando para a ajuda, em lado nenhum está escrito que estes dois eventos precisam de ser "rubricados" para que todos os outros eventos estejam correctos.

Eu comentei-os e tudo funciona.

Acontece que se o Expert Advisor/indicador não tiver o bloco OnInit, ele interfere com os eventos.

Talvez seja a ideia, mas os programadores de mql5 devem saber disso, por via das dúvidas.

 
Eu gerei um Expert Advisor in Wizard, mas o testador gera um testador Core 1 parado porque OnInit erro crítico, alguém encontrou isto? Como é resolvido? Afinal, Wizard, OK, eu teria cometido um erro ali ...
 
Europa:
Eu gerei um Expert Advisor in Wizard, mas o testador gera um testador Core 1 parado porque OnInit erro crítico, alguém encontrou isto? Como é resolvido? Afinal de contas, Wizard, eu teria estragado algo lá...
Por favor anexar o código fonte. E parâmetros de teste.
 
uncleVic:
Anexar o código fonte resultante. E parâmetros de teste.
Arquivos anexados:
TheFirst.mq5  7 kb
 
Europa:

Não se reproduziu.

Pedi mais parâmetros de teste. Eu fiz:

Tanto a versão como a taxa de bits do MT5.