Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1269
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
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.
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]
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.
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
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.
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.
En mt5 no hace falta inventar nada.
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.