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

 
Artyom Trishkin:

Eu mostrei acima o que fazer. Por que criar tantos problemas quando existe um método recomendado pelos desenvolvedores?

Era uma questão de selecionar em que prazos exibir o objeto e em quais não?

Digamos que há um painel de negociação no gráfico. Depois construo objetos manualmente (níveis comerciais, linhas verticais, retângulos).

Tudo que eu construo manualmente será aplicado ao painel comercial. Todos os objetos estão no mesmo cronograma.

E como o "método recomendado pelos desenvolvedores" ajuda neste caso?

 
Aliaksei Karalkou:
Olá.

Quero transferir o indicador ATP para a tabela de preços. Mas eu não sei como fazer isso. Quero que mostre o movimento máximo de volatilidade a partir da linha média do mesmo período. Se alguém tem o código, obrigado por compartilhá-lo.

https://www.mql5.com/ru/code/23304

Multi_ATR_Bands
Multi_ATR_Bands
  • www.mql5.com
Индикатор Three ATR Bands with multiple selection
 
Artyom Trishkin:

Propriedade OBJPROP_TIMEFRAMES:

OBJ_NO_PERIODS - não visível em todos os períodos,

OBJ_ALL_PERIODS - visível em todos os períodos

Obrigado.

O método realmente funcionou e é muito compacto.

O objeto agora permanece visualmente acima de todos os outros.

 
Maksym Mudrakov:

Era uma questão de selecionar em que prazos exibir o objeto e em quais não?

Digamos que há um painel de negociação no gráfico. Depois construo objetos manualmente (níveis comerciais, linhas verticais, retângulos).

Tudo que eu construo manualmente será aplicado ao painel comercial. Todos os objetos estão no mesmo cronograma.

E como o "método recomendado pelos desenvolvedores" ajuda neste caso?

Tomei nota de sua sugestão, mas tive uma tremulação ao apagar e redesenhar um objeto.

O método sugeridopor Artyom Trishkin realmente funciona!

Agora, não há nenhum redesenho e cintilação do objeto e ele permanece visualmente acima de tudo.

A propósito, no meu caso, era também um painel comercial que era bloqueado por flechas de negócios abertos e fechados.

Como resolvi o problema:

// Глобальное объявление
int last_tick_objects = 0;                // количество объектов на прошлом тике
// имена графических объектов:
string tp_rctngl = "TP Rectangle";
string sl_rctngl = "SL Rectangle";
string vol_rctngl = "Volume Rectangle";

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   long cid = ChartID();
   if(ObjectsTotal() != last_tick_objects)  // количество объектов поменялось
     {
      last_tick_objects = ObjectsTotal();   // запоминаем новое количество объектов
      // выводим на передний план объекты: tp_rctngl, sl_rctngl, vol_rctngl
      if(ObjectFind(cid, tp_rctngl) > -1) // объект существует
        {
         ObjectSetInteger(cid, tp_rctngl, OBJPROP_TIMEFRAMES, OBJ_NO_PERIODS);  // делаем невидимым на всех таймах
         ObjectSetInteger(cid, tp_rctngl, OBJPROP_TIMEFRAMES, OBJ_ALL_PERIODS); // делаем видимым на всех таймах
        }
      //---
      if(ObjectFind(cid, sl_rctngl) > -1) // объект существует
        {
         ObjectSetInteger(cid, sl_rctngl, OBJPROP_TIMEFRAMES, OBJ_NO_PERIODS);  // делаем невидимым на всех таймах
         ObjectSetInteger(cid, sl_rctngl, OBJPROP_TIMEFRAMES, OBJ_ALL_PERIODS); // делаем видимым на всех таймах
        }
      //---
      if(ObjectFind(cid, vol_rctngl) > -1) // объект существует
        {
         ObjectSetInteger(cid, vol_rctngl, OBJPROP_TIMEFRAMES, OBJ_NO_PERIODS); // делаем невидимым на всех таймах
         ObjectSetInteger(cid, vol_rctngl, OBJPROP_TIMEFRAMES, OBJ_ALL_PERIODS);// делаем видимым на всех таймах
        }
      ChartRedraw(cid);// перерисовка графика для применения изменений
     }
  }
//+------------------------------------------------------------------+
 

Estou escrevendo uma EA que de tempos em tempos precisa realizar vários ciclos longos de diferentes recálculos (por exemplo, a cada 12, 24, 48 horas). Cada novo cálculo leva de 1,5 a 2 horas em um núcleo (ou seja, em uma única linha) - e, claro, isso pára o processamento de novos carrapatos e o comércio com esta EA

... Tais cálculos podem ser delegados a outra EA em outro tópico e os dados finais podem ser transferidos entre as EA usandoa função EventChartCustom e OnChartEvent event handler


Mas preciso ser capaz de publicar a EA no mercado - portanto, delegar recálculos e recálculos no mesmo fio não é adequado. Existe um análogo da biblioteca de fios da C++ ou alguma outra versão para implementar uma EA tão específica na MQL5? (Introduzi a palavra "linha" com filtro "documentação" no motor de busca no site e não há nada).

 
Oleg Remizov:

Tomei nota de sua sugestão, mas tive uma tremulação ao apagar e redesenhar um objeto.

O método sugeridopor Artyom Trishkin realmente funciona!

Agora, não há nenhum redesenho e cintilação do objeto e ele permanece visualmente acima de tudo.

A propósito, no meu caso, era também um painel comercial que era bloqueado por flechas de negócios abertos e fechados.

Como resolvi o problema:

A questão é que a cintilação se deve ao fato de que a eliminação e a renderização acontecem com muita freqüência, basta pegar a aparência de novos objetos. Se o método funcionar, é claro que eu o aceitarei também, mas como a documentação não menciona uma propriedade tão útil, eu nunca prestei atenção a ele.

Embora a questão permaneça se você usar seu próprio painel comercial em conjunto com um indicador de terceiros que também constrói objetos.

 
Maksym Mudrakov:

A questão era escolher em quais prazos exibir o objeto e em quais não?

Digamos que há um painel de negociação no gráfico. Depois construo objetos manualmente (níveis comerciais, linhas verticais, retângulos).

Tudo que eu construo manualmente será aplicado ao painel comercial. Todos os objetos estão no mesmo período de tempo.

E como o "método recomendado pelos desenvolvedores" ajuda neste caso?

Fórum sobre comércio, sistemas automatizados de comércio e testes estratégicos

Qualquer pergunta de novatos sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos

Oleg Remizov, 2020.04.26 14:44

Obrigado.

O método provou ser realmente eficaz e muito compacto.

Agora o objeto é visualmente mais alto do que todos os outros.


 
Maksym Mudrakov:

A questão é que a cintilação se deve ao fato de que a eliminação e a renderização acontecem com muita freqüência, basta pegar a aparência de novos objetos. Se o método funcionar, é claro que vou adotá-lo também, mas como a documentação não menciona um bem tão útil, nunca prestei atenção a ele.

Embora a questão permaneça se você usar seu próprio painel comercial em combinação com um indicador de terceiros que também constrói objetos.

O método recomendado por Slava era o único aceitável. Você pode pesquisar seus posts - está em seu perfil - publicações/todos os posts.

E, sim, como seu método de recriar todos os objetos ajuda na mesma situação?

 
Artyom Trishkin:

Slava recomendou o método como o único mais adequado. Você pode pesquisar seus posts - está em seu perfil - publicações/todos os posts.

E, sim, como seu método de recriar todos os objetos ajudaria na mesma situação?

Eu faria o seguinte, com um indicador de terceiros você precisa rastrear ObjectsTotal(), e se o maior índice do meu objeto de painel for menor que ObjectsTotal()-1, então recriaria o painel. Preciso tentar primeiro seu método em todos os tipos de situações, mas até agora não vejo mais liberdade no uso da Visibilidade dos Objetos.
 
Artyom Trishkin:

Eu não posso construir Meta Trader 5