Indicador, Precisa de aconselhamento sobre o auto-controle da DISTÂNCIA entre textos (MT-4)

 

Olá Queridos programadores!
Por favor, dê seu conselho:

Fazemos um Expert Advisor na forma de um indicador! Sua tarefa - procurar um PATTERN no gráfico, e sobre as barras para escrever texto (multi-linhas (!), tais como

linha nº 1 "nome do sinal".
linha nº 2 "% probabilidade
linha #3 "ícone" (seta)

O problema é que se você definir uma distância FIXADA entre linhas = por exemplo 25 pips, tudo está bem em m5 ... mas em H1 = as linhas ficam muito afastadas (este é o problema com o texto fixo (!!!!)


Por favor me diga COMO você pode fazer "cálculo automático" da distância entre linhas quando você muda o TF ou a "altura" do gráfico quando você desloca o gráfico um pouco para a esquerda, ou por altura (????!!!)

..... só uma coisa vem à mente:

1) "obter" a altura atual do gráfico (preço mínimo e máximo) :


2) Preço Máximo - Preço Mínimo = "altura do gráfico em pips" e sempre o tomamos como 100%.

3) ao invés de "distância fixa entre as linhas (25 pips) - especificar a distância em Porcentagem (por exemplo, 2% da altura do gráfico a partir do ponto 2))


..... falou com um programador - ele diz == NÃO MOVER OBJETIVOS ... bem, você não pode ....... após inverter o gráfico == reposicionar o texto de várias linhas para que ele não se sobreponha == você tem que apagar todo o texto após inverter o gráfico == apagar todo o texto, e reescrevê-lo novamente, levando em conta a nova elevação do gráfico (ponto 2) (!)


..... então eu continuo ponderando == OK, e se = fizer o desenho SOMENTE no GUIA SCREEN ????!

Diz = ok, NOVOS sinais serão escritos Correto, mas os que restam = = = OU novamente cabem um em cima do outro, ou vice-versa = esticam ainda mais (para cima e para baixo um do outro) porque "você não pode mover os objetos já desenhados, mas só precisa apagá-los, e redesenhar de novo (!)


Pergunta para você = Alguém já encontrou um ??????? como resolver este problema ??? )))
(para que em qualquer escala e altura do gráfico = texto com várias linhas retorne ao espaçamento normal das linhas (se medido visualmente com uma régua == 3mm por olho ) ... ou seja, o espaçamento entre linhas deve ser DYNAMIC) ????? )))))))))

Eu só não quero fazer a inscrição inteira em UMA linha, e em um ângulo de 45° (!) , porque é visualmente mais conveniente fazer o texto HORIZONTAL, e em 2-3 linhas :)

Favor aconselhar (compartilhe suas experiências)


Obrigado )).

 
Vitaliy Kostrubko:


Estude este código curto e ele poderá ajudá-lo. Tudo é implementado em Tela.

O bom da Tela é que para MT4 e MT5 o código será quase o mesmo.

Arquivos anexados:
 
Vitaliy Kostrubko:

Olá, caros programadores!
Por favor, dê seu melhor conselho:

...


Obrigado ))

Desenho em tela:

Документация по MQL5: Стандартная библиотека / Пользовательская графика / CCanvas
Документация по MQL5: Стандартная библиотека / Пользовательская графика / CCanvas
  • www.mql5.com
Стандартная библиотека / Пользовательская графика / CCanvas - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Oops... Nikolai me venceu...
 

Você está pensando corretamente.

//подсчитывает количество пунктов цены в одном пикселе
double GetPointsInPixel(long eChartId, int eWindow)
   {
   double eMin=EMPTY_VALUE;
   ChartGetDouble(eChartId,CHART_PRICE_MIN,eWindow,eMin);
   if(eMin==EMPTY_VALUE) return(0);
   double eMax=EMPTY_VALUE;
   ChartGetDouble(eChartId,CHART_PRICE_MAX,eWindow,eMax);
   if(eMax==EMPTY_VALUE) return(0);
   long ePixels=-1;
   ChartGetInteger(eChartId,CHART_HEIGHT_IN_PIXELS,eWindow,ePixels);
   if(ePixels<=0) return(0);
   return(double(eMax-eMin)/ePixels);
   }

eIndente duplo=GetPointsInPixel(eChartId,eWindow);

Em seguida, acrescente ou subtraia este valor ao preço requerido, quando os eventos mudarem:

- mudança de cronograma,

-Increase/decrease de um gráfico,

-selheiras da escala de preços.

 
Nikolai Semko:

Estude este código curto e ele poderá ajudá-lo. Tudo é implementado em Tela.

A vantagem em Tela é que para MT4 e MT5 o código será quase o mesmo.

OK, Obrigado )

 
Artyom Trishkin:
Oops... Nikolai me venceu...

... )))))) O principal é que os pensamentos são os mesmos ))))
Obrigado )))))

 
Aleksei Stepanenko:

Você está pensando corretamente.

eIndente duplo=GetPointsInPixel(eChartId,eWindow);

Em seguida, acrescente ou subtraia este valor ao preço requerido, quando os eventos mudarem:

- mudança de cronograma,

-Increase/decrease de um gráfico,

-trabalho/trabalho da escala de preços.

Obrigado ))))))))

 

Vitaliy Kostrubko:

Aleksei Stepanenko:

Você está pensando corretamente.

eIndente duplo=GetPointsInPixel(eChartId,eWindow);

Em seguida, acrescente ou subtraia este valor ao preço requerido, quando os eventos mudarem:

- mudança de cronograma,

-Increase/decrease de um gráfico,

-trabalho/trabalho da escala de preços.

Obrigado ))))))))

E diga a esse consultor infeliz que ele precisa começar a aprender a língua, não os exemplos do ****coders.

 
Alexey Viktorov:

E diga a esse consultor infeliz que ele precisa começar a aprender a língua, não os exemplos do ****coders.

Cópia )))))
... O tempo mostra que mesmo 10 anos de experiência em programação com uma variedade de EAs (diferentes níveis de complexidade) == não é suficiente conhecer todo o campo da codificação)
porque durante estes 10 anos você pode se tornar um super-profissional em 2/3 da linguagem de programação ... e não sei de todo 1/3 dela))
portanto não há necessidade de se ofender)) mas cabe a você dominar esta parte de 1/3 == é um assunto individual))).

.... ele só está mais interessado em "ALGORITMAS Sagazes que trazem LUCROS... e escrever "cartoons" não é seu interesse ...

Mas seu exemplo eu vou lhe mostrar com certeza)).
Obrigado ))))

 
Vitaliy Kostrubko:

Pegue-o )))))
... O tempo mostra que mesmo 10 anos de experiência de programação com os mais variados EAs (diferentes níveis de complexidade) == não é suficiente conhecer a área de codificação TOTAL)
porque durante estes 10 anos você pode se tornar um super-profissional em 2/3 da linguagem de programação ... e não sei de todo 1/3 dela))
portanto não há necessidade de se ofender)) mas cabe a você dominar esta parte de 1/3 == é um assunto individual))).

.... ele só está mais interessado em "ALGORITMAS Sagazes que trazem LUCROS... e "desenhos animados" não são seu interesse ...

Mas seu exemplo eu vou lhe mostrar com certeza )).
Obrigado ))))

Você não precisa se referir a mim. Essa opção, embora eu a tenha utilizado, não a exprimi. Eu só estava apoiando meu homônimo na opinião dele.

E se um "programador" fala sobre a impossibilidade de mover um objeto gráfico, ele não é um programador e nem mesmo uma paródia de um programador, mas apenas ****coder.
Razão: