Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 1317

 
Vladimir Karputov:

Ver os erros:

1. Especifique sempre explicitamente o símbolo do gráfico (sim, pode confiar na documentação, mas é SEMPRE melhor especificá-lo explicitamente)

2. String não faz sentido - como preff+"hhh" nunca será igual Symbol()


Adicionado: é melhor ter esta abordagem - sempre uma linha no gráfico, basta alterar o preço da linha quando se muda de gráfico.

Se aviso explícito: conversão implícita de 'string' para 'número'.

A essência do problema é que a linha não é exibida onde foi criada.

Se eu o crio na ferramenta ao preço de 255, porque é que é exibido a 255 quando carrego outra ferramenta com o preço actual de 310?

Por favor, diga-me como guardar a linha e exibi-la onde foi criada.
 
serg_V777:

Se emitir explicitamente um aviso: conversão implícita de 'string' para 'número'.

A essência do problema é que a linha não é exibida onde foi criada.

Se eu o crio na ferramenta ao preço de 255, porque é que é exibido a 255 quando carrego outra ferramenta com o preço actual de 310?

Por favor, diga-me como guardar a linha e exibi-la onde foi criada.

Mostrou-me o seu trecho de código - eu dei-lhe o seu trecho de código. Declare as variáveis e não terá erros.

Não consigo compreender a sua lógica com linhas. Tente descrever as suas acções em detalhe - e mais importante PORQUÊ precisa de o fazer.


No seu código não percebo porque é queo ChartSymbol

 
Vladimir Karputov:

Mostrou-me um pedaço de código - eu dei-lhe o seu pedaço. Declare as variáveis e não haverá erros.

Não compreendo a sua lógica com linhas. Tente descrever as suas acções em pormenor - e o mais importante PORQUÊ o deve fazer.


No vosso código, não percebo porque é que precisodo ChartSymbol.

void OnChartEvent(const int id,           // идентификатор события   
                  const long& lparam,     // параметр события типа long 
                  const double& dparam,   // параметр события типа double 
                  const string& sparam) { // параметр события типа string 
 
 
  preff=ChartSymbol( NULL);
  price=SymbolInfoDouble(Symbol(),SYMBOL_BIDLOW); 
 if(id == CHARTEVENT_OBJECT_CLICK && sparam == "dz_draw")// Нажатие кнопки   
  {   
   ObjectCreate(0,preff+"hhh",OBJ_HLINE,0,0,price) ;    
 ObjectSetInteger(0,preff+"hhh",OBJPROP_COLOR,clrBlack); 
   ObjectSetInteger(0,preff+"hhh",OBJPROP_STYLE,0); 
   ObjectSetInteger(0,preff+"hhh",OBJPROP_WIDTH,3); 
   ObjectSetInteger(0,preff+"hhh",OBJPROP_BACK,false); 
   ObjectSetInteger(0,preff+"hhh",OBJPROP_SELECTABLE,true); 
   ObjectSetInteger(0,preff+"hhh",OBJPROP_SELECTED,true); 
   ObjectSetInteger(0,"dz_draw"   ,OBJPROP_STATE,false);
   }
}

Assim, crio uma linha ao preço de 277 no gráfico da Gazp.

Quando a mudo na mesma janela na Sber, a linha criada na Gazp a 277 é exibida...

Se eu criar e a linha Sber a 310, obtenho duas linhas no gráfico - uma correcta (criada onde é necessária e quanto custa) e a segunda errada - não a partir deste gráfico ....

Ao mudar as ferramentas e ao criar linhas na gama de preços de 200- 400 e ao voltar ao gráfico da Gazp confundo pessoas e cavalos :),

Mas preciso da única (talvez um par de linhas horizontais), criada onde e quando preciso dela.

 
serg_V777:

Por isso crio uma linha a 277 no gráfico da Gazp.

Ao mudar na mesma janela na Sber a linha criada na Gazp em 277 é exibida...

Se eu criar e em Sber a linha em 310 obtenho duas linhas no gráfico - uma correcta (criada quando necessário e para o que é necessário) e outra incorrecta - não a partir deste gráfico....

Ao mudar as ferramentas e ao criar linhas na gama de preços de 200- 400 e ao voltar ao gráfico da Gazp confundo pessoas e cavalos :),

Mas é o único de que preciso (talvez algumas linhas horizontais), criado onde e quando preciso dele.

ChartSymbol

Leia a ajuda. Após a ajuda, não utilize este operador - não precisa dela.


É necessário o seguinte algoritmo: para cada caracter para poupar o preço. O preço é armazenado em variáveis globais do terminal (nome da variável global é nome do símbolo). A seguir, é necessário servir 'CHARTEVENT_OBJECT_OBJECT_CHANGE' e'CHARTEVENT_OBJECT_DRAG' - e voltar a guardar o preço para variáveis globais.

Há também muitas nuances a resolver: por exemplo - há uma variável global e nenhuma linha no gráfico...

 
User_mt5:
Muito obrigado. Ajudou-me muito.

E, claro, onde mais poderia esta característica estar senão no meio da lista de indicadores técnicos?)

Não o pode fazer sem ser sarcástico?

Parece não ter lido a documentação de todo... Mas você responde às dicas como se fosse o centro do universo. Apenas um umbigo analfabeto e indefeso.

 
Vitaly Muzichenko:

Obrigado!

Não há forma de o fazer com ferramentas padrão.

Não o pode fazer sem utilizar DLLs do sistema.

Publiquei uma biblioteca inteira para este fim )

Para os 5, separadamente.
CDir (MT4) - класс для получения оглавления каталога
CDir (MT4) - класс для получения оглавления каталога
  • www.mql5.com
Класс CDir предназначен для получения сведений о файлах и папках вне "песочницы" MQL4 подобно команде MS-DOS Dir. Задействован вызов системных DLL, поэтому следует разрешить их использование.
 
Vladimir Karputov:

Leia a ajuda. Após a ajuda, não utilize este operador - não precisa dela.


Precisa deste algoritmo: para cada símbolo é necessário poupar um preço. O preço é armazenado em variáveis globais do terminal (o nome da variável global é apenas o nome do símbolo). A seguir, é necessário servir 'CHARTEVENT_OBJECT_OBJECT_CHANGE' e'CHARTEVENT_OBJECT_DRAG' - e voltar a guardar o preço para variáveis globais.

Há ainda muitas nuances a resolver: por exemplo - há uma variável global e nenhuma linha no gráfico...

Obrigado pelo algoritmo.

Pergunta -- porque é que a linha é encontrada e descolorida neste código ?

if(preff+"hhh" == ChartSymbol(0) ){
ObjectSetInteger(0,preff+"hhh",OBJPROP_COLOR,clrNONE); }

mas fazê-lo da maneira que deve ser feito é uma floresta escura para ir a....

 
Mikhail Dovbakh:

Não o pode fazer sem utilizar DLLs do sistema.

Publiquei uma biblioteca inteira para este fim )

Para 5 separadamente.

Óptimo, é mesmo o que eu preciso!

 
Сергей Таболин:

Não o pode fazer sem ser sarcástico?

Parece não ter lido a documentação de todo... E no entanto responde a pistas como se fosse o centro do universo. Apenas um umbigo analfabeto e indefeso.

Em vez de ser rude, faria algo útil, por amor de Deus!

E não se preocupe em responder e responder! A vossa opinião, infelizmente, não me interessa!)

 

Por favor, diga-me de que classe herdar a sua classe a fim de utilizar todos os métodos destes

utilizar todos os métodos destas classes dentro da sua classe, sem criar objectos dentro da sua classe?