Preguntas de los principiantes MQL4 MT4 MetaTrader 4 - página 20

 
Vitalie Postolache:
Una vez más. OrderSelect debe ser lo primero cuando se trabaja con un pedido. Luego todo lo demás.
Gracias por la respuesta... ¿Está diciendo que la línea if(OrderSelect(i=0;i<accTotal;i++)==true) no está escrita correctamente o está en el lugar equivocado del código?
 
bablusut:
Gracias por la respuesta... ¿Está diciendo que la línea if(OrderSelect(i=0;i<accTotal;i++)==true) no está escrita correctamente, o en el lugar equivocado del código? ...
He añadido detalles allí.
 

Renat Akhtyamov:
по ссылке пройдите, она у Вас в посте выделена.

Ya lo he mirado. No tiene la información necesaria. Valor de 10 dígitos en el buffer vacío y valor del precio cuando hay una señal... ¿Cómo denota el código mql4 la ausencia o presencia de un valor en el buffer? (Lo he usado más de una vez, pero lo he olvidado...)

if( iCustom(NULL,t, "T...c",1,b) != .......).....

 

atik441:уже смотрел. нет там нужной информации .в пустом буфере 10и значное значение  а при наличии сигнала - значение цены... и как в коде mql4 обозначается отсутствие или наличие значения в буфере ? (пользовался не раз ,да забыл ...) 

if( iCustom(NULL,t, "T...c",1,b) != EMPTY_VALUE).....
 
Vitalie Postolache:
if( iCustom(NULL,t, "T...c",1,b) != EMPTY_VALUE).....Lo que necesitamos... Gracias por el recordatorio.
 

Ayuda a la comprensión. ¿Es posible ejecutar órdenes de forma secuencial si dos órdenes de diferente dirección

las operaciones abiertas activan primero el TP de cualquiera de las operaciones, y luego sólo el SL, aunque en el proceso de negociación el nivel de SL

¿alguno de los oficios fue aprobado primero?

 
ganri:

Ayuda a la comprensión. ¿Es posible ejecutar órdenes de forma secuencial si dos órdenes de diferente dirección

las operaciones abiertas activan primero el TP de cualquiera de las operaciones, y luego sólo el SL, aunque en el proceso de negociación el nivel de SL

¿alguno de los oficios fue aprobado primero?

analizar asc/bid
 
Vitalie Postolache:

Una vez más. OrderSelect debe ser lo primero cuando se trabaja con un pedido. Y luego todo lo demás.

Si estamos trabajando en un bucle de evaluación de orden, entonces el orden de las acciones es

1. Comprobación if(OrderSelect())

2. Para comprobar si es la orden correcta, normalmente se comprueba el símbolo y el número mágico, y luego se comprueba el tipo if(OrderSymbol()==_Symbol && OrderMagicNumber()==Magic && OrderType()<2) - en este caso sólo se procesan las órdenes de mercado colocadas para el símbolo actual y con el número mágico especificado

Procesamiento de otros datos como OrderComment(), OrderProfit(), etc.

Sería algo así:

for(int i=OrdersHistoryTotal()-1; i>=0; i--) //перебираем историю торгов
{
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) //если ордер выбран то работаем дальше, иначе смысла нет
      {
         if(OrderSymbol()==_Symbol && OrderMagicNumber()==Magic && OrderType()<2) //Если ордер тот, что нам нужен (эту проверку можно и опустить, если нужно обработать все ордера в истории)
         {
            if(StringFind(OrderComment(),"[tp]",0)>-1) //если найден признак закрытия профитом
            Print("Order #",OrderTicket()," profit: ", OrderTakeProfit());
            if(StringFind(OrderComment(),"[sl]",0)>-1) //если найден признак закрытия стоплосс
            Print("Order #",OrderTicket()," loss: "OrderTakeProfit());
         }
      }
}

Gracias por su 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--) // - aquí está la pregunta, ¿qué significa "accTotal"en la plantilla de la función, que hemos descartado? y ¿por qué ha tomado "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, tiene 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 tome cierta cantidad de los últimos pedidos, por ejemplo, 5-10, y no todos?

- Las últimas cuatro líneas son bastante claras, la única pregunta es sobre la función PlaySound, cuyo código debe ser insertado después de cada línea"Print(". .." de lasiguiente forma:

bool PlaySound(

cadena // nombre del archivo

);

... ¿O también se convierte de alguna manera?

 
bablusut:

Lee sobre los bucles, cómo están limitados y cómo funcionan, y en general, sería bueno leer un libro de texto sobre C++ para principiantes, C++ es muy similar a MQL, la única diferencia está en las funciones de comercio.

Y también deberías leer el tutorial de MQL y la ayuda en el compilador. Los artículos del foro están en el borde superior de la ventana con fondo azul. No se puede volver a contar y explicar todo el curso en el foro.

Учебник по MQL4
Учебник по MQL4
  • book.mql4.com
Учебник по MQL4
 
Vitalie Postolache:

Lee sobre los bucles, cómo están limitados y cómo funcionan, y en general, sería bueno leer un libro de texto sobre C++ para principiantes, C++ es muy similar a MQL, la única diferencia está en las funciones de comercio.

Y también deberías leer el tutorial de MQL y la ayuda en el compilador. Los artículos del foro están en el borde superior de la ventana con fondo azul. No se puede volver a contar y explicar todo el curso en el foro.

GraciasVitalie Postolache por tu ayuda y consejos, y es demasiado tarde para leer todos los libros de texto al cumplir seis años, no podré estudiar tanto, debería haberlo hecho antes pero no tuve tiempo. Te estoy aburriendo mucho aquí, lo siento, no te molestaré más.
Razón de la queja: