O indicador pode ser movido para a janela do gráfico sem um quadro ou o terminal ficará mais lento?
E também é possível fazer com que as linhas [marrom, azul, vermelha] possam ser alternadas nas configurações?
O indicador pode ser movido para a janela do gráfico sem um quadro ou isso tornará o terminal mais lento?
Esse é um objeto gráfico interativo, cujas propriedades são alteradas (por exemplo, coordenadas) por meio de CTRL+B (ele ficará visível como gráfico se você pressionar "All"). Portanto, você pode fazer com ele tudo o que pode fazer com objetos gráficos padrão. Em particular, coloque-o em qualquer janela (subjanela).
A fonte EA curta na descrição faz exatamente isso.

Nessa variante, você pode alternar o gráfico para outros símbolos, e o objeto continuará a mostrar o símbolo no qual foi originalmente criado.
E também é possível tornar as linhas [marrom, azul, vermelha] alternáveis nas configurações?
Essas linhas contêm determinadas informações
- marrom (por padrão) - a linha vertical mostra a posição de tempo no local do cursor, a linha horizontal mostra o preço.
- azul (padrão) - mostra o preço de oferta na posição do cursor. Ao mesmo tempo, a hora desse tique e o spread são exibidos à direita (ao longo da escala vertical).
- vermelho (padrão) - o mesmo para o preço de venda.
Esse é um objeto gráfico interativo, cujas propriedades são alteradas (por exemplo, coordenadas) por meio de CTRL+B (ficará visível como gráfico se você pressionar "All"). Portanto, você pode fazer com ele todas as mesmas coisas que com os objetos gráficos padrão.
Lá também é possível desativar a escala vertical e colocar o objeto no plano de fundo do gráfico.
Assim, você pode obter, por exemplo, um gráfico de ticks em segundo plano (histórico/tempo real) de escala variável.

Em geral, a forma de usar esse objeto é uma questão de imaginação.
Por padrão, a opção "Exibir níveis de negociação (níveis de posições abertas, Stop Loss, Take Profit e ordens pendentes) no gráfico" está desativada em um gráfico de ticks.
Mas ativar esse modo às vezes é útil
Na tela, você pode ver claramente que uma posição de VENDA foi aberta e o preço de compra (penúltima barra) caiu abaixo do nível de TP. No entanto, fica claro por que o TP não foi acionado - o preço de venda (linha vermelha quebrada) não atingiu o TP.
A exibição pode ser ativada com a edição do código-fonte
nessa linha, você precisa substituir false por true. Ou, se quiser que o gráfico de ticks tenha as mesmas configurações do gráfico principal, comente essa linha.
.
Por padrão, a opção "Exibir níveis de negociação (níveis de posições abertas, Stop Loss, Take Profit e ordens pendentes) no gráfico" está desativada em um gráfico de ticks.
Mas ativar esse modo às vezes é útil
Na tela, você pode ver claramente que uma posição de VENDA foi aberta e o preço de compra (penúltima barra) caiu abaixo do nível de TP. No entanto, fica claro por que o TP não foi acionado - o preço de venda (linha vermelha quebrada) não atingiu o TP.
A exibição pode ser ativada com a edição do código-fonte
nessa linha, você precisa substituir false por true. Ou, se você quiser que o gráfico de ticks tenha as mesmas configurações do gráfico principal, comente essa linha.
.
O primeiro indicador de ticks "fxsaber" é mais funcional e conveniente. Você pode sobrepor indicadores padrão a ele na janela do gráfico. Você pode aplicar "escala por pips por barra" ao gráfico. Tudo está claro. No mesmo indicador "zoomprice", tudo salta e desliza, enquanto você o ajusta para si mesmo, cem anos se passarão. A mira e as linhas azuis e vermelhas são supérfluas, apenas o distraem.
A única vantagem do "zoomprice" é que ele parece mais rápido do que o "fxsaber".
O primeiro indicador de tick "fxsaber" é mais funcional e conveniente. Os indicadores padrão podem ser sobrepostos a ele na janela do gráfico. Foi possível aplicar "escala por pips por barra" ao gráfico. Tudo está claro.
Como não sou um bom usuário de terminal, não sei do que os usuários avançados precisam. Seria útil saber como você o utiliza. Por exemplo, o modo "escala por pontos por barra" nunca foi ativado e não sei como ele pode ser útil. Em geral, compartilhe sua experiência.
No mesmo indicador "zoomprice", tudo salta e desliza, enquanto você o ajusta por si mesmo, cem anos se passarão.
Nada deve saltar e deslizar. Entenda a interface de interação. Ela é muito intuitiva, como me pareceu. Eu ajusto a escala com o mouse. Se alguém tiver problemas com ela, por favor, fale. Até o momento, tenho apenas uma insatisfação.
Para entender como definir as mesmas configurações para um objeto, aqui está um exemplo de EA.
input int exY = 50; // Coordenada Y
input int exWidth = 450; // Largura
input int exHeight = 300; // Altura
input bool exShowGrid = true; // Grade
input color exColorBackGround = clrSnow; // Cor de fundo
input bool exTradeLevels = true; // Pedidos
input bool exPriceScale = true; // Escala de preços
#include <fxsaber\ChartObjects\ChartObject_ZoomPrice.mqh>
// CHARTOBJECT_ZOOMPRICE ChartObject;
CHARTOBJECT* ChartObject;
void OnInit( void )
{
ChartObject = new CHARTOBJECT_ZOOMPRICE; // Criar o objeto ZoomPrice
// É possível definir e ler quaisquer propriedades de objetos a partir de enumerações (F1 - ajuda)
// ENUM_OBJECT_PROPERTY_INTEGER, ENUM_OBJECT_PROPERTY_DOUBLE, ENUM_OBJECT_PROPERTY_DOUBLE
// ENUM_CHART_PROPERTY_INTEGER, ENUM_CHART_PROPERTY_DOUBLE, ENUM_CHART_PROPERTY_STRING
// Gravar propriedades por meio de ChartObject.SetProperty
ChartObject.SetProperty(OBJPROP_XDISTANCE, exX); // Distância em pixels ao longo do eixo X a partir do ângulo de encaixe
ChartObject.SetProperty(OBJPROP_YDISTANCE, exY); // Distância em pixels ao longo do eixo Y a partir do ângulo de encaixe
ChartObject.SetProperty(OBJPROP_XSIZE, exWidth); // Largura do objeto ao longo do eixo X em pixels.
ChartObject.SetProperty(OBJPROP_YSIZE, exHeight); // Altura do objeto ao longo do eixo Y em pixels.
ChartObject.SetProperty(CHART_SHOW_GRID, exShowGrid); // Exibir a grade no gráfico
ChartObject.SetProperty(CHART_COLOR_BACKGROUND, exColorBackGround); // A cor de fundo do gráfico
ChartObject.SetProperty(CHART_SHOW_TRADE_LEVELS, exTradeLevels); // Exibir níveis de negociação (níveis de posições abertas, Stop Loss, Take Profit e ordens pendentes) no gráfico
ChartObject.SetProperty(OBJPROP_PRICE_SCALE, exPriceScale); // Sinal de exibição da escala de preços para o objeto "Chart".
#define TOSTRING(A) #A + " = " + (string)(A)
// Ler propriedades via ChartObject.GetProperty
Print(TOSTRING(ChartObject.GetProperty(OBJPROP_XDISTANCE)));
Print(TOSTRING(ChartObject.GetProperty(CHART_COMMENT)));
}
void OnDeinit( const int Reason )
{
delete ChartObject; // Excluir o objeto gráfico
}
void OnChartEvent( const int id, const long& lparam, const double& dparam, const string& sparam )
{
EVENTBASE::MyEvent(id, lparam, dparam, sparam); // Necessidade de interatividade com o objeto
}
void OnTimer( void )
{
EVENTBASE::MyEventTimer(); // Necessidade de interatividade com o objeto
}
void OnTick( void )
{
EVENTBASE::MyEventTick(); // Necessidade de interatividade com o objeto
}
A mira e as linhas azuis e vermelhas são supérfluas, apenas distraem.
Para desativar as linhas e o texto, você precisa encontrar uma função nos códigos-fonte
{
if (this.GetProperty(CHART_WIDTH_IN_PIXELS) == 0)
return;
const ulong TimeCross = (ulong)(this.Ticks.GetTime() + this.Ticks.GetInterval() *
((double)(X - (int)CHARTOBJECT::GetProperty(OBJPROP_XDISTANCE) - OBJ_CHART_BORDER_SIZE) /
this.GetProperty(CHART_WIDTH_IN_PIXELS) - 0.5));
this.TextCross.SetProperty(OBJPROP_TIME, (int)this.VLineCross.GetProperty(OBJPROP_TIME));
this.TextCross.SetProperty(OBJPROP_PRICE, this.GetProperty(CHART_PRICE_MIN));
this.TextCross = CHARTOBJECT::TimeToString(TimeCross);
this.SetTextPrices(TimeCross, Y);
return;
}
e comentar seu corpo.
{
/* if (this.GetProperty(CHART_WIDTH_IN_PIXELS) == 0)
return;
const ulong TimeCross = (ulong)(this.Ticks.GetTime() + this.Ticks.GetInterval() *
((double)(X - (int)CHARTOBJECT::GetProperty(OBJPROP_XDISTANCE) - OBJ_CHART_BORDER_SIZE) /
this.GetProperty(CHART_WIDTH_IN_PIXELS) - 0.5)));
this.TextCross.SetProperty(OBJPROP_TIME, (int)this.VLineCross.GetProperty(OBJPROP_TIME));
this.TextCross.SetProperty(OBJPROP_PRICE, this.GetProperty(CHART_PRICE_MIN));
this.TextCross = CHARTOBJECT::TimeToString(TimeCross);
this.SetTextPrices(TimeCross, Y);
*/.
return;
}
Para desativar a mira, você precisa encontrar as linhas
this.VLineCross = time;
e comentá-las
// this.VLineCross = time;
A única vantagem do "zoomprice" é que ele parece ser mais rápido do que o "fxsaber".
O ZoomPrice pode ser um ótimo complemento para o Ticks - ele permite que você analise detalhadamente o que o Ticks está mostrando. Depois de escrever o ZoomPrice, eu mesmo parei de usar o Ticks.
- votos: 19
- 2016.10.14
- //www.mql5.com/ru/users/fxsaber">
- www.mql5.com
Aqui está um exemplo
Preciso sobrepor outro indicador de grade sobre o indicador ZoomPrice para determinar visualmente quantos pips o preço percorreu. Entre as linhas azuis vizinhas, 40 pips; entre as linhas laranja vizinhas, 200 pips. Não preciso de nenhuma mira, apenas de níveis de grade vinculados à escala. Uma olhada é suficiente para avaliar a situação. E as linhas laranjas na grade são números redondos do gráfico. Se a linha estiver no valor do gráfico de 1,10900, não importa como mudemos a escala, a linha não mudará seu valor. 
Tentei colocar um indicador de grade em cima do ZoomPrice e vincular as linhas à escala, mas nada funcionou. Tenho pouco conhecimento de código.
Comentei todas as coisas desnecessárias, agora só falta criar a grade e ela ficará perfeita.
A escala por pontos por barra é definida na guia: propriedades>>geral
Tentei sobrepor um indicador de grade em cima do ZoomPrice e vincular as linhas à escala, mas nada funcionou. Não sou muito bom em código.
Comentei todas as coisas desnecessárias, agora só preciso criar uma grade e tudo ficará perfeito.
Você pode criar uma grade horizontal pendurando um indicador correspondente nesse objeto gráfico. Mas isso, digamos, não é trivial para uma pessoa que não entende de código.
A escala por pontos por barra é definida na guia: propriedades>>geral
O ZoomPrice é o único indicador nos 16 anos de história do MQ que permite que você faça QUALQUER nível de escala. Ou seja, não há seis escalas claramente definidas, mas o que você quiser. Isso exigiu algumas soluções fora do padrão (esse é o motivo pelo qual o objeto não tem uma escala horizontal). E é por causa dessas soluções não padronizadas que o ZoomPrice tem algumas limitações que não permitem que certos tipos de indicadores sejam sobrepostos no objeto (isso não se aplica à grade horizontal). E a definição de um tipo diferente de zoom é algo em que preciso pensar. Ainda não entendi o que é "escala por pontos por barra", mesmo depois de ler a Ajuda.
Na verdade, sem entender, você tocou no tópico do comportamento correto dos indicadores. Devido à possível presença de objetos OBJ_CHART, você pode lançar um indicador não no gráfico em si, mas no objeto OBJ_CHART. E, nesse caso, é lógico executar o indicador exatamente no OBJ_CHART, e não no gráfico principal.
Forneça um link para um indicador com uma grade horizontal. Vamos ver o que você pode fazer.
Envie-me um link para um indicador com uma grade horizontal. Vamos ver o que podemos fazer.
- votos: 17
- 2016.02.29
- Nikolay Kositsin
- www.mql5.com
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso



Indicador de ticks ZoomPrice:
Mostra o gráfico de preço de qualquer nível de zoom.
Autor: fxsaber