[ARCHIVO] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 3. - página 5

 
Roman.:

¿No se descarta la opción de que la primera orden se convierta en una orden de mercado y, como consecuencia, no se pueda eliminar con este ciclo en las órdenes limitadas?

Estoy realizando una visualización. En el momento en que la orden debería ser eliminada, sigue pendiente. Sé cómo establecer el número mágico pero no puedo eliminar la primera de las dos órdenes pendientes.
 
Roman.:

Al parecer, para eso - unos pocos puestos más arriba :-))) - "La forma más fácil de determinar qué orden de dos cerrar es por el número mágico. Asigne números diferentes cuando los configure. El ejemplo que has mostrado arriba carece de esta comprobación. También en lugar de ticket escriba OrderTicket()."

OrderTicket() probablemente obtendrá el ticket del último pedido pendiente, yo necesito el penúltimo.
 
Andreev:

OrderTicket() probablemente obtendrá un ticket del último pedido pendiente, y yo necesito el penúltimo.

Si está colocando dos órdenes pendientes, probablemente sea más fácil dar a la primera un 1 y a la segunda un 2. ))

Entonces, tanto usted como el Asesor Experto no se confundirán con los números.

 

alex12, ya es bueno empezar a escribir algo. Muchos errores, pero aún así no está mal.

1. Ambos errores de compilación se deben a que en el mismo start() defines dos veces las variables locales SL y TP. Debe definirlos una vez dentro de la función, de lo contrario obtendrá un error.

Elimine el tipo double en el segundo cálculo de ambas variables y el error desaparecerá. Pero eso no es todo.

2. ¿Está seguro de que necesita variables externas globales con los mismos nombres? El problema es que la variable SL definida dentro de la función es diferente a la variable global con el mismo nombre. Si quieres que sea exactamente la misma variable que la externa (extern), quita el doble en todas partes.

3. La condición if() suele ser una condición lógica, aunque los cálculos simples no están prohibidos por la sintaxis. Y no tienes una condición lógica.

Practique primero con programas sencillos, como cálculos con salida. Entonces entenderás la sintaxis.

 
Andreev:

OrderTicket() probablemente obtendrá el ticket del último pedido pendiente, y yo necesito el penúltimo.

Es necesario recordar la hora en que se realizó la orden y luego comparar el tiempo en el bucle y eliminar la orden más antigua, por lo que - comprobar aquí y conectarlo a su EA.
 
Mathemat:

alex12, ya es bueno empezar a escribir algo. Muchos errores, pero aún así no está mal.

1. Ambos errores de compilación se deben a que en el mismo start() defines dos veces las variables locales SL y TP. Debe definirlos una vez dentro de la función, de lo contrario se producirá un error.

Elimina el tipo double en el segundo cálculo de ambas variables y el error desaparecerá. Pero esto no es todo.

2. ¿Está seguro de que necesita variables externas globales con los mismos nombres? El problema es que la variable SL definida dentro de la función es diferente a la variable global con el mismo nombre. Si quieres que sea exactamente la misma variable que la externa (extern), quita el doble en todas partes.

3. La condición if() suele ser una condición lógica, aunque los cálculos simples no están prohibidos por la sintaxis. Y simplemente no tiene una condición lógica.

Practica primero con programas sencillos, como cálculos con impresión. Entonces entenderás la sintaxis.

Muchas gracias.
 
Roman.:

Memorizas el tiempo de colocación de las órdenes, luego también en el ciclo comparas el tiempo - elimina el más antiguo, así - mira aquí y conéctalo con tu EA.

Gracias por el enlace. Lo estudiaré :) Tengo una buena idea con el tiempo, así como con el número mágico y el tipo de pedido (bylimit o selllimit). Pero probablemente no me hayas entendido bien. Mi problema no es marcar la orden, sino CÓMO QUITARLA. Sólo puedo eliminar la última orden pendiente sin importar cómo defina la penúltima orden.
 

Andreev:

¡¡¡Gracias por el enlace!!! Lo investigaré :) Con el tiempo, así como el número de magik y por el tipo de orden (bylimit o selllimit) - buena idea. Pero probablemente no me hayas entendido bien. Mi problema no es marcar la orden, sino CÓMO QUITARLA. Sólo puedo eliminar la última orden pendiente, independientemente de cómo defina la penúltima.


Si sigue al menos uno de los consejos que se le ofrecen (mago, tipo, tiempo de ajuste), no tendrá problemas para borrar exactamente la orden que implica su estrategia comercial. ))

Utilice dos criterios en su selección, por ejemplo, tiempo de instalación y tipo o tipo y magik.

 
Andreev:

¡¡¡Gracias por el enlace!!! Lo investigaré :) Con el tiempo, así como el número mágico y por tipo de orden (por límite o por límite de venta) es una buena idea. Pero probablemente no me hayas entendido bien. Mi problema no es marcar la orden, sino CÓMO QUITARLA. Sólo puedo eliminar la última orden pendiente, independientemente de cómo defina la penúltima orden.

Estoy corrigiendo mi código de acuerdo con sus términos - lo publicaré aquí ahora.
 
Andreev:

OrderTicket() probablemente obtendrá un ticket del último pedido pendiente, y yo necesito el penúltimo.


Recalcular con cada tick el número de órdenes pendientes.

Si hay menos, significa que una orden pendiente se ha convertido en una orden de mercado.

Todas las restantes (que se han vuelto innecesarias) pueden ser eliminadas.