Preguntas de los principiantes MQL4 MT4 MetaTrader 4 - página 89

 
Alexey Kozitsyn:
No deberías hacer eso. Sería una gran pérdida de recursos. ¿Y qué hay de malo en un tiempo de respuesta rápido sin bucle?
Gracias. Es que el tutorial oficial de mql4 lo pone como ejemplo, por eso me interesa. Pensé que de alguna manera podría funcionar mejor que la forma habitual.
 
LRA:
Un tick es la llegada de nuevos datos desde el servidor. Y debe ser procesado inmediatamente después de su llegada. Si lo haces en bucle con 5ms de retardo, entonces la mayoría de los ticks vendrán exactamente durante este retardo. Por lo tanto, el procesamiento se retrasará en 0 ... 5 ms.
Sí, tiene su lógica. Sólo pensé que la propia función start() también gasta tiempo en su bucle, y quizás su iteración roba alguna fracción de segundo o más (puede requerir dirigirse a un servidor para obtener un gran conjunto de datos de una vez), a diferencia de un bucle puro. Tal vez, es sólo mi imaginación, porque no entiendo los mecanismos internos, pero hay una razón por la que este método fue incluido en el tutorial mql4.
 
smart_man:
Gracias. Es que el tutorial oficial de mql4 lo pone como ejemplo, así que me interesó. Pensé que tal vez de alguna manera funciona mejor que la forma habitual.
Sí, pero el tutorial está algo anticuado. Por supuesto, es mejor que nada, pero es útil revisar la documentación al mismo tiempo y comprobar si las funciones como start() siguen estando en ella. Ahora es mejor usar el manejador OnTick() para los EAs.
 

¡Buenas tardes!

 
Buenas tardes, ¿pueden decirme cuál es el bróker más conveniente para el par de divisas USD/RUB, el spread mínimo y el swap mínimo, etc. con comisión?
 
kanybek06:
Hola, ¿podrían decirme cuál es el broker más conveniente para el par de divisas USD/RUB?

Como estás empezando, estarás muy contento con cualquiera. Haz una búsqueda en Internet y compáralos. Comuníquese con ellos, haga preguntas. Recibirás una respuesta.

Aquí se discuten preguntas sobre la programación y la plataforma de comercio Metatrader.

 

¿Cuál es la mejor manera de cerrar las contraórdenes si hay que cerrarlas simultáneamente?

1) Cada uno individualmente (ya sea manualmente o por TP/SL)

o

2) ¿En parejas con OrderCloseBy (sólo manual)?

¿Habrá un único guardado de spreads con OrderCloseBy como está escrito en el tutorial? ¿No prohíben los CDs tal cierre y se devolverá este diferencial? ¿Cómo podemos comprobarlo técnicamente?

Gracias.

 
Hay una clase de plantilla para trabajar con un array.
#property strict
#include <ObjectVariables.mqh>
#include <Arrays\varQSort.mqh>
#include <Arrays\objQSort.mqh>

template<typename T1>
class ArrayList
{
   private:
      T1 array[];
      QuickSorts<T1> *qs;
      int size;
      int index;

   public:
      //прочие функции
      void QuickSort();//отсортировать массив
      //прочие функции
};
//+------------------------------------------------------------------+
//| Сортировка массива
template<typename T1>
void ArrayList::QuickSort()
{
   int idx = index;//сохранение положения индекса
   if(IsPointer(array[0])) // true - массив содержит указатели класса
      qs /*ошибка 2*/ = new ObjQSort<T1>();
   else
      qs /*ошибка 2*/ = new VarQSort<T1>();
   qs.Sort(array, 0, index);
   index = idx;
}

Para esta clase de plantilla, necesitamos implementar la ordenación, dado que un array puede almacenar tipos de datos complejos. Por ejemplo:
ArrayList<PP*> *dde; // PP - класс

Puedes escribir diferentes funciones para tipos simples y tipos complejos, pero el compilador no entiende que las funciones están estrictamente delimitadas por el tipo de datos y sigue maldiciendo:
'<' - operación ilegal usar ArrayList.mqh

Así que decidí incrustar la interfaz:

#property strict
template <typename T1>
interface QuickSorts
{
   void Sort(T1 &array[], int beg, int end);
};
#property strict
#include <Arrays\QuickSorts.mqh>
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
template <typename T1>
class VarQSort : public /*ошибка 1*/ QuickSorts
{
private:

public:
   void Sort(T1 &array[], int beg, int end);
   VarQSort(){}
   ~VarQSort(){}
};
template <typename T1>
void VarQSort::Sort(T1 &array[], int beg,int end)
{
   //алгоритм функции
}
#property strict
#include <Arrays\QuickSorts.mqh>
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
template <typename T1>
class ObjQSort : public /*ошибка 1*/ QuickSorts
{
private:

public:
   void Sort(T1 &array[], int beg, int end){}
   ObjQSort(){}
   ~ObjQSort(){}
};

Todas las partes de la construcción se compilan. Pero si tratas de declararlo:
ArrayList<PP*> *dde; // PP - класс
entonces, al compilar el archivo, estos son los errores:

'QuickSorts' - plantilla incorrecta varQSort.mqh /*error 1*/
'=' - tipo incorrecto ArrayList.mqh /*error 2*/


¿Qué debo arreglar en el código para eliminar este desajuste de tipo? No entiendo por qué ha aparecido en absoluto.

P.D.
'<' - operación ilegal usar varQSort.mqh
me persigue en esta construcción también. Es este mismo error el que quería eliminar. Pero entiendo este error, y no entiendo esos dos.
 
виталик:
Hola, por favor, ayuda con un pedazo de código para ordenar arrancado de un indicador PivotsDaily v2.mq4 cómo convertirlo a una hora o media hora, sólo de una manera u otra, por lo que sería más claro cambios, por favor ayuda, gracias de antemano.

Ya escribiste en un hilo. Es suficiente. No es necesario agrupar a los demás.
 
Hola, Me pueden asesorar por favor, escribí un EA hace 1,5 años, funcionaba, todo estaba bien. No lo he usado en todo este tiempo, ahora no se instala en un gráfico. ¿Quién sabe cuál puede ser la razón? ¿Puede ser debido a algunas actualizaciones de MT4?