Uma pergunta para os conhecedores de MQL - página 4

 
Aback... Entrei na "Pergunta por Especialização em MQL"... Desculpe, se alguma coisa, sou tão bom programador quanto um d.... mas eu sou sempre objetivo! :)
 
leonid553:

Acho que entendi. Eu defino o nome do objeto na função.

ObjectCreate(name+ WindowExpertName(), OBJ_LABEL, WindowFind(WindowExpertName()), 0, 0);


Não se trata de objetos...

Você o escreve no init()

IndicatorShortName("CC-STOKS ");

Você usa WindowExpertName() como nome indicador em uma função de renderização...

Decida-se, caro amigo (desculpe por estar familiarizado), ou o indicador se chama "CC-STOKS" (um pseudônimo), ou ele tem o nome do especialista...

 

Estou falando do meu...

Bem, eu não vejo um cheque para um objeto.

 

Removido a linha IndicatorShortName("CC-STOKS ");

Parece estar funcionando agora.

//------------------------------------------

Verifiquei-o.

 string info =ObjectFind("Symbol1+WindowExpertName()");
     IndicatorShortName(info);     

O comentário retorna "-1".

E - não importa se o "pseudônimo" está lá ou se foi apagado.

 

Sim, está funcionando bem...

Obrigado a todos que ajudaram e responderam às perguntas!

 

Já bebi algumas cervejas, mas você está me enchendo a cabeça...

deixar claro o que está acontecendo...


ou

1. nenhum nome curto e

static int WINDOW = -1;

int start(){
   if (WINDOW == -1) WINDOW = WindowFind( WindowExpertName() );
}

seu init() como é

ou defina o nome curto em sua int()

string short = "CC-STOKS";

int init(){
   IndicatorShortName( short );
   // остальное прочее
}

int start(){
   if (WINDOW == -1) WINDOW = WindowFind( short );
}

e então ao desenhar objetos, use WINDOW como o número da subjanela

ObjectCreate(name + WindowExpertName(), OBJ_LABEL, WINDOWS, 0, 0);

a função objeto deve se parecer com isto

void object(string name, int window, string text, color col, int corner,
            int x, int y, bool back = false, int fontsize = 9, 
            string fontname = "Tahoma") {
   if (ObjectFind(name)==-1)      
      ObjectCreate(name, OBJ_LABEL, window, 0, 0);
   ObjectSetText(name, text, fontsize, fontname, col);
   ObjectSet(name, OBJPROP_CORNER, corner);
   ObjectSet(name, OBJPROP_BACK,back);
   ObjectSet(name, OBJPROP_XDISTANCE, x);
   ObjectSet(name, OBJPROP_YDISTANCE, y);     
}

Desta forma, todos os atributos-chave são passados como parâmetros e, a propósito, o nome do objeto deve ser formado fora da função ...

 
OK. Passando por suas instruções ...
 

Boa tarde. Por favor, informe.

É possível desenhar um triângulo na janela indicadora? Em caso afirmativo, como definir as coordenadas?

Não consigo encontrar uma maneira de definir as coordenadas de um triângulo na ajuda do mql.

 
Rita:

Boa tarde. Por favor, informe.

É possível desenhar um triângulo na janela indicadora? Em caso afirmativo, como definir as coordenadas?

Não consigo encontrar uma maneira de definir as coordenadas de um triângulo na ajuda do mql.


ObjectCreate(имя_объекта, OBJ_TRIANGLE, 0, вершина1_время, вершина1_цена, вершина2_время, вершина2_цена, вершина3_времявершина3_цена);
Se não estiver na janela principal, use o número correspondente da janela principal em vez de 0: https://docs.mql4.com/ru/windows/WindowFind
 


ObjectCreate(name, OBJ_TRIANGLE, WindowFind(WindowExpertName(), Time[-1],vértice1_price,

Tempo[-5],vértice2_preço,

Tempo[-7],vértice3_preço, );

//--------------------------------------------------------------------------------------------------------------------------

Eu defini as coordenadas dos nós triangulares pelo tempo (por exemplo - pelo tempo de abertura das futuras barras). O resto não é muito claro para mim. Não é o preço que é exibido na escala da janela indicadora. É a gradação dos valores indicadores.

Preciso "colocar" um triângulo com topos rigidamente fixos, independentemente do preço.

E de preferência, deve ser fixado rigidamente no canto direito (ou inferior).

E não sei como definir as coordenadas de seus vértices - no eixo vertical da escala indicadora: