Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 1132
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
En algún lugar de la ayuda, los desarrolladores dijeron que no se garantiza la clasificación.
Siempre hay un pedido en el billete. El ticket de una orden posterior nunca será menor que el de una orden anterior (por tiempo de apertura).
Y si buscamos entre las órdenes pendientes, entonces sólo por orden - la orden con número 0 - es la orden más antigua, y la orden con número OrdersTotal()-1 será la orden más reciente (de nuevo, por tiempo de apertura), sin tener en cuenta el tipo.
En el historial de órdenes cerradas, sigue dependiendo de la ordenación en la pestaña de historial de la ventana del terminal.
Tuve que buscarlo. No lo he encontrado en MQL5 Reference, pero sí en OrderSelect Reference para MQL4:
"Cuando se utiliza el parámetro SELECT_BY_POS, la información se devuelve en el orden en que se recibió del servidor de comercio. No se garantiza la clasificación de la lista de pedidos recibida".
En realidad, compruebo sistemáticamente si las listas que utilizo tienen una clasificación por número de billete. No ha habido ningún caso de ausencia. Pero tampoco se puede discutir la referencia, no hay argumento. Está bien, está bien...
Tuve que buscarlo. No lo he encontrado en MQL5 Reference, pero sí en OrderSelect Reference para MQL4:
"Cuando se utiliza el parámetro SELECT_BY_POS, la información se devuelve en el orden en que se recibió del servidor de comercio. No se garantiza la clasificación de la lista de pedidos recibida".
En realidad, compruebo sistemáticamente si las listas que utilizo tienen una clasificación por número de billete. No ha habido casos de su ausencia. Pero tampoco se puede discutir la referencia, no hay argumento. Está bien, está bien...
¿Qué quiere decir con "no clasificar"? Ordenar por ticket - siempre habrá orden y no hay contradicción con la documentación, dice sobre ordenar por número de ticket, no por ticket, son cosas diferentes.
Ejecute este código y lea el registro
void OnTick()
{
//--
if(flag)
{
for(int i=0; i<OrdersTotal(); i++)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
Print(i," = ",OrderOpenTime());
}
}
flag=false;
}
//-
}
Otro problema con el que me he encontrado. No juzgues, he estado estudiando el idioma durante 2 o 3 semanas, ¡quizás sea tonto!
La tarea del Asesor Experto es notificar al comerciante por correo electrónico cada 4 horas, si el margen libre en la cuenta ha añadido un cierto valor.
En el asunto del mensaje tienes que escribir el nombre del broker y el par negociado, y en el cuerpo del mensaje "¡Peligro! La detracción está por encima del límite. Adopte las medidas necesarias".
El compilador está funcionando mal, no soy bueno en inglés y no puedo averiguar cuál es el error.
double Sag;
void OnTick()
{
Sag = NormalizeDouble(100-100*(AccountInfoDouble(ACCOUNT_FREEMARGIN)/AccountInfoDouble(ACCOUNT_BALANCE)), 1); //находим процент просадки и округляем до 1 знака
if(Sag > MessageMail && iVolume(NULL,PERIOD_H4,0)<3) //если просадка больше заданного и начата новая свеча на 4ч таймфрейме
{
Alert(Symbol(), ": Просадка = ", Sag, " % ", " > ", MessageMail, " % "); //вывести предупреждение в терминале
//Сюда нужно вставить команду SendMail для отправки сообщения, а что и как не понятно
// пробовал bool SendMail( AccountInfoString(ACCOUNT_COMPANY)|Symbol, "Опасность! Просадка привысила допустимое значение. Примите необходимые меры")
//что то не выходит
}
}
PS: Tal vez en general hay una solución más fácil para este tipo de problema, pero hasta ahora lo veo sólo de esta manera)
Otro problema con el que me he encontrado. No juzgues, he estado estudiando el idioma durante 2 o 3 semanas, ¡quizás sea tonto!
La tarea del Asesor Experto es notificar al comerciante por correo electrónico cada 4 horas, si el margen libre en la cuenta ha añadido un cierto valor.
En el asunto del mensaje tienes que escribir el nombre del broker y el par negociado, y en el cuerpo del mensaje "¡Peligro! La detracción está por encima del límite. Adopte las medidas necesarias".
El compilador se queja, no se me da bien el inglés y no puedo averiguar cuál es el error.
double Sag;
void OnTick()
{
Sag = NormalizeDouble(100-100*(AccountInfoDouble(ACCOUNT_FREEMARGIN)/AccountInfoDouble(ACCOUNT_BALANCE)), 1); //находим процент просадки и округляем до 1 знака
if(Sag > MessageMail && iVolume(NULL,PERIOD_H4,0)<3) //если просадка больше заданного и начата новая свеча на 4ч таймфрейме
{
Alert(Symbol(), ": Просадка = ", Sag, " % ", " > ", MessageMail, " % "); //вывести предупреждение в терминале
//Сюда нужно вставить команду SendMail для отправки сообщения, а что и как не понятно
// пробовал bool SendMail( AccountInfoString(ACCOUNT_COMPANY)|Symbol, "Опасность! Просадка привысила допустимое значение. Примите необходимые меры")
//что то не выходит
}
}
PD: Tal vez en general hay una solución más simple para tal problema, pero hasta ahora sólo lo veo de esta manera)
No sé de qué se trata.
Cuáles son los errores del compilador
prıvet.podjalujte pojalusta pozwala why on demo schete ne mogu otkrıt zdelkı