Erros, bugs, perguntas - página 973

 
voix_kas:

...

O que é que posso dizer? One Bitmap funciona (!) uma ordem de magnitude mais lenta do que 26 etiquetas regulares. Tentei excluir do OnTick() a operação de cópia de padrões em tela de trabalho (array uint 250*410), ou seja, a operação numa tela. O ganho é sentido apenas em tempo real. No testador é o mesmo, com uma degradação absoluta da produtividade. O modoCOLOR_FORMAT_ARGB_NORMALIZE foi utilizado, uma vez que os outros dão um aspecto menos estético. Para me antecipar, devo dizer que trabalhar numa tela é difícil porque se tem de seguir as sobreposições de sobreposições anteriores (áreas claras).

...

Tem objectos como OBJ_BITMAP_LABEL expostos em modo de visualização no testador?
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов - Документация по MQL5
 
tol64:

Obrigado, eu sei que sim. O vdv2001 tem algum tipo de problema com ele:

//---

Queria ver como ele o faz para descobrir que tem um insecto.


Depois outra citação da ajuda

GRÁFICO_MOUSE_SCROLL

Percorrer o gráfico com o botão esquerdo do rato na horizontal. A rolagem vertical também está disponível se alguma das três propriedades for definida como verdadeira: CHART_SCALEFIX, CHART_SCALEFIX_11 ou CHART_SCALE_PT_PER_BAR

bool

 
Ah, estou a ver o que é. ))
vdv2001:

Sim, o objecto é seleccionado, mas não pode ser movido com o rato (como no terminal 4).

Ou agora movendo todos os objectos criados pelo Expert Advisor devem ser tratados por eventos.

Em MT5, tenho de colocar precisamente o cursor do rato no ponto de ancoragem de um objecto seleccionado. Em MT4 é feito automaticamente. Eu pessoalmente prefiro mover objectos sem selecção através de eventos. Acima de Rosh mostrou a propriedade para activar/desactivar a rolagem da carta, para não interferir com objectos em movimento.
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Свойства объектов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Свойства объектов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Свойства объектов - Документация по MQL5
 
tol64:
Ah, estou a ver o que é. )) Em MT5, tenho de posicionar o cursor exactamente sobre o ponto de correspondência, quando um objecto é seleccionado. Em MT4 é automático. Eu pessoalmente prefiro mover objectos sem selecção através de eventos. Acima de Rosh mostrou a propriedade para activar/desactivar a rolagem da carta, para não interferir com objectos em movimento.

Aumentou o gráfico ao máximo, colocou o rato sobre o ponto de ancoragem do objecto seleccionado "pressionou" o botão esquerdo do rato no chão, aplicou o máximo esforço e ...

O objecto permaneceu no lugar.

Para repetir este processo não é difícil, criar um objecto CChartObjectTrend, definir as suas propriedades e tentar movê-lo. Não tive sucesso.

CHART_MOUSE_SCROLL Tentei e o gráfico deixou de se mover, mas o objecto não se moveu.

P.S.

Embora, se se tratar do movimento de um objecto através de eventos, esteja correcto (conheço a antiga coordenada) . Fá-lo-ei através de eventos. Obrigado, a questão está encerrada.

 
vdv2001:

Aumentou o gráfico ao máximo, colocou o rato no ponto de ancoragem do objecto seleccionado "pressionou" o botão esquerdo do rato no chão, aplicou o máximo esforço e ...

O objecto permaneceu no lugar.

Não é difícil repetir este processo, criar um objecto CChartObjectTrend, definir as suas propriedades e tentar movê-lo. Não funcionou para mim.

...

É assim que funciona, se é que funciona alguma coisa:

void OnStart()
  {
   double low[];
   datetime time[];
   string name_object="Trend_Test";
//---
   ArraySetAsSeries(low,true);
   ArraySetAsSeries(time,true);
//---
   CopyLow(_Symbol,_Period,0,50,low);
   CopyTime(_Symbol,_Period,0,50,time);
//---
   if(ObjectCreate(0,name_object,OBJ_TREND,0,time[0],low[0],time[49],low[49]))
      ObjectSetInteger(0,name_object,OBJPROP_SELECTABLE,true);
  }
 

Alguém conseguiu repetir a proeza devoix_kas?

voix_kas:
...
Что могу сказать? Один Bitmap работает (!)на порядок медленнее, чем 26 обычных меток. Пробывал исключить из OnTick() операцию копирования шаблона в рабочую канву (массив uint 250*410), т.е. работа на одной канве. Выигрыш чувствуется только в реал-тайме. В тестере всё также - абсолютная просадка по производительности. Использовался режим COLOR_FORMAT_ARGB_NORMALIZE, т.к. остальные дают менее эстетический вид. Забегая вперед, надо сказать, что работать на одной канве сложно, так как придётся отслеживать наложение предыдущих надписей (очищать области).

...


Tem objectos do tipo OBJ_BITMAP_LABEL expostos em modo de visualização no seu testador?

//---

Ou isso é uma gralha? )))

 
Para cálculos de desempenho de bitmap, é aconselhável consultar o código. Talvez haja operações extra de redesenho.
 
tol64:

É assim que funciona, se é que funciona alguma coisa:

Certo, descobri porque não estava em movimento, defini a propriedade do objectoOBJPROP_TIMEFRAMES, após o que o objecto deixa de se mover.

Isto é, para a tabela de minutos, defino o bem

obj.Timeframes(OBJ_PERIOD_M1);

e o objecto deixa de se mover, parece ser uma falha.

Tudo começa a funcionar normalmente depois de mudar o período do gráfico como mudar para M2 e depois M1 e tudo fica bem.

 

voix_kas:

O que é que posso dizer? One Bitmap funciona (!) uma ordem de magnitude mais lenta do que 26 etiquetas regulares. Tentei excluir do OnTick() a operação de cópia de padrões em tela de trabalho (array uint 250*410), ou seja, a operação numa tela. O ganho é sentido apenas em tempo real. No testador é o mesmo, com uma degradação absoluta da produtividade. O modoCOLOR_FORMAT_ARGB_NORMALIZE foi utilizado, uma vez que os outros dão um aspecto menos estético. Olhando para o futuro, devo dizer que trabalhar numa tela é difícil porque é preciso seguir a sobreposição de inscrições anteriores (áreas limpas).


1. Como se mede a velocidade?

2. Pode anexar a fonte (numa mensagem privada ou num CD)?

 
alexvd:


1. Como é que se mede a velocidade?

2. Pode anexar o código fonte (numa mensagem privada ou num CD)?

Infelizmente, não guardei o código devido a falta de interesse. Emtermos gerais:

OnInit():

1. Cria um Bitmap no gráfico.

2. São criadas duas telas(uint 250*410): um modelo e um de trabalho. No modelo são aplicadas 13 etiquetas com nomes de parâmetros estatísticos (TextOut).

OnTick():

1. O modelo é copiado para a tela de trabalho.

2. As 13 etiquetas com os valores correspondentes dos parâmetros estatísticos são aplicadas (TextOut) à tela de trabalho.

3. Cria um recurso.

4. A tela de trabalho é actualizada.

Não tomei nenhum tempo específico, porque é óbvio que a velocidade diminuiu por uma ordem de grandeza. O que no testador, bem como em tempo real (quando o gráfico de rolagem é bastante óbvio congela / sacudidelas).

Tentei remover o ponto 1. da OnTick(). Em tempo real, torna-se tolerável, mas o testador mal se arrasta. Mais uma vez, isto não pode ser feito em tempo real, uma vez que não foi feita qualquer limpeza nas áreas previamente marcadas na tela de trabalho.

Mais uma vez, utilizei o modoCOLOR_FORMAT_ARGB_NORMALIZE, porque as etiquetas(TextOut) parecem inestéticassem canal alfa.