[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No podría ir a ningún sitio sin ti - 2. - página 176

 
eddy:
¿Cómo se define el último pedido? Por tiempo. Bien, mira en el código para ver qué pedido es el más reciente por tiempo


Ya lo he resuelto por mi cuenta. Pero sigo sin entender tu último consejo. ¿Es posible sacar todos los pedidos y ver cuál fue el último en el tiempo? Entonces, ¿quieres sacar todos los pedidos y comparar las horas de cierre de todos los pedidos? Muéstrame el código para hacer esto.

Yo lo he resuelto así:

int z;
int _bar;

int inicio()

{

z=TotalOrdersHistory()-1;
OrderSelect(z,SELECT_BY_POS,MODE_HISTORY);
if(TimeCurrent() - OrderCloseTime() > 1& TimeCurrent() - OrderCloseTime() < 7)
{
if(OrderProfit()> 0)
PlaySound("profit.
wav");
if(OrderProfit()== 0)
PlaySound("zero.wav");
if(OrderProfit()< 0)
PlaySound("loss.wav");
}

Resulta que si se sustituye z por 1, se seleccionará el pedido más antiguo, que lógicamente es el más reciente, así que tomé OrdersHistoryTotal() (devuelve el número de pedidos en el historial) y lo sustituí en lugar del índice. Sin embargo, resulta que OrdersHistoryTotal() devuelve 1 más de lo que realmente es. Mi historial ha tenido 6 pedidos, pero OrdersHistoryTotal() devuelve 7 pedidos. Por lo tanto, escribí z=OrdersHistoryTotal()-1;. Pero no sabía antes qué usar en el índice para seleccionar el último. Tuve que descubrirlo yo mismo porque nadie me dijo nada.

 
Reaktiv:

if(TimeCurrent() - OrderCloseTime() > 1& TimeCurrent() - OrderCloseTime() < 7)

Esto es fundamentalmente erróneo y no siempre funcionará ni siquiera en el probador.
 
sergeev:
es fundamentalmente errónea, y no siempre funcionará ni siquiera en un probador.

Así que, por favor, muéstrame cómo hacerlo bien. Ya sabes, hay un montón de ejemplos en el libro de texto que no existen.
 
Reaktiv:

Así que, por favor, muéstrame cómo hacerlo correctamente, porque tú sabes qué ejemplos faltan en el libro de texto.

cualquier solución depende de los objetivos fijados.

Si quieres encontrar la última orden en el historial es una cosa, pero si quieres determinar cómo se cerró la última orden de tu EA, es otra cosa.

 
sergeev:

cualquier solución depende de los objetivos que te propongas.

Si quieres encontrar la última orden en el historial es una cosa, pero si sólo das cómo se cerró la última orden de tu EA, es otra.


Quiero que la música empiece a sonar después de que se cierre la orden y dependiendo de cuál sea la ganancia, la música sonará. En mi ejemplo quería que se reprodujera si han pasado de 1 a 7 segundos desde que se cerró la orden.
 

entonces el esquema debería ser el siguiente

1. En el momento de un OrderSend exitoso debe recordar el ticket del pedido(GlobalVariableSet)

2. En cada tick, comprueba el ticket de esta orden recordada(GlobalVariableGet) para el cierre(OrderCloseTime)

Si la orden se cierra, entonces da un sonido apropiado para el beneficio y borra el Ticket memorizado(GlobalVariableDel)

4. Si todavía quiere comprobar entre 1 y 7 segundos, puede incluir esta comprobación en el análisis, pero debe recordar que los ticks pueden venir con un retraso de 10 segundos o más, y se perderá la señal.

 
sergeev:

entonces el esquema debería ser el siguiente

1. En el momento de un OrderSend exitoso debe recordar el ticket del pedido(GlobalVariableSet)

2. En cada tick, comprueba el ticket de esta orden recordada(GlobalVariableGet) para el cierre(OrderCloseTime)

Si la orden se cierra, entonces da un sonido apropiado para el beneficio y borra el Ticket memorizado(GlobalVariableDel)

4. Si todavía quiere comprobar entre 1 y 7 segundos, entonces esta comprobación se puede incluir en el análisis, pero no olvide que los ticks pueden venir con un retraso de 10 segundos o más, y se perderá la señal.



Entonces, ¿el OrderSend debe ser enviado por el EA o da igual? El sistema se basa en que yo mismo abro los tratos manualmente. El Asesor Experto modifica la orden después de abrirla (pone stops) y luego pone música cuando cierra una posición. En cuanto a los ticks que pueden tener 10 segundos de retraso, lo entiendo. No voy a usar EA en un momento como este. Yo uso mi EA en EUROBAX desde las 9 de la mañana hasta las 18 de la tarde, donde ese retraso es poco probable.
 
Reaktiv:

Y el propio asesor modifica la orden (pone stops) cuando se abre la operación

Entonces, en su caso, este punto será el punto en el que se tome el ticket de pedido.
 
sergeev:
entonces en su caso este es el punto en el que se toma el ticket de pedido.

gracias
 
Reaktiv:
Quería que la música se reprodujera si han pasado de 1 a 7 segundos desde que se cerró la orden.
¿Por qué? Puedes poner música una vez que el pedido se haya cerrado
Razón de la queja: