Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 605

 
Alexander Antoshkin:

Hola Vladimir.

Debo haber formulado mal mi pregunta.

No necesito una subventana, el indicador debe colocarse en el gráfico de precios como un gráfico estándar

Lo considero un ejemplo y trato de entenderlo.

Quiero que el indicador montado en el gráfico tenga su propio número, para poder crear el número necesario de copias en el gráfico mediante el botón "Añadir" ..... Quiero borrar uno seleccionado por el botón "cruz" ........ (no quiero describirlos todavía))

Cuándo debe añadirse un indicador a la ventana del gráfico principal

subventana

[in] Número de subventana del gráfico.0 significa ventana del gráfico principal. Para añadir un indicador a una nueva ventana, el parámetro debe ser uno más que el índice de la última ventana existente, es decir, igual aCHART_WINDOWS_TOTAL. Si el valor del parámetro excedeCHART_WINDOWS_TOTAL, no se creará una nueva ventana, el indicador no se añadirá.

No se puede añadir el indicador a OnInit() - ya que el experto aún no se ha formado en esta etapa. Pero la función - OnTick() es un signo de trabajo completo del Asesor Experto.

//+------------------------------------------------------------------+
//|                                                         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)
  {
//---

  }
//+------------------------------------------------------------------+
Y reescribir la función AddIndicator() para que devuelva false al intentar añadir un indicador sin éxito.
 
Alexander Antoshkin:

Hola Vladimir.

Debo haber formulado mal mi pregunta.

No necesito una subventana, el indicador debe colocarse en el gráfico de precios como un gráfico estándar

Lo considero un ejemplo y trato de entenderlo.

Quiero que el indicador montado en el gráfico tenga su propio número, para poder crear el número necesario de copias en el gráfico mediante el botón "Añadir" ..... Quiero borrar una seleccionada por el botón "cruz" ........ (hay muchas fantasías y no quiero describirlas todavía))

El indicador puede tener un nombre, si te gustan los números, que sea un número. Sin embargo, el número no será un número sino un texto. ¿Quiere un panel de control personalizado que le permita añadir cualquier número de indicador de uno o más?
 
¿Me pueden decir cómo filtrar por número de día y por separado por número de semana en un mes? Dentro del día he hecho esto:


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-:
¿Me pueden decir cómo filtrar por número de día y por separado por número de semana en un mes? Dentro del día he hecho esto:

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

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

 
new-rena:
Pregunta sobre la semana del mes
 
pako:
Está preguntando por la semana del mes

He hecho las tres opciones allí. ¿Cuál quiere usar como base, por favor?

¿Este?

int НомерНеделиВмесяце=NormalizeDouble(НомерДНЯвМесяце/7,0);
 
new-rena:
Hice las tres opciones allí. Por favor, especifique.

Hay cinco o seis semanas en el mes, hoy es la cuarta semana del mes

str.day día del mes

str.día_de_semana día

 
new-rena:
Gracias.
 
pako:
Hay cuatro cinco semanas en un mes, hoy es la cuarta semana del mes
Ya veo. Así que quiere contabilizar las semanas de esta naturaleza el 29 del mes anterior (lunes, por ejemplo) y hasta el 31 del mes en curso (lunes también, por ejemplo). Es más de un mes. No es lógico contar esas semanas. Si no es así, la semana no será completa. No, no hay punto....
 
new-rena:

He hecho las tres opciones allí. ¿Puedes decirme cuál quiere usar como base?

¿Este?

Eso no servirá.