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

 
makskov1987:


cuando saldrá metatrader en windows phone 8

Si Microsoft ha completado la adquisición de la división de móviles de Nokia para un asalto a gran escala en el mercado de los móviles, no tardará mucho. MetaQuotes tiene (esperamos :-) ) una mano en el pulso.
 
Hola, ¿cuál es la diferencia entre las dos expresiones, y cuál es mejor utilizar para limitar el tiempo de ejecución del EA
(Hour() >= StartHour && Hour() <= EndHour) 
(TimeHour(TimeCurrent()) >= StartHour && TimeHour(TimeCurrent()) <= EndHour)
 
Hola, ¿podríais decirme dónde puedo conseguir un script mql5 que coloque las órdenes simultáneamente en varios terminales? Gracias.
 

Sigo escribiendo mi generador de señales de trading.

Hay errores en la última parte del código de inicialización (en negrita)

InitMyCustomIndicator' - la función debe tener un cuerpo

'InitClose' - la función debe tener un cuerpo

//| включаемые файлы                                                 |
//+------------------------------------------------------------------+
#property tester_indicator "Blau_Ergodic.ex5"
#include <Expert\ExpertSignal.mqh>
//+------------------------------------------------------------------+
//| Класс CSampleSignal.                                             |
//| Назначение: Класс генератора торговых сигналов.                  |
//|             Является производным от класса CExpertSignal.        |
//+------------------------------------------------------------------+
class CSampleSignal : public CExpertSignal
  {
protected:
   CiCustom           m_TSI;              // объект для доступа к значениям TSI
   CiClose            m_close;           // объект для доступа к ценам закрытия баров
  //--- настраиваемые параметры
   int      q;  // q - период, по которому вычисляется моментум
   int      r; // r - период 1-й EMA, применительно к моментуму
   int      s;  // s - период 2-й EMA, применительно к результату первого сглаживания
   int      u;  // u - период 3-й EMA, применительно к результату второго сглаживания
   int      ul; // ul - (сигнальная линия) период EMA, применительно к эргодике
   double             m_stop_loss;       // уровень установки ордера "stop loss" относительно цены открытия
   double             m_take_profit;     // уровень установки ордера "take profit" относительно цены открытия
public:
              CSampleSignal();
   //--- методы установки параметров настройки
   virtual int       ShortCondition(); // проверка условия открытия селла
   virtual int       LongCondition();  // проверка условия открытия бая
   void               Q(int value)                 { q=value;   }
   void               R(int value)                 { r=value;   }
   void               S(int value)                 { s=value;   }
   void               U(int value)                 { u=value;   }
   void               UL(int value)                { ul=value;  }
   void               StopLoss(double value)       { m_stop_loss=value;   }
   void               TakeProfit(double value)     { m_take_profit=value; }
   //--- метод проверки параметров настройки
   virtual bool       ValidationSettings();
   
   virtual bool       InitIndicators(CIndicators* indicators);

protected:
   //--- метод инициализации объектов
   bool               InitMyCustomIndicator(CIndicators* indicators);
   bool               InitClose(CIndicators* indicators);
   //--- методы доступа к данным объектов
   double             Main(int index)                     { return(m_TSI.GetData(0,index)); }
   double             Signal(int index)                   { return(m_TSI.GetData(1,index)); }
   double             Close(int index)                    { return(m_close.GetData(index)); }
  };
//+------------------------------------------------------------------+
//| Конструктор CSampleSignal.                                       |
//| INPUT:  нет.                                                     |
//| OUTPUT: нет.                                                     |
//| REMARK: нет.                                                     |
//+------------------------------------------------------------------+
void CSampleSignal::CSampleSignal()
  {
   q=2; 
   r=7;
   s=5;
   u=3;
   ul=5;   
  }
//+------------------------------------------------------------------+
//| Проверка параметров настройки.                                   |
//| INPUT:  нет.                                                     |
//| OUTPUT: true-если настройки правильные, иначе false.             |
//| REMARK: нет.                                                     |
//+------------------------------------------------------------------+
bool CSampleSignal::ValidationSettings()
  {
  //--- проверка параметров
   if(q<=0||r<=0||s<=0||u<=0||ul<=0)
     {
      printf(__FUNCTION__+": период должен быть больше нуля");
      return(false);
     }
//--- успешное завершение
   return(true);
  }
//+------------------------------------------------------------------+
//| Инициализация индикаторов и таймсерий.                           |
//| INPUT:  indicators - указатель на объект-коллекцию               |
//|                      индикаторов и таймсерий.                    |
//| OUTPUT: true-в случае успешного завершения, иначе false.         |
//| REMARK: нет.                                                     |
//+------------------------------------------------------------------+
bool CSampleSignal::InitIndicators(CIndicators* indicators)
  {
//--- проверка указателя
   if(indicators==NULL)       return(false);
//--- инициализация скользящей средней
   if(!InitMyCustomIndicator(indicators))    return(false);
//--- инициализация таймсерии цен закрытия
   if(!InitClose(indicators)) return(false);
//--- успешное завершение
   return(true);
  }
 
forexman77:

Sigo escribiendo mi generador de señales de trading.

Hay errores en la última parte del código de inicialización (en negrita)

InitMyCustomIndicator' - la función debe tener un cuerpo

'InitClose' - la función debe tener un cuerpo


Está intentando utilizar métodos declarados pero no definidos.
 
Fleder:
Está intentando utilizar métodos declarados pero no definidos.

Las clases son nuevas para mí y no las entiendo realmente. ¿Puedes mostrarme cómo hacer una definición con un ejemplo?

 
forexman77:
Las clases son nuevas para mí y no las entiendo realmente. ¿Puedo usar un ejemplo para mostrar cómo hacer una definición?
protected:
   //--- метод инициализации объектов
   bool               InitMyCustomIndicator(CIndicators* indicators);
   bool               InitClose(CIndicators* indicators);
.
.
.

bool CSampleSignal::InitMyCustomIndicator(CIndicators* indicators)
{
  //здесь надо вписать тело метода
  return(true);
}

bool CSampleSignal::InitClose(CIndicators* indicators)
{
  //и здесь тоже
  return(true);
}
 
Fleder:

Entonces, ¿sólo cambio la última parte del código que pongo en negrita?

Y hago esto:

bool CSampleSignal::InitMyCustomIndicator(CIndicators* indicators)
  {
//--- проверка указателя
   if(indicators==NULL)       return(false);
//--- инициализация скользящей средней
   if(!InitMyCustomIndicator(indicators))    return(false);
   return(true);
  }
bool CSampleSignal::InitClose(CIndicators* indicators)
{
   if(!InitClose(indicators)) return(false);
//--- успешное завершение
  return(true);
}
 
forexman77:

Entonces, ¿sólo cambio la última parte del código que he resaltado en negrita?

Y hago lo siguiente:

Si el código de su clase tiene métodos como

   bool               InitMyCustomIndicator(CIndicators* indicators);
   bool               InitClose(CIndicators* indicators);

Entonces deben comprobar algo. De lo contrario, no tiene sentido su existencia.

 

¡Hola!

¿Cómo configuro un bucle for sobre los precios de cierre de las barras si no sé de antemano cuántas barras debo comprobar?

int i=1;i<ArraySize(select);i++
CopyRates(_Symbol,_Period,0,i,mrate)

Necesito comprobar una condición, por ejemplo, que los precios de cierre de i barras hacia atrás, sean inferiores entre sí.