Erros, bugs, perguntas - página 930

 
kPVT
Obrigado pela dica.
Por favor, partilhe as suas experiências. Especificamente:
1. Mecanismo para gerar nomes únicos. Enumeração directa de nomes existentes por auto-incrementação?
2. Mecanismo de verificação da autenticidade do objecto. Isto é, não só verificar se existe um objecto com tal nome, mas todos os seus parâmetros, por exemplo, tamanhos, tipos, texto, etc. Com a poupança de recursos em mente. É bastante trabalhoso realizar um número colossal de verificações para cada propriedade de cada objecto em cada carraça. Naturalmente, se houvesse bloqueio de objecto de quaisquer alterações do exterior (excepto para o criador da EA), ou cálculo de hash de objecto para verificar a autenticidade do objecto RAPIDAMENTE (em um "se").
 

Favor confirmar a reprodução da situação com a falta de gráfico redesenhado.

Em anexo é um simples perito. Condições:

1. De 2013.01.07 a 2013.02.11. Muito provavelmente não afectado.

2. testes em modo visual.

3. Durante a primeira corrida, abrandar a velocidade ao mínimo:

4. Na corrida seguinte após a inicialização, prima F12 (gerar um tick).

Outra condição muito importante é que o terminal deve estar a funcionar em modo offline. Para uma experiência limpa, tente desligar o computador da rede (desligar todos os adaptadores de rede).

Observar.

1. Afixação tardia dos valores de spread no gráfico.

O ChartRedraw funciona incorrectamente ou fiz algo de errado? Se mover a carta com o rato (movê-la horizontalmente (tempo), ela é redesenhada correctamente.

Arquivos anexados:
1.mq5  4 kb
 
voix_kas:
kPVT
Obrigado pela dica.
Por favor, partilhe a sua experiência. Especificamente:
1. Mecanismo para gerar nomes únicos. Enumeração directa de nomes existentes por auto-incrementação?
2. Mecanismo de verificação da autenticidade do objecto. Isto é, não só verificar se existe um objecto com este nome, mas todos os seus parâmetros, por exemplo, tamanhos, tipos, texto, etc. Com a poupança de recursos em mente. É bastante trabalhoso realizar um número colossal de verificações para cada propriedade de cada objecto em cada carraça. Claro, se houvesse ou bloqueio de objecto a partir de quaisquer alterações do exterior (excepto conselheiro-criador), ou cálculo de hash de objecto para verificar a autenticidade do objecto RAPIDAMENTE (num "se").

Sem pretender ser verdadeiro ou óptimo.

1.pode usar a biblioteca padrão que usa número aleatório + nome para o nome do objecto, por exemplo18467RadioGroupItem0Button, 06334ClientBack. E não precisa de apagar objectos por si próprio.

Ainda não fiz amizade com o bíblio padrão e estou a fazê-lo desta forma, não tive quaisquer problemas.

int nOBJ=0;//счетчик однотипных объектов
int OnInit()
  {
   //уникальное имя на основе текущего времени в момент инициализации (в 36 системе для краткости, пример: MI7E9G)
   basedName=ULongTo36Base(TimeLocal());
   leftName="LeftBorder "+basedName;//имя для единичного объекта
   ObjectCreate(0,leftName,OBJ_VLINE,0,time,0);
   for(nOBJ=1;nOBJ<=100;nOBJ++)//создание 100 однотипных объектов
    ObjectCreate(0,(string)nOBJ+basedName,OBJ_TREND,0,time,price);
   return(0);
  }
void OnDeinit(const int reason)
  {
   for(int del=1; del<=nOBJ; del++)
      ObjectDelete(0,(string)del+basedName);
   ObjectDelete(0,leftName);
   return;
  }

Aqui a discrição será de 1 segundo. Se adicionar vários indicadores idênticos do modelo, as colisões ocorrerão. Neste caso, poderá adicionar parâmetros indicadores a basedName, ou talvez milissegundos a TimeLocal(), número aleatório ou outra coisa qualquer. Em geral, existem variantes.

2. autenticidade do objecto - o seu nome único. Dois objectos, mesmo de tipos diferentes com o mesmo nome, não podem estar na mesma janela do gráfico. Porque deve verificar todas as propriedades do objecto? Explicar.

Deseja verificar a modificação manual das propriedades do objecto? Há o eventoCHARTEVENT_OBJECT_OBJECT_CHANGE.

Para controlar a eliminação acidental, quando se acede a um objecto, é necessário verificar a sua existência e restaurá-lo se necessário (a propósito, há um evento de eliminação de objecto - eu não o utilizo).


Se ainda quiser utilizar Comentar para produzir informação formatada, pode, por exemplo, especificar o comprimento requerido da cadeia e, conhecendo este comprimento, inserir a descrição e o valor do parâmetro (definindo os seus comprimentos) nos locais certos.

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
Основы языка / Функции / Функции обработки событий - Документация по MQL5
 
voix_kas:
kPVT
Obrigado pela dica.
Por favor, partilhe as suas experiências. Especificamente:
1. Mecanismo para gerar nomes únicos. Enumeração directa de nomes existentes por auto-incrementação?
2. Mecanismo de verificação da autenticidade do objecto. Isto é, não só verificar se existe um objecto com tal nome, mas todos os seus parâmetros, por exemplo, tamanhos, tipos, texto, etc. Com a poupança de recursos em mente. É bastante trabalhoso realizar um número colossal de verificações para cada propriedade de cada objecto em cada carraça. Naturalmente, se houvesse ou bloqueio de objecto a partir de quaisquer alterações do exterior (excepto o criador EA), ou cálculo de hash de objecto para verificar a autenticidade do objecto RAPIDAMENTE (num "se").
Talvez isto ajude: olhar para o mercado através de aulas prontas
 

kPVT

Obrigado pela dica. Vou tentar usar CHARTEVENT_OBJECT_CHANGE para o controlar.

Dima_S

Obrigado. Mas não vejo a necessidade de utilizar classes padrão.

Muito amavelmente, por favor teste a função ChartRedraw usando um simples Expert Advisor pronto a usar no meu posto anterior. Infelizmente, por alguma razão, dá uma carraça tarde. Isto é, no exemplo mostra que o valor de spread é mostrado para o tick anterior, enquanto que o processamento e a saída está no tick actual.

 
voix_kas:

kPVT

Obrigado pela dica. Vou tentar usar CHARTEVENT_OBJECT_CHANGE para o controlar.

Dima_S

Obrigado. Mas não vejo a necessidade de utilizar classes padrão.

Muito amavelmente, por favor teste a função ChartRedraw usando um simples Expert Advisor pronto a usar no meu posto anterior. Infelizmente, por alguma razão, dá uma carraça tarde. Isto é, no exemplo mostra que o valor de spread é mostrado para o tick anterior, enquanto que o processamento e a saída está no tick actual.

De nada. Se tivesse lido o artigo, teria encontrado as respostas para as duas perguntas))
 

Os grandes programas não podem ser descarregados e instalados a partir do Mercado. Preste muita atenção. A razão é desconhecida.

Pode haver algumas restrições. Não há informação oficial sobre eles.

 

Pode dar-me uma dica?

1. um indicador chamado a partir de recursos não pode receber parâmetros de entrada?
2. Se não, existe a possibilidade e como contornar isto (com muletas)?
 

Pode. É o mesmo que o iCustom().

handle=iCustom(_Symbol,_Period,"::Indicators\\Examples\\ZigZag.EX5",12,5,3);
 
Karlson:

Pode. É o mesmo que o iCustom().

Exactamente, pode. Cometeu um erro no código.

Obrigado.

Razão: