Errores, fallos, preguntas - página 433

[Eliminado]  

Renat, si pudieras prestar atención a la solicitud #124661 en el SR.

Llevo esperando una respuesta desde el 13 de junio.

 
voix_kas:

Renat, si pudieras prestar atención a la solicitud #124661 en el SR.

Llevo esperando una respuesta desde el 13 de junio.

Así que se le ha dado la respuesta correcta muchas veces. Te he contestado de nuevo.

[Eliminado]  
Renat:

Así que te han dado la respuesta correcta más de una vez. Te respondí de nuevo.

No veo la respuesta en esta aplicación. El último comentario en él es el mío de 2011.06.21 09:25 (un recordatorio repetido de la relevancia de la pregunta).

Lo duplico aquí por si acaso:

¿Entiendo correctamente que el límite del volumen/lote mínimo de una operación/orden sólo es relevante para la apertura de una posición?
¿Se aplican a las operaciones/órdenes que dan lugar al cierre, al aumento, a la disminución o a la inversión de posiciones?
El límite de la operación mínima se aplica a los cinco (5) supuestos anteriores.
Parece que se describen todos los escenarios posibles. ¿O hay otros escenarios además de estos cinco (5)?

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства сделок
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства сделок
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства сделок - Документация по MQL5
 

Se le ha contestado dos veces, y luego he contestado yo.

Vuelvo a responder: sí, los cierres totales no están cubiertos por la norma de límite de volumen.

 
papaklass:
¿Estamos hablando de aumentar la velocidad de MQL5?
Sí, la optimización del código significa exactamente eso.
[Eliminado]  
Renat:

Te han contestado dos veces, y luego yo he contestado.
Vuelvo a responder: sí, los cierres completos no están sujetos a la regla del límite de volumen.

Renat, no me malinterpretes. Repito mi pregunta no para mimar, sino para aclararla.
Hasta ahora tu respuesta y la de tus compañeros (en la SD) cubre 2 (dos) escenarios: 1) apertura de una posición y 2) cierre completo de una posición (probablemente con ORDER_FILLING_AON obligatorio).
La ejecución de una orden (operación) puede dar lugar al menos a otros tres ( 3) escenarios: aumentar, disminuir o invertir una posición.
Lamentablemente, no encuentro ninguna explicación clara de estos tres escenarios en las respuestas de MQ. :(

Para mayor claridad, he aquí algunos ejemplos(en todos los casos en el servidor, lote mínimo = 1,0; paso mínimo = 0,1):

Ejemplo #1 (acortamiento de la posición).
Tenemos una posición larga de 1,0. Estamos tratando de cerrar completamente la posición (usando ORDER_FILLING_CANCEL). Enviamos una orden de venta de 1.0 lote. La orden se ejecuta parcialmente (0,9 lotes).
El resultado es que hay una posición larga abierta de 0,1 lotes. Por lo tanto, podemos concluir que el requisito de volumen de lote mínimo no se aplica al escenario de reducción de posiciones.

Ejemplo 2 (inversión de la posición).
Tenemos una posición larga de 0,1 lotes. Envío una orden de venta al servidor por el volumen de 0,2 lotes. ¿Aceptará el servidor este pedido? (Los requisitos de lote mínimo no se cumplen de nuevo).

Ejemplo 3 (aumento de posición).
Tenemos una posición larga de 0,1 lotes. Envío al servidor una orden de compra de 0,1 lotes.

 
voix_kas:


Para ilustrarlo, he aquí algunos ejemplos(en todos los casos el lote mínimo = 1,0; el paso mínimo = 0,1):

Ejemplo 1 (posición corta).
Tenemos una posición larga de 1,0 lotes. Estamos tratando de cerrar completamente la posición (usando ORDER_FILLING_CANCEL). Enviamos una orden de venta en el volumen de 1.0 lote. La orden se ejecuta parcialmente (0,9 lotes).
El resultado es que hay una posición larga abierta de 0,1 lotes. Por lo tanto, podemos concluir que el requisito de volumen de lote mínimo no se aplica al escenario de reducción de posiciones.

Si la posición se cierra parcialmente a 0,9 (con una orden a 1,0), entonces tendremos que enviar otra orden para cerrar el saldo a 0,1.

Y si la orden se ejecuta a través de una pasarela externa, hay una alta probabilidad de que sólo cierren todo el volumen de 1.0 lotes de una vez, no permitiéndonos dividirlo.

Ejemplo 2 (inversión de la posición).

Tenemos una posición larga de 0,1 lotes. Envío una orden de venta al servidor por el volumen de 0,2 lotes. ¿Acepta el servidor este pedido? (Los requisitos de lote mínimo no se cumplen de nuevo).

No se trata de una operación de liquidación total de cero, por lo que la solicitud será rechazada.


Ejemplo 3 (aumento del volumen de posiciones).
Tengo una posición larga de 0,1 lotes. Envío una orden de compra al servidor por el volumen de 0,1 lotes. ¿El ejemplo del servidor de tal orden?

Por supuesto que no.

Por favor, lee las normas literalmente y no intentes inventarte tus propias condiciones. La regla es simple "la regla del límite de volumen no puede aplicarse cuando una posición se liquida a CERO". Esta regla ha sido expresada muchas veces.


También hay que tener en cuenta que cualquier corredor o cualquier puerta de cambio puede utilizar sus propias reglas de control de volumen, más estrictas.

[Eliminado]  
Ya veo. Gracias por la aclaración.
 
IlyaBukalov:

El número máximo de líneas entre las que se resaltan los corchetes de apertura/cierre es de 128. Esta limitación se introdujo porque no tiene sentido destacar paréntesis de apertura y cierre que no caben en una pantalla. Además, tras la introducción de esta restricción, el rendimiento de MetaEditor aumentó considerablemente.

Es muy incómodo cuando un paréntesis no se resalta después de 128 líneas, a menudo hay que desplazarse por dos o tres pantallas para encontrar dónde se cierra el paréntesis.
 
voix_kas:

No es una pregunta crucial, pero aún así. Concatenación de cadenas. La documentación describe dos funciones StringAdd y StringConcatenate.

...

Resultado:

2011.06.26 19:10:55 test (EURUSD,H1)№1 2012 milisegundos, i = 10000000
2011.06.26 19:11:04 test (EURUSD,H1)#2 8269 milisegundos, i = 10000000
2011.06.26 19:11:10 test (EURUSD,H1)#3 6661 milisegundos, i = 10000000

Pero resulta que la suma normal es más rápida.

Este ejemplo es incorrecto.

En el primer método debería ser "resultado = resultado + cadena1 + cadena2 + cadena3;"

También haría un resultado diferente para las 3 pruebas, de lo contrario no se iniciarán en igualdad de condiciones (parte de la memoria ya está asignada).

Mejor aún: ponga las pruebas en diferentes scripts y ejecútelas de forma secuencial.


Lo tengo así:

1. longitud = 10`000

2011.06.27 02:43:07 sStingTest (EURUSD,M1) №1 2542 milisegundos, i = 10000
2011.06.27 02:43:05 sStingTest (EURUSD,M1) #2 0 milisegundos, i = 10000
2011.06.27 02:43:05 sStingTest (EURUSD,M1) #3 0 milisegundos, i = 10000


2. longitud = 100`000

2011.06.27 02:37:40 sStingTest (EURUSD,M1) #2 47 milisegundos, i = 1000000

2011.06.27 02:37:39 sStingTest (EURUSD,M1) #3 15 milisegundos, i = 1000000

Finish #1 - no esperó


3. longitud = 1`000`000

2011.06.27 02:37:40 sStingTest (EURUSD,M1) #2 780 milisegundos, i = 1000000

2011.06.27 02:37:39 sStingTest (EURUSD,M1) #3 187 milisegundos, i = 1000000

El final de # 1 no se produjo.


4. longitud = 10`000`000

2011.06.27 02:48:14 sStingTest (EURUSD,M1) #3 1903 milisegundos, i = 10000000

Error "MemoryException: 602492946 bytes not available" iniciado en la segunda prueba.


Conclusión: StringConcatenate es el más rápido.


Por cierto, la función StringAdd también tiene un ejemplo de comparación no muy correcto.

Mi código para probarlo está en el trailer.

Archivos adjuntos: