[ARCHIVO]Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No puedo ir a ningún sitio sin ti - 5. - página 343

 
hoz:

Hay una pila de órdenes pendientes en ambos lados. Si alguna de las órdenes pendientes se activa, entonces en el otro lado se elimina la orden pendiente más externa. En la captura de pantalla mostré lo que sucede si se activa una orden de compra y se elimina la orden corta más externa.

Lo he hecho si una posición se ha disparado. ¿Pero qué pasa si no uno sino 3 se disparan a la vez? Es decir, debería estimar de alguna manera el número de órdenes pendientes disparadas y cerrar las órdenes pendientes de la señal contraria.

¿Cuál es la mejor manera de hacerlo? ¿Quizá alguien ya ha puesto en práctica este punto? No me he decidido a publicar esta pregunta en una rama separada. Tal vez, sea muy sencillo para los que entienden mejor este punto.

Si necesitáramos eliminar sólo la posición más baja, podríamos encontrar una posición abierta al precio más bajo y eliminarla en el bucle, pero si hay varias posiciones, ¿qué debemos hacer? Me gustaría conocer la opinión de quienes ya tienen experiencia con las parrillas de pedidos.

Víctor, cuando se borra el de abajo, el siguiente, que se ha convertido en el de abajo, también se borrará por la misma condición. Rápido para ti, y lo principal para el programa es no estar en la misma garrapata, ¡pero está bien! Pruébalo.
 

Una pregunta: ¿alguien ha probado la velocidad del comprobador MT-5 en diferentes procesadores?

Si es así, por favor, dame un enlace. O al menos dime cuál de los mejores procesadores de AMD e INTEL es mejor en términos de velocidad.

Por supuesto, estamos hablando de ordenadores de sobremesa, no de portátiles o supercomputadoras. :-)

 
DruZhban:

Una pregunta: ¿alguien ha probado la velocidad del comprobador MT-5 en diferentes procesadores?

Si es así, por favor, dame un enlace. O al menos dime cuál de los mejores procesadores de AMD e INTEL es mejor en términos de velocidad.

Por supuesto, estamos hablando de ordenadores de sobremesa, no de portátiles o supercomputadoras. :-)


todo en cinco está aquí :https://www.mql5.com/ru/forum
 
borilunad:
Victor, cuando se borre el más bajo, se borrará el siguiente que se haya convertido en el más bajo por la misma condición. La rapidez es para ti, y lo más importante para el programa es no estar en el mismo tic, ¡pero esto está bien! Pruébalo.


Boris, es comprensible. Estaba pensando en esto. Supongo que hay que hacer un bucle de 0 a una variable que almacene el valor de las órdenes disparadas y en cada pasada del bucle ejecutar la función de encontrar la orden requerida y luego cerrarla. No estoy seguro de cómo arreglar que este procedimiento se ejecute en el momento actual.

Por cierto, sería mejor buscar las órdenes más extremas utilizando la función de búsqueda estándar y luego pasar los valores de la hora de apertura de la orden y el precio a la función de cierre de las órdenes, ¿no?

 
hoz:

Hay una pila de órdenes pendientes en ambos lados. Si alguna de las órdenes pendientes se activa, entonces en el otro lado se elimina la orden pendiente más externa. En la captura de pantalla mostré lo que sucede si se activa una orden de compra y se elimina la orden corta más externa.

Lo he hecho si una posición se ha disparado. ¿Pero qué pasa si no uno sino 3 se disparan a la vez? Es decir, debería estimar de alguna manera el número de órdenes pendientes disparadas y cerrar las órdenes pendientes de la señal contraria.

¿Cuál es la mejor manera de hacerlo? ¿Quizá alguien ya ha puesto en práctica este punto? No me he decidido a publicar esta pregunta en una rama separada. Tal vez, sea muy sencillo para los que entienden mejor este punto.

Si necesitáramos eliminar sólo la posición más baja, podríamos encontrar una posición abierta al precio más bajo y eliminarla en el bucle, pero si hay varias posiciones, ¿qué debemos hacer? Bueno, me gustaría conocer la opinión de aquellos que tienen experiencia en el manejo de las parrillas de pedidos


Si no me equivoco, estoy tratando de hacer un buen movimiento con la ayuda de algunos pares de órdenes pendientes.

algoritmo de eliminación :

1) buscar en la lista de posiciones abiertas y escribir (recordar) sus ranuras.

2) buscar en la lista de órdenes pendientes establecidas y comprobar si hay una "lenta" coincidente de la lista de poses, si coinciden - eliminar la orden pendiente.

Y no más dolor.

Por ejemplo, si eres un viejo programador, o no sabes nada de codificación, o está muy de moda hacerlo todo de otra manera... ??? а ?

 
Aquí están los indicadores de origen, por favor, ayudar con la salida de los valores (por ejemplo, a través del comentario) (en números) igual al precio de cada indicador en tiempo real (sé icustom, pero no puedo entender lo que los parámetros que necesita para especificar para ser outputted valores exactos, entonces la salida 0, entonces el número es mayor que 2m).
Archivos adjuntos:
zigzag.zip  4 kb
 
DruZhban:

Una pregunta: ¿alguien ha probado la velocidad del comprobador MT-5 en diferentes procesadores?

Si es así, por favor, dame un enlace. O al menos dime cuál de los mejores procesadores de AMD e INTEL es mejor en términos de velocidad.

Por supuesto, estamos hablando de ordenadores de sobremesa, no de portátiles o supercomputadoras. :-)



En un 5 usa las nubes para las pruebas y olvídate de tu procesador, aunque sea multinúcleo y rápido. Realmente lo acelera muchas veces. Pero tendrás que pagar un céntimo. De hecho, ha habido una discusión aquí en algún momento
 

¡Buenos días a todos!

Mi pregunta parece sencilla, pero he buscado en todos los artículos, pero no he podido encontrar una respuesta: ¿cómo funciona el operador return(-1)? ¿A dónde pasa el control? En este código, por ejemplo:

int start()
{
    //---- Запоминаем значения индикатора для дальнейшего анализа
    //---- Обратите внимание - используем 1-й и 2-й бары. Это даёт задержку в 1 бар 
    //---- (т.е. сигнал появится позже), но защищает от многочисленных открытий и закрытий
    //---- позиций в течении бара
    double MACD_1 = iMACD( Symbol(), 0, 12, 26, 9, PRICE_CLOSE, MODE_MAIN, 1 );
    double MACD_2 = iMACD( Symbol(), 0, 12, 26, 9, PRICE_CLOSE, MODE_MAIN, 2 );
 
    int _GetLastError = 0, _OrdersTotal = OrdersTotal();
    //---- перебираем все открытые позиции
    for ( int z = _OrdersTotal - 1; z >= 0; z -- )
    {
        //---- если при выборе позиции возникла ошибка, переходим к следующей
        if ( !OrderSelect( z, SELECT_BY_POS ) )
        {
            _GetLastError = GetLastError();
            Print( "OrderSelect( ", z, ", SELECT_BY_POS ) - Error #", _GetLastError );
            continue;
        }
 
        //---- если позиция открыта не по текущему инструменту, пропускаем её
        if ( OrderSymbol() != Symbol() ) continue;
 
        //---- если MagicNumber не равен _MagicNumber, пропускаем эту позицию
        if ( OrderMagicNumber() != _MagicNumber ) continue;
 
        //---- если открыта БАЙ-позиция,
        if ( OrderType() == OP_BUY )
        {
            //---- если МАКД пересёк 0-ю линию вниз,
            if ( NormalizeDouble( MACD_1, Digits + 1 ) <  0.0 && 
                  NormalizeDouble( MACD_2, Digits + 1 ) >= 0.0    )
            {
                //---- закрываем позицию
                if ( !OrderClose( OrderTicket(), OrderLots(), Bid, 5, Green ) )
                {
                    _GetLastError = GetLastError();
                    Alert( "Ошибка OrderClose № ", _GetLastError );
                    return(-1);
                }
            }
            //---- если сигнал не изменился, выходим - пока рано открывать новую позицию 

si no return(0);

Con el cero entre paréntesis y sin paréntesis todo parece claro. ¿Pero qué pasa con (-1)?

Gracias por responder. :)

 
hoz:


Boris, eso tiene sentido. Estaba pensando en esto. Creo que deberíamos hacer un bucle desde 0 hasta una variable que almacene el valor de las órdenes activadas y ejecutar la función que busca la orden requerida y luego la cierra en cada iteración del bucle. Pero no estoy muy seguro de cómo solucionar que este procedimiento se ejecute actualmente.

Y, por cierto, es mejor buscar las órdenes más extremas utilizando la función de búsqueda estándar, y luego el valor del tiempo abierto y el precio se pasan a la función para cerrar las órdenes, ¿verdad?

Víctor, me refiero a que cuando se borra la orden pendiente, ya está en el historial y cuando se abre otra posición, también se borra otra orden pendiente por la misma condición porque ¡se comprueba las posiciones que tenemos! Y cómo funciona, ¡mira los registros! Entonces verás si está bien o mal.
 
Hola a todos. Este es un asunto serio y urgente y he buscado por todo Internet, como dicen... Me decidí a usar MT4 por mucho tiempo, lo he estado usando por 3 días. Intenté usarlo durante un tiempo y me pareció que era la primera vez y no entendía lo que pasaba. Pensé, no es nada grave, pero de repente voy a MT y veo 4 gráficos H4 con un nuevo sistema y veo el precio equivocado, lo comparo con el StartFX 2, abro time frame H1 y D1 y espero... Llevo una hora esperando que se actualice año a año, pero no lo hace. "Bueno, reinstálalo y ya está" - me dices, y yo te digo "a la mierda". "Así que descárgate un indicador de alguna actualización de software de quién sabe qué sitio" - me preguntas y te digo "a la mierda dos veces". Realmente quiero seguir ganando dinero y estrangular la ayuda informática con 1 y luego ya veremos :-)