Preguntas de un "tonto" - página 44

 

Alex, ¿puedes decirme cómo comparar m_rates[1].low con m_rates[0].close?

m_rates[1].low=m_rates[0].close ¿será correcto y en general, m_rates[0].close es el último precio de la barra que aún no está cerrada?

y en general, ¿cuál es la forma correcta de tratar la última barra sin utilizar indicadores?(CopyRates, CopyHigh)

 
Makser:

Alex, ¿cómo puedo comparar m_rates[1].low con m_rates[0].close?

m_rates[1].low=m_rates[0].close ¿será correcto y en general, m_rates[0].close es el último precio de la barra que aún no está cerrada?

y en general, ¿cuál es la forma correcta de tratar la última barra sin utilizar indicadores? (CopyRates, CopyHigh)

usted escribió correctamente que debería usar CopyRates o CopyHigh/Low/Close, etc. para trabajar con datos de precios fuera de los indicadores.

Puedes encontrar ejemplos en la ayuda o en la base de código.

Документация по MQL5: Доступ к таймсериям и индикаторам / CopyRates
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyRates
  • www.mql5.com
Доступ к таймсериям и индикаторам / CopyRates - Документация по MQL5
 

Al compilar el código, aparece un mensaje: posible pérdida de datos debido a la conversión de tipo en la línea

datetime lastbar_time=SeriesInfoInteger(Symbol(),Period(),SERIES_LASTBAR_DATE);

y al utilizar la función en el Asesor Experto, deja de funcionar en el probador, por favor dígame la razón, el código está tomado del artículo https://www.mql5.com/ru/articles/22

//+------------------------------------------------------------------+
//|                                                 CheckLastBar.mq5 |
//|                        Copyright 2010, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2010, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(isNewBar())
     {
      PrintFormat("Новый бар: %s",TimeToString(TimeCurrent(),TIME_SECONDS));
     }
  }
//+------------------------------------------------------------------+
//| Возвращает true, если появился новый бар для пары символ/период  |
//+------------------------------------------------------------------+
bool isNewBar()
  {
//--- в статической переменной будем помнить время открытия последнего бара
   static datetime last_time=0;
//--- текущее время
   datetime lastbar_time=SeriesInfoInteger(Symbol(),Period(),SERIES_LASTBAR_DATE);

//--- если это первый вызов функции
   if(last_time==0)
     {
      //--- установим время и выйдем 
      last_time=lastbar_time;
      return(false);
     }

//--- если время отличается
   if(last_time!=lastbar_time)
     {
      //--- запомним время и вернем true
      last_time=lastbar_time;
      return(true);
     }
//--- дошли до этого места - значит бар не новый, вернем false
   return(false);
  }
//+------------------------------------------------------------------+
Ограничения и проверки в экспертах
Ограничения и проверки в экспертах
  • 2010.08.02
  • MetaQuotes Software Corp.
  • www.mql5.com
Можно ли торговать этим инструментом в понедельник? Хватит ли денег на открытие позиции? Какой размер убытка мы получим, если сработает Stop Loss? Как ограничить количество отложенных ордеров? Была ли выполнена торговая операция на этом баре или это было на предыдущем? Если торговый робот не может сделать подобные проверки, то любая прибыльная торговая система может превратиться в проигрышную. В этой статье показаны примеры проверок, которые пригодятся в любом эксперте.
 
Europa:

Al compilar el código, aparece un mensaje: posible pérdida de datos debido a la conversión de tipo en la línea

y al utilizar la función en el Asesor Experto, deja de funcionar en el probador, por favor dígame la razón, el código está tomado del artículohttps://www.mql5.com/ru/articles/22

No estoy seguro del probador. Sobre "... conversión de tipo":
   datetime lastbar_time=(datetime)SeriesInfoInteger(Symbol(),Period(),SERIES_LASTBAR_DATE);
 

Interesante, pero yo también tengo uno similar.Llenar un array doble con datos dobles. Da la misma advertencia en esta línea.

CopyBuffer(ma_handle,0,0,13,ma);
 
Karlson:

Interesante, pero yo también tengo uno similar.Rellenar un array doble con datos dobles.Da el mismo aviso en esta línea.

Tal vez sea la interpretación ambigua de las constantes (0,0,13). El CopyBuffer tiene tres variantes de llamada. Intente sustituir las variables de tipo necesario como parámetros o utilice la conversión de tipo explícita para las constantes.
 
Gracias, lo probaré. Ya he probado la conversión, la conversión explícita pasa, si traduzco un manejador de máscara con (int), pero eso no me conviene desde luego :-)
 
Karlson:
Gracias, lo intentaré. Ya he probado la conversión, la conversión explícita pasa, si traduzco un manejador de máscara a través de (int), pero eso no me conviene, claro :-)
Espera un segundo. ¿Cuál es el tipo de manilla?
 

Me equivoqué. Necesito un int.

int  iMA(
   string               symbol,            // имя символа
   ENUM_TIMEFRAMES      period,            // период
   int                  ma_period,         // период усреднения
   int                  ma_shift,          // смещение индикатора по горизонтали
   ENUM_MA_METHOD       ma_method,         // тип сглаживания
   ENUM_APPLIED_PRICE   applied_price      // тип цены или handle
   );

Gracias.

 
Yo también tengo algunas preguntas. ¿Dónde están los módulos de señal de cruce de medias móviles? ¿Dónde están las señales de aligatora? Una cosa más. Cada indicador tiene varios tipos de señales. ¿Cómo hacer que el MACD acepte sólo señales de cruce de cero?
Razón de la queja: