MetaTrader 4 Build 529 beta lançado com novo compilador - página 118

 
Candid:

As versões demonstrativas dos indicadores não começam. Ao clicar com o botão direito do mouse no teste não é oferecido, ao clicar duas vezes e depois pressionar o botão "Test" o testador é carregado, mas não responde de modo algum ao botão "Start". O diário do Strategy Tester permanece em branco. São lançados Conselheiros Especializados. Construir 555.


Em 558 há uma pequena mudança, se antes do procedimento descrito com duplo clique o registro sobre carga e o próximo sobre descarga de indicador apareceu no diário geral, agora o registro sobre descarga não aparece. Além disso, o indicador é agora mostrado no testador sem mencionar a pasta "mercado". Mas o registro do testador ainda está intacto.

Tanto quanto eu entendo, ninguém lida com o problema de testar versões demográficas de indicadores, parece ser um eco de busca de erros no teste de Expert Advisors. Talvez, será mais fácil encontrar o erro testando os indicadores?

 
stringo:

A função IndicatorCounted() era originalmente uma muleta. Quem tiver programado indicadores em três, entenderá o que quero dizer.

Em cinco, encontramos uma solução elegante com parâmetro pré-calculado e retorno do número de barras calculadas em função OnCalculate. E esta solução passou agora para os novos quatro



Há muito tempo atrás, mas ainda simpático :)
 
Candid:
Os indicadores de teste tornariam mais fácil encontrar uma falha?
Haverátestes indicadores, mas não neste momento. Mas vai.
 
A função de criação de objetos de Kim parece ser obsoleta devido à entrada de OBJPROP_ANCHOR. Vou verificar isso agora, mas ainda há alguns problemas com os gráficos. Tentarei publicar todos os detalhes com exemplos mais tarde.
 
stringo:

Repito. Estamos fazendo como fizemos em Cinco. Seja gentil o suficiente para aplicar mais um ponto de ancoragem - especifique onde no objeto se encontra o ponto de "ancoragem" do objeto. No seu caso, o canto superior direito do objeto.




Portanto, a função ObjectSet funciona de forma diferente na nova versão do terminal do que na versão antiga. E teremos que mudar um pouco todos os Expert Advisors que utilizam os resultados em um gráfico.

Na versão anterior, se selecionarmos ObjectSet(Name,OBJPROP_CORNER, 1);
, o ponto "âncora" se tornaria automaticamente no canto superior direito do objeto. Você planeja deixar isso, por compatibilidade?

 
alexvd:

Você já tentou lançar um EA em um gráfico (não no testador de estratégia)? Alguma mensagem no diário de bordo?


PS. O problema foi resolvido. Aguardaremos a próxima construção com uma correção.

1. Não, eu não tentei anexar um EA a um gráfico. Não vi nenhuma entrada no diário do Testador, exceto a saída padrão de suas configurações. Portanto, recebi a saída do init() da EA, mas não houve saída desde o início() da EA na revista.

2. prontamente. Obrigado, estamos ansiosos por isso.

 
Lion.Fx:

Acontece que a função ObjectSet funciona de forma diferente na nova versão do terminal do que na versão antiga. E teremos que mudar um pouco todos os Expert Advisors que utilizam a saída de informações no gráfico.

Na versão anterior, se fizermos: ObjectSet(Nome,OBJPROP_CORNER, 1);
O ponto de ancoragem foi automaticamente colocado no canto superior direito do objeto. Você não está planejando deixar isso, por compatibilidade?

Bem, sim, é desejável deixar a ancoragem padrão como em construções antigas.
 
Acabou de verificar a função de Kim, que tem servido fielmente por muitos anos :) (graças a ele novamente).
A adição do parâmetro OBJPROP_ANCHOR a ele permitiu colocar os objetos em seus lugares (sem deslocamento de coordenadas pouco claro).

Obrigado por acrescentar ANCHOR. É mais conveniente, embora você tenha que consertar muitas coisas com ele.

Aqui está a função:

//+------------------------------------------------------------------+
void SetLabel(string nm, string tx, string ft,color cl, int xd, int yd, int cr=0, int anch=0, int fs=9) {
  if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_LABEL, 0, 0,0);
  ObjectSetText(nm, tx, fs,ft);
  ObjectSet(nm, OBJPROP_COLOR    , cl);
  ObjectSet(nm, OBJPROP_XDISTANCE, xd);
  ObjectSet(nm, OBJPROP_YDISTANCE, yd);
  ObjectSet(nm, OBJPROP_ANCHOR, anch);   //<----------------
  ObjectSet(nm, OBJPROP_CORNER   , cr);
  ObjectSet(nm, OBJPROP_FONTSIZE , fs);
}
//+------------------------------------------------------------------+

e chamada:

  SetLabel("Hello",  "Hello" ,  FontType, FontColor,  20, 20, 3, 1, FontSize);

 
Lion.Fx:

Acontece que a função ObjectSet funciona de forma diferente na nova versão do terminal do que na versão antiga. E teremos que modificar um pouco todos os EAs que utilizam a saída de informações no gráfico.

Na versão anterior, se fizermos: ObjectSet(Nome,OBJPROP_CORNER, 1);
Então o ponto de "ancoragem" iria automaticamente para o canto superior direito do objeto. Você planeja deixar isso, por compatibilidade?

Faz sentido. Vamos ver o que podemos fazer.

PS. Fizeram exatamente isso.

 
Eu fiz um adendo à aplicação aberta no ServiceDesk #907205 e anexei um código para verificá-la.