Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1269

 
Aleksei Lesnikov:

Alexei, ¡gracias! Ahora está claro que no es posible.

Es cierto, no tengo exactamente mql4. Estoy tratando de cambiar los datos a través de la clase CiOpen. Me confunde el método Update, que debería cambiar el elemento en una posición determinada del array.

Cópialo en tus variables / arrays y trabaja ya con ellos.
 
Valeriy Yastremskiy:
Copiar en sus variables / matrices y trabajar con ellos ya.

Así que lo hice.

 

Estoy muy agradecido por su ayuda. Soy bastante nuevo en la programación.

Mientras estudiaba, he tenido dificultades para aplicar el código. Hay un artículo https://www.mql5.com/ru/articles/3336 No puedo entender cómo se realiza la comparación

if(!CompareTiks(n_tiks[i], m_ticks[k]))

Sospecho que se utiliza la "Plantilla de Recogida de Datos" y que existe ese método global"Comparar".Pero el listado del artículo no da en ningún sitio cómo hacer que el compilador entienda que debo usar "Compare" de"Data Template Collections". No he encontrado ningún ejemplo de métodos globales de"Data Template Collections".

La siguiente entrada en la descripción del método global no cambiará el resultado

template<typename T>
int Compare(
T x, // primer valor
T y // segundo valor
);

Como resultado, tengo el siguiente código (o más bien, el código me tiene a mí)

#ifndef MyInclude
#define MyInclude


//template<typename T>
//interface ICollection
//#include <Generic\Interfaces\ICollection.mqh>
template<typename T>
int Compare(
T x, // primer valor
T y // segundo valor
);

class CMarketBook
{
private:
string m_symbol;
MqlTick m_ticks[];
MqlTick LastTicks[];

protegida:

public:
void CMarketBook::CompareTicks(void);
};
//+------------------------------------------------------------------+
//|Comparar dos colecciones de ticks y encontrar nuevos ticks |
//+------------------------------------------------------------------+
void CMarketBook::CompareTicks(void)
{
MqlTick n_ticks[];
ulong T_begin = (TimeCurrent()-(1*20))*1000;/hace 20 segundos
m_symbol = Symbol();
int Total = CopyTicks(m_symbol, n_ticks, COPY_TICKS_ALL, T_begin, 1000);
if (Total < 1) {printf("Failed to get ticks"); return;}
if (ArraySize(m_ticks) == 0) {ArrayCopy(m_ticks, n_ticks, 0, 0, WHOLE_ARRAY); return;}

int k = ArraySize(m_ticks)-1;
int n_t = 0;
int Limit_comp = 20;
int Comp_success = 0;

¡// Prueba nuevos ticks recibidos
for (int = ArraySize(n_ticks)-1; i>=0 && k>=0; i--)
{
if (!Compare(n_ticks[i], m_ticks[k]))
{
n_t = ArraySize(n_ticks) - i;
k = ArraySize(m_ticks) - 1;
Comp_success = 0;
}
else
{
Comp_success += 1;
if (Comp_success >= Limit_comp) break;
k--;
};
};
//Memorizar los ticks recibidos
ArrayResize(m_ticks, Total);
ArrayCopy(m_ticks, n_ticks, 0, 0, WHOLE_ARRAY);
/Calcular el índice de inicio de los nuevos ticks y copiarlo en el buffer para su acceso
ArrayResize(LastTicks, n_t);
if (n_t > 0)
{
int index = ArraySize(n_ticks) - n_t;
ArrayCopy(LastTicks, m_ticks, 0, index, n_t);
};
};
#endif

Al compilar, se genera un error - "el objeto se pasa sólo por referencia" a la línea if (!Compare(n_ticks[i], m_ticks[k])) que apunta an_ticks[i]

Пишем скальперский стакан цен на основе графической библиотеки CGraphic
Пишем скальперский стакан цен на основе графической библиотеки CGraphic
  • www.mql5.com
Именно с этой, улучшенной и дополненной версией мы и начнем работать, чтобы постепенно превратить ее в скальперский стакан цен. Краткий обзор графической библиотеки CPanel Созданию пользовательских интерфейсов в MQL5 посвящено много статей. Среди них особенно выделяется серия Анатолия Кажарского "Графические интерфейсы", после которой сложно...
 
Cuando se utiliza Internet móvil, no hay SendNotification... Al conectarse al wi-fi, vienen (incluso los que no venían al usar internet móvil). ¿Es un problema del ISP? Creo que todos los permisos están habilitados en la configuración de Internet móvil...
 

Buenas tardes a todos.

Estoy probando un asesor experto de Alpari MT4. Antes de hacer la prueba, MT me sugiere que fije el spread (ya sea el valor actual o uno específico).


En Alpari, el diferencial es flotante. Por eso, los ajustes de tamaño de propagación mencionados anteriormente no me convienen.

P. ¿Qué opción muestra los valores del spread para cada tick histórico en el historial?
O bien, ¿cómo debo hacer que mi EA abra y cierre las órdenes teniendo en cuenta los valores del spread válidos en el momento en que se abre o cierra la orden?

Gracias a todos por su ayuda.

 
ANDREY:

Buenas tardes a todos.

Estoy probando un asesor experto de Alpari MT4. Antes de realizar la prueba, MT me sugiere establecer el valor del spread (actual o cualquier valor particular de los ofrecidos).


En Alpari el spread es flotante. Por eso, los valores de propagación mencionados no me sirven.

P. ¿Qué función muestra en el historial los valores del spread para cada tick histórico?
O bien, ¿cómo debemos hacer que nuestro EA abra y cierre órdenes teniendo en cuenta los valores del spread válidos en el momento de abrir o cerrar la orden?

Gracias a todos por su ayuda.

No se puede hacer eso en MT4, pero sí en MT5

 
Vladimir Pastushak:

En MT 4 no, en MT 5 se puede

Muchas gracias por la valiosa información.

Empezaré a estudiar mql5. Dicen que es muy similar a mql4. Te agradecería mucho que me dijeras cómo implementar mi idea en mql5.

 
ANDREY:

Muchas gracias por la valiosa información.

Empezaré a estudiar mql5. Dicen que es muy similar a mql4. Te agradecería mucho que me dijeras cómo implementa mql5 mi idea.

No es necesario hacer nada con mt5.
Todo ocurre automáticamente y el EA opera con spread flotante en el probador de estrategias.
 
Vladislav Andruschenko:
En mt5 no hace falta inventar nada.
Todo sucede automáticamente y el EA opera con un spread flotante en el probador de estrategias .

Esto es genial. Gracias por la valiosa información.

Si quieres pasar rápidamente de mql4 a mql5, es mejor que leas simultáneamente los manuales de mql4 y mql5 y prestes atención a las diferencias entre ambos. Todo se aprende por comparación.....
 

¡Buenos días a todos!

He empezado a estudiar mql5. Empecé estudiando cómo se abren los pedidos. Tengo entendido que el código para abrir una orden se escribe en un archivo de inclusión separado. Ahora domino este código y su variante final para el comercio. Me ha sorprendido que la apertura de pedidos en mql4 es mucho más fácil y sencilla que en mql5.

Me gustaría preguntar si estoy seguro de que ya tengo el archivo con el código para abrir la orden y no necesito escribir este código. Si dicho archivo está disponible en algún lugar, entonces sólo tengo que conectarlo a mi EA y establecer los valores de los parámetros de la orden que necesito? Si existe tal archivo, dónde y cómo debe encontrarse, y cuál es su nombre.

Estaré encantado de darle el nombre del archivo.

Razón de la queja: