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

 
MakarFX #:

Para que você mesmo possa escrever um lembrete - qual é a função

:))) como se eu mesmo não pudesse fazer isso quando precisasse: inserir duas barras e escrever algumas palavras. Você já tentou escrever algo nesse quadro? Essa barra da direita irá para a direita pelo número de caracteres que você digitou, mas e se você precisar escrever mais de uma linha? Em vez de fazer algo, tenho que perder meu tempo com quadros de desenho. É que esse ideal impõe algum tipo de visão doentia de como deveria ser.

 
Nerd Trader #:

:))) como se eu mesmo não pudesse fazer isso quando precisasse: inserir duas barras e escrever algumas palavras. Você já tentou escrever algo nesse quadro? Aquela barra da direita vai explodir pelo número de caracteres que você digitou para a direita, mas e se você precisar escrever mais de uma linha? Em vez de fazer algo, tenho que perder meu tempo com quadros de desenho. Estou apenas impondo uma visão doentia de como deveria ser.

Coloque dois cortes na frente da função e você está pronto para ir.

//
int OnCalculate (const int rates_total,
                 const int prev_calculated,
                 const datetime& time[],
                 const double& open[],
                 const double& high[],
 
MakarFX #:

Coloque dois cortes na frente da função e você está pronto para ir

Já escrevi acima que se houver uma linha vazia entre o comentário e a função, um quadro será inserido.
 

Quando o botão é clicado, uma linha horizontal é criada. Eles são recriados com uma cor diferente, dependendo da posição do cursor em relação ao preço. O problema é: as linhas amarelas e cinzas estão cintilando e constantemente sendo criadas (verde está OK) quando o cursor está na posição apropriada, longe do preço. Código similar que muda apenas a propriedade de cor da linha, não a recria, funciona corretamente.

A lógica NÃO aqui está em seu lugar, ou seja, em vez de escrever == 0.

void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam)
{
  ...
  ...
  ...
  if(ObjectGetInteger(0,"Button Stop Order",OBJPROP_STATE)){
    int x = (int)lparam;
    int y = (int)dparam;
    //Переведём координаты X, Y в дату и время
    if(ChartXYToTimePrice(0,x,y,window,dt,price)){
      //Линия меняет цвет с зелёного на желтый
      if(price < Bid){
        if(!ObjectFind("Buy Stop") || !ObjectFind("not allowed")){
          ObjectDelete(line_name);
          line_name = "Sell Stop";
          CreateLine(line_name, clrYellow);
        }      
      }
      //Линия меняет цвет с желтого на зелёный
      if(price > Ask){
        if(!ObjectFind("Sell Stop") || !ObjectFind("not allowed")){
          ObjectDelete(line_name);
          line_name = "Buy Stop";
          CreateLine(line_name, clrGreen);
        }
      }
      //Линия меняет цвет на серый если в зоне спреда
      if(price > Bid && price < Ask){
        if(!ObjectFind("Buy Stop") || !ObjectFind("Sell Stop")){
          ObjectDelete(line_name);
          line_name = "not allowed";
          CreateLine(line_name, clrGray);
        }
      }
      //Прикрепляем линию к курсору
      if(id == CHARTEVENT_MOUSE_MOVE)
        if(ObjectMove(0,line_name,0,0,price))
          ChartRedraw(0);
    }
  }else if(ObjectFind(line_name) == window) Print(ObjectDelete(line_name));
 
Nerd Trader uma linha horizontal é criada. Eles são recriados em uma cor diferente, dependendo da posição do cursor em relação ao preço. O problema é: as linhas amarelas e cinzas estão cintilando e constantemente sendo criadas (verde está OK) quando o cursor está na posição apropriada a partir do preço. Código similar que muda apenas a propriedade de cor da linha, não a recria, funciona corretamente.

A lógica NÃO aqui está em seu lugar, ou seja, em vez de escrever == 0.

ObjectFind é um int, não um bool
 
Nerd Trader #:

Porque realmente me irrita quando você decide se mudar para um ambiente mql4 nativo e lá vai você! Você gostaria de uma moldura? E nós a venderemos de qualquer forma.

Você tem que usar o método de Makar para obter o que deseja.

MakarFX #:

Eu não conhecia os estilos, então os formulei da maneira que eu queria lê-los.

 
MakarFX #:
ObjectFind é um int, não um bool
neste caso não há diferença "!" ou "==0".
 
Nerd Trader #:
neste caso não há diferença "!" ou "==0".

Há uma diferença!!!

      if(!ObjectFind("Buy Stop"))Print("All right Христофор Бонифатич!");
      else Print("Something is wrong!");
      if(ObjectFind("Buy Stop")!=0)Print("All right Христофор Бонифатич");
 
Nerd Trader #:
neste caso não há diferença "!" ou "==0".
if(!ObjectFind("Buy Stop"))

Esta pergunta é feita assim:

Vasily Ivanovich Chapayev e Petka estão voando em um avião, e de repente Vasily Ivanovich, sentado ao volante do piloto, grita:

"Petya, os instrumentos!"

Petya responde: "Trinta e oito".

Vasily Ivanovich: "Trinta e oito o quê?"

Petya: "E quanto aos instrumentos?"

 
MakarFX #:

Este pedido se parece com isto:

Não Makar, é o que parece:

A função ObjectFind() retorna o número da janela principal. E este número é 0. Por outro lado, 0 == falso, portanto, se a função retorna 0, ela ainda retorna falso. Claro, eu não usaria isto porque se a função retornar -1, ou seja, um erro, podemos considerar a localização do objeto não na janela principal. Além disso, nunca se sabe que consertos serão feitos...

Em geral, não discuta e não aprenda a fazer isso ...

Razão: