Preguntas de los principiantes MQL4 MT4 MetaTrader 4 - página 14
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
Digámoslo así. Muestras el código que pasa por las órdenes con una explicación de cómo debería hacerlo y sólo entonces podremos decir qué está bien y qué está mal. Sólo los nombres de las funciones no le ayudarán a acercarse al resultado.
Hola ... gracias por aceptar ayudarme ... Parecía una pequeña empresa, para hacer sonar las órdenes de cierre, podría hacerse simplemente añadiendo el evento requerido a la carpeta apropiada - resultó no ser tan fácil ... Aquí hay un código de muestra que tomé deMQL4 ReferenceTrading Functions:
intHistorialPedidosTotal();
// recuperar información del historial comercialint i,accTotal=Total de pedidos();
for(i=0;i<accTotal;i++)
{
//---- comprobar el resultado de la selección
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)
{
Print("Error al acceder a la base de datos del historial (",GetLastError(),"));
romper;
}
// trabajar con una orden...
}
... La función devuelvela cantidad de órdenes cerradas y borradas en el historial de la cuenta actual cargada 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.
No me queda claro cómo va a buscar en ellos y por qué es necesario... ¿Quizás sea necesario memorizarlas y descartarlas, para que no estorben?
Se supone que debemos hacer sonar las órdenes recién cerradas en el momento en que se cierran con un breve pitido. Todas las órdenes que se cierran en mi Terminal de Cliente son de dos tipos solamente: porpromedioTrailStopLoss yTakeProfit. Al cerrar una orden (un grupo de órdenes), sin importar la dirección (Venta o Compra) deben ser separadas sólo porStopLossoTakeProfit yenviadas a la funciónPlaySoundcorrespondiente.
Hola ... gracias por aceptar ayudarme ... Parecía una pequeña empresa, para hacer sonar las órdenes de cierre, podría hacerse simplemente añadiendo el evento requerido a la carpeta apropiada - resultó no ser tan fácil ... Aquí hay un código de muestra que tomé deMQL4 ReferenceTrading Functions:
intHistorialPedidosTotal();
// recuperar información del historial comercialint i,accTotal=Total de pedidos();
for(i=0;i<accTotal;i++)
{
//---- comprobar el resultado de la selección
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)
{
Print("Error al acceder a la base de datos del historial (",GetLastError(),"));
romper;
}
// trabajar con una orden...
}
... La función devuelvela cantidad de órdenes cerradas y borradas en el historial de la cuenta actual cargada 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.
No me queda claro cómo va a buscar en ellos y por qué es necesario... ¿Quizás sea necesario memorizarlas y descartarlas, para que no estorben?
Se supone que debemos hacer sonar las órdenes recién cerradas en el momento en que se cierran con un breve pitido. Todas las órdenes que se cierran en mi Terminal de Cliente son de dos tipos solamente: porpromedioTrailStopLoss yTakeProfit. Cuando se cierra una orden (un grupo de órdenes) no importa la dirección (Venta o Compra) deben ser separadas sólo por el comando de cierreStopLossoTakeProfity enviadas a la funciónPlaySoundcorrespondiente.
Los pedidos deben buscarse en el orden inverso, ya que 0 es el primero y accTotal-1 es el último. En este código, después de "// trabajar con el orden" recuerde el comentario y compruebe si hay un comentario de cierre para el SL o el TP.
intHistorialPedidosTotal();
// recuperar información del historial comercialint i,accTotal=Total de pedidos();
for(i=0;i<accTotal;i++)
{
//---- comprobar el resultado de la selección
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)
{
Print("Error al acceder a la base de datos del historial (",GetLastError(),"));
romper;
}
// trabajar con una orden...
}
cadenaOrderComment();
comentario de la cadena;if(OrderSelect(10,SELECT_BY_TICKET)==false)
{
Print("OrderSelect() ha devuelto un error ",GetLastError());
return(0);
}
comentario=OrderComment();
// ...
Gracias por la respuesta... Después de añadir el código de la funciónOrderComment,(MQL4Trading FunctionsReference) que devuelve el comentario de una orden seleccionada mediante la función OrdersHistoryTotal, el código queda así ... ¿Y no tenemos una función que rastrea los nuevos pedidos cerrados en el historial del terminal? "0 - primerísimo. accTotal-1 - último" - nos referimos a "primer cerrado" y "último cerrado" en el historial del terminal, ¿es por tiempo...? ¿lo he hecho bien?
¿pero no tenemos una función para seguir los nuevos pedidos cerrados en el historial del terminal?
No hay ninguno estándar.
string comment;
for(i=accTotal-1;i>=0;i++)
{
//---- check selection result
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)
{
Print("Ошибка при доступе к исторической базе (",GetLastError(),")");
break;
}
// работа с ордером ...
comment = OrderComment();
// Проверяем, есть ли в комментарии признак закрытия ордера по ТП или СЛ
}
No hay ninguno estándar.
string comment;
for(i=accTotal-1;i>=0;i++)
{
//---- check selection result
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)
{
Print("Ошибка при доступе к исторической базе (",GetLastError(),")");
break;
}
// работа с ордером ...
comment = OrderComment();
// Проверяем, есть ли в комментарии признак закрытия ордера по ТП или СЛ
}
Gracias... Te refieres a la función StringFind = Buscar una subcadena en una cadena.
);
Devuelve el número de posición en la cadena donde comienza la subcadena a buscar, o -1 si no se encuentra ninguna subcadena.
... o FunciónStringCompare-Compara dos cadenas...
Gracias... Te refieres a la función StringFind = Buscar una subcadena en una cadena.
);
Devuelve el número de posición en la cadena donde comienza la subcadena a buscar, o -1 si no se encuentra ninguna subcadena.
...
Correcto.
Gracias... el código pasará a tener el siguiente aspecto:
int i,accTotal=OrdersHistoryTotal();
int StringFind(string comment;
for(i=accTotal-1;i>=0;i++)
{
//---- check selection result
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)
{
Print("Ошибка при доступе к исторической базе (",GetLastError(),")");
break;
}
// работа с ордером ...
comment = OrderComment();
// Проверяем, есть ли в комментарии признак закрытия ордера по ТП или СЛ
}
string string_value, // строка, в которой ищем
string match_substring, // что ищем
int start_pos=0 // с какой позиции начинать поиск
);
Gracias... el código tendrá entonces la forma de:
int i,accTotal=OrdersHistoryTotal();
int StringFind(string comment;
for(i=accTotal-1;i>=0;i++)
{
//---- check selection result
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)
{
Print("Ошибка при доступе к исторической базе (",GetLastError(),")");
break;
}
// работа с ордером ...
comment = OrderComment();
// Проверяем, есть ли в комментарии признак закрытия ордера по ТП или СЛ
}
string string_value, // строка, в которой ищем
string match_substring, // что ищем
int start_pos=0 // с какой позиции начинать поиск
);
Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading
Preguntas de los principiantes
A1exPit, 2016.11.30 22:14
¿Puede decirme OrderSelect by SELECT_BY_POS qué orden 0 es la última colocada o la primera? Estoy probando en ambos sentidos y viceversa, pero el error modificar #0 sale volando.