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

 
Valeriy Yastremskiy:

Não entendo, talvez eu esteja falando da janela errada. Refiro-me à janela do gráfico onde estão as barras. Estes movimentos. Há também janelas de diálogo ao carregar indicadores EA, janelas de alerta, janelas de mensagens, mas todos eles se movem. De que janela estamos falando? A caixa de diálogo não tem nada a ver com isso. Também não tenho bibliotecas em 4

Aqui está a janela da coruja.


Quero movê-lo na tabela quando precisar.

 
MakarFX:

Aqui está a janela da coruja


É isso que eu quero fazer no horário quando necessário.

Não é uma janela, é um painel. Você pode movê-lo, eu não posso nem mesmo dizer o código. Preciso do código e redesenho-o em geral. Preciso encontrar onde o painel é desenhado e as coordenadas são especificadas - então, usando eventos, clico para movê-lo, apagá-lo e desenhar um novo. Assim. Mas não sou desenhista de forma alguma.

 
Valeriy Yastremskiy:

Ao apagar em um EA, você não precisa limpar o comentário, mas em um indicador que você faz. É projetado dessa maneira?

Um programador adequado escreveria pelo menos

void OnDeinit(const int reason)
{
     Comment( "" );
}
Se foram utilizados comentários, ele os limpará depois de si mesmo. E muitos iniciantes não prestam atenção a isto. Esse é o segredo.
 
Olá.
Você pode me dizer (fórmula) como calcular o preço para um determinado nível (levando em conta as posições em aberto)? Para calcular a que preço haverá uma chamada de margem e parar de sair.
 
Konstantin Nikitin:

Um programador adequado escreveria pelo menos

Se foram utilizados comentários, ele os limpará depois de si mesmo. E muitos iniciantes não prestam atenção a isso. Esse é o segredo.

Foi o que eu escrevi, e escrevi sobre isso acima). A questão era por que os diferentes comportamentos em EAs e indicadores. Existe um significado oculto ou se desenvolveu historicamente a partir de diferentes equipes de redação)

 
Konstantin Nikitin:

Um programador adequado escreverá pelo menos

Se foram utilizados comentários, ele os limpará depois de si mesmo. E muitos iniciantes não prestam atenção a isso. Esse é todo o segredo.
Na verdade, não há requisitos gerais óbvios sobre isto.
 
Andrey Sokolov:
Na verdade, não há requisitos gerais explícitos sobre isto.

Eu falei sobre a exigência? Eu só disse que alguns levam este ponto em consideração e outros não.

 
Konstantin Nikitin:

Eu falei sobre a exigência? Eu só disse que alguns consideram o ponto e outros não.

Não é assim.

 

A bibliotecaEASY AND FAST https://www.mql5.com/ru/articles/3527 implementa a possibilidade de iniciar uma janela de programa em uma subjanela indicadora carregando o arquivo "SubWindow.mq5", em mql5 tudo funciona, em mql4 também o conteúdo é compilado sem erros, mas a subjanela não abre, o que pode ser feito?


//+------------------------------------------------------------------+
//|                                                    SubWindow.mq5 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2016, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property indicator_separate_window
#property indicator_plots   0
#property indicator_buffers 0
#property indicator_minimum 0.0
#property indicator_maximum 0.0
//--- Имя программы
#define  PROGRAM_NAME ::MQLInfoString(MQL_PROGRAM_NAME)
//--- Идентификатор события для изменения высоты подокна эксперта
#define  ON_SUBWINDOW_CHANGE_HEIGHT (38)
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit(void)
  {
//--- Короткое имя индикатора
   ::IndicatorSetString(INDICATOR_SHORTNAME,PROGRAM_NAME);
//--- Инициализация прошла успешно
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Деинициализация                                                  |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int    rates_total,
                const int    prev_calculated,
                const int    begin,
                const double &price[])
  {
//--- Если инициализация прошла успешно
   if(prev_calculated<1)
      //--- Отправим сообщение эксперту, чтобы получить от него размер для подокна
      ::EventChartCustom(0,ON_SUBWINDOW_CHANGE_HEIGHT,0,0.0,PROGRAM_NAME);
//---
   return(rates_total);
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int    id,
                  const long   &lparam,
                  const double &dparam,
                  const string &sparam)
  {
//--- Обработка события изменения высоты подокна эксперта
   if(id==CHARTEVENT_CUSTOM+ON_SUBWINDOW_CHANGE_HEIGHT)
     {
      //--- Принимать сообщения только от имени эксперта
      if(sparam==PROGRAM_NAME)
         return;
      //--- Изменить высоту подокна
      ::IndicatorSetInteger(INDICATOR_HEIGHT,(int)lparam);
      //--- Обновить график
      ::ChartRedraw();
     }
  }
//+------------------------------------------------------------------+
 

Olá a todos!

Estou tentando anexar uma verificação de conta a (qualquer) indicador!

bool VerifityToSchet()
  {
   if(AccountNumber() != account)
     {
      Print("На данном счете индикатор работать не будет, вы его приобрели незаконным путем!!!");   
     }else
     {
     Print("На данном счете индикатор авторизован");
     }
   return(false);
  } 

Eu a habilitei no init() e start(), é claro, mas quando reinicio o terminal, ele diz que a conta é inválida!

O que eu estou fazendo de errado?

Razão: