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

 
Alexander Antoshkin:

Olá Vladimir.

Devo ter formulado a minha pergunta de forma incorrecta.

Não preciso de uma subjanela, o indicador deve ser colocado na tabela de preços como um gráfico padrão

Considero isto como um exemplo, e tento compreender .

Quero que o indicador montado no gráfico tenha o seu próprio número, para que o número necessário de cópias possa ser criado no gráfico usando o botão "Adicionar" ..... Quero apagar um seleccionado pelo botão "cross" ........ (ainda não os quero descrever))

Quando um indicador deve ser adicionado à janela principal do gráfico

sub_janela

[em] Número da subjanela do gráfico.0 significa janela principal do gráfico. Para adicionar um indicador a uma nova janela, o parâmetro deve ser mais um do que o índice da última janela existente, ou seja, igual aCHART_WINDOWS_TOTAL. Se o valor do parâmetro excederCHART_WINDOWS_TOTAL, não será criada uma nova janela, o indicador não será adicionado.

Não é possível adicionar o indicador ao OnInit() - uma vez que o perito ainda não foi formado nesta fase. Mas a função - OnTick() é um sinal do trabalho completo do Expert Advisor.

//+------------------------------------------------------------------+
//|                                                         0000.mq5 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"

input int MA_Period=21;
input int MA_Shift=0;
input ENUM_MA_METHOD MA_Method=MODE_SMA;
//--- variables
int MA_handle=INVALID_HANDLE;
bool first_start=false;
//+------------------------------------------------------------------+ 
//| Expert initialization function                                   | 
//+------------------------------------------------------------------+ 
int OnInit()
  {
   Print(__FUNCTION__,", first_start = ",first_start);
   MA_handle=iCustom(NULL,0,"Examples\\Custom Moving Average",MA_Period,MA_Shift,MA_Method,PRICE_CLOSE);
   if(MA_handle==INVALID_HANDLE)
      return(INIT_FAILED);
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| "Tick" event handler function                                    |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(!first_start)
     {
      if(AddIndicator()) //попробуем добавить индикатор на график 
         first_start=true;
     }
  }
//+------------------------------------------------------------------+ 
//| Функция проверки и добавления индикатора на график               | 
//+------------------------------------------------------------------+ 
bool AddIndicator()
  {
//--- сбросим код ошибки 
   ResetLastError();
//--- накладываем индикатор на график   
   int subwindow=0;
   PrintFormat("Добавляем индикатор на окно %d графика",subwindow);
   if(!ChartIndicatorAdd(0,subwindow,MA_handle))
     {
      PrintFormat("Не удалось добавить индикатор  на окно %d графика. Код ошибки  %d",
                  subwindow,GetLastError());
     }
   return(true);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
E reescrever a função AddIndicator() para que retorne falso na tentativa mal sucedida de adicionar um indicador.
 
Alexander Antoshkin:

Olá Vladimir.

Devo ter formulado a minha pergunta de forma incorrecta.

Não preciso de uma subjanela, o indicador deve ser colocado na tabela de preços como um gráfico padrão

Considero isto como um exemplo, e tento compreender .

Quero que o indicador montado no gráfico tenha o seu próprio número, para que o número necessário de cópias possa ser criado no gráfico usando o botão "Adicionar" ..... Quero apagar uma seleccionada com o botão "cross" ........ (há muitas fantasias e ainda não as quero descrever))

O indicador pode ter um nome, se gostar de números, deixe-o ser um número. No entanto, o número não será um número mas um texto. Deseja um painel de controlo personalizado que lhe permita adicionar qualquer número indicador de um ou mais?
 
Pode dizer-me como filtrar por número de dia e separadamente por número de semana num mês? Dentro do dia em que o fiz:


bool TimeStart=false;

int hour=12;


//--Фильтр по ремени открытия бара внутри дня

if (TimeStart==true)

{      

      datetime  Open_timePos=iTime(_Symbol,0,0);

      MqlDateTime str1; 

      TimeToStruct(Open_timePos,str1);

      str1.hour=hour;

      str1.min=0;

      str1.sec=0;


      datetime start_time=StructToTime(str1);

      if (start_time>iTime(_Symbol,0,0))

      {

            BuyPrIMA=false;

            SellPrIMA=false;      

      

      } 

 

 

 
-Aleks-:
Pode dizer-me como filtrar por número de dia e separadamente por número de semana num mês? Dentro do dia em que o fiz:

int НомерДНЯвМесяце=TimeDay(iTime(_Symbol,0,0));

int НомерДняНедели=TimeDayOfWeek(iTime(_Symbol,0,0)); int НомерНеделиВмесяце=NormalizeDouble(НомерДНЯвМесяце/7,0);

 
new-rena:
Ele pergunta sobre a semana do mês
 
pako:
Ele está a perguntar sobre a semana do mês

Fiz aí as três opções. Qual deles quer usar como base, por favor?

Este aqui?

int НомерНеделиВмесяце=NormalizeDouble(НомерДНЯвМесяце/7,0);
 
new-rena:
Fiz aí as três opções. Por favor, especifique.

Há cinco a seis semanas no mês, hoje é a quarta semana do mês

str.day dia do mês

str.day_of_week day

 
new-rena:
Obrigado.
 
pako:
Há quatro cinco semanas num mês, hoje é a quarta semana do mês
Estou a ver. Assim, ele quer prestar contas durante semanas desta natureza no dia 29 do mês anterior (segunda-feira, por exemplo) e até ao dia 31 do mês em curso (segunda-feira também, por exemplo). É mais de um mês. Não é lógico contar tais semanas. Se não for, então a semana não será uma semana inteira. Não, nenhum ponto....
 
new-rena:

Fiz aí as três opções. Pode dizer-me qual deles quer usar como base?

Este aqui?

Isso não serve.
Razão: