Preguntas de los principiantes MQL4 MT4 MetaTrader 4 - página 21
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
Gracias por la respuesta... Así, para buscar órdenes en el historial de operaciones, utilizamos la funciónOrdersHistoryTotal, que, tras descartar todo lo que no necesitamos, tiene el siguiente aspecto
for(int i=OrdersHistoryTotal()-1; i>=0; i--) // - la pregunta aquí es qué significa "accTotal"en la plantilla de la función que descartamos, y por qué tomó "i--" y no "i++" como en la plantilla.
- la segunda funciónOrderComment devuelve el comentario de la orden seleccionada si es seleccionada por la función anteriorOrdersHistoryTotal, toma la forma
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) //- donde "i", esto es "i>=0" de la función anterior, y "SELECT_BY_TICKET" fue reemplazado por "SELECT_BY_POS" y "MODE_HISTORY"fue añadido- ¿por qué?
- La tercera línea es la definición, en realidad no necesitamos comprobar la orden necesaria ya que sólo tenemos órdenes de mercado cerradas por TP y SL en este historial (podríamos tener una orden pendiente cerrada, pero será raro), todos los demás parámetros de la orden no son importantes para nosotros. Lo único importante es que la cantidad de pedidos cerrados en el historial aumentará constantemente, ¿es posible hacer que nuestro recálculo no tome todos los pedidos cerrados sino una cierta cantidad de los últimos, por ejemplo, 5-10?
- Las últimas cuatro líneas son bastante claras, la única duda es sobre la función PlaySound, cuyo código debe insertarse después de cada línea"Print("..." así
OrderComment devuelve el comentario de la orden seleccionada, si es seleccionada por la función anteriorOrdersHistoryTotal - esta función no selecciona nada - devuelve el número total de órdenes cerradas y eliminadas(El número de órdenes cerradas y eliminadas en el historial de la cuenta actual, cargado en el terminal del cliente.El tamaño de la lista del historial depende de la configuración actual de la pestaña "Historial de cuentas" del terminal. Cita del tutorial).
accTotal en el ejemplo del tutorial:
int i,accTotal=OrdersHistoryTotal(); - Se trata de una variable int - que toma el valor OrdersHistoryTotal
for(i=0;i<accTotal;i++)// La forma de recorrer la lista del historial no es importante del primer al último orden o viceversa, sigue recorriendo toda la lista en secuencia.
Pero en el caso anterior, hay 1 variable menos, pero la petición OrdersHistoryTotalse procesa en cada ciclo.
SELECT_BY_POS - el parámetro índice contiene el número de índice de la orden en la lista, la lista misma es el segundo operador - MODE_HISTORY es la lista de cerrados, MODE_TRADES - abiertos o pendientes. SELECT_BY_TICKET - el número de billete se pasa en el parámetro índice. Que debe ser tomado en algún lugar antes de seleccionar el pedido.
- Lasúltimas cuatro líneas están en general claras, la única duda es sobre la función PlaySound, cuyo código debe insertarse después de cada línea "Print("..."
dela siguiente
forma:
bool PlaySound(
string payment // file name
)
; ...
¿O también se convierte de alguna manera
?Declare
entonces, ¿qué imprimirá Print? ¿Y en qué condiciones?
¿Qué significa esta acción? ¿Reproducir un sonido cuando se cierra la orden y escribir el comentario (por TP o SL)?
Graciasa Vitalie Postolache por la ayuda, gracias por el consejo, y la información sobre estos libros de texto es probablemente un poco tarde para mí para estudiar en mi sexta década, probablemente no puedo hacer tanto, debería haber antes, pero no había tiempo. Realmente te estoy aburriendo aquí, lo siento si eso, no voy a seguir, me voy.
Por cierto, yo también tengo una pregunta.
Tengo que hacer un cheque de difusión.
He estado utilizando una simple petición de su valor y la prohibición de abrir una orden si el spread supera el valor especificado.
Pero lo que ha ocurrido es que cuando el spread está disminuyendo, el EA abre una orden y ese spread aumenta.
Ahora no encuentro la forma correcta de tenerlo en cuenta: si añadimos el spread al array cada tick, ¿qué tamaño tendrá el array? Entonces, ¿cuánto tiempo durará?
Por supuesto, podemos no utilizar valores similares o utilizar sólo valores menores y mayores, pero en este caso tenemos que ponerlo a cero de alguna manera.
Y lo más importante, no puedo entender si debo tener en cuenta el diferencial mínimo y máximo o una indicación de sus saltos.{
datetime time; // время начала периода
double open; // цена открытия
double high; // наивысшая цена за период
double low; // наименьшая цена за период
double close; // цена закрытия
long tick_volume; // тиковый объем
int spread; // спред
long real_volume; // биржевой объем
};
{
datetime time; // время начала периода
double open; // цена открытия
double high; // наивысшая цена за период
double low; // наименьшая цена за период
double close; // цена закрытия
long tick_volume; // тиковый объем
int spread; // спред
long real_volume; // биржевой объем
};
int spread;// spread
es decir, no
{
datetime time; // время начала периода
double open; // цена открытия
double high; // наивысшая цена за период
double low; // наименьшая цена за период
double close; // цена закрытия
long tick_volume; // тиковый объем
int spread; // спред
long real_volume; // биржевой объем
};
Si pide la barra actual, entonces el spread actual, si de la historia, entonces en el momento del cierre.
Entiendo correctamente, que para escribir datos en el array, hay que asignar a cada celda un valor diferente array1[i] = x; indicando un número de celda específico
¿o se puede llenar la matriz secuencialmente desde i=0 en adelante?
Entiendo correctamente, que para escribir datos en el array, hay que asignar a cada celda un valor diferente array1[i] = x; indicando un número de celda específico
¿o se puede llenar la matriz secuencialmente desde i=0 en adelante?
¿Cuál es la diferencia? Creo que son dos caminos diferentes.