[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 339

 
future >> :
Señores, todavía estoy agonizando con una pregunta. ¿Cómo se escribe lo siguiente? Si el precio a xx.xx del día actual es mayor que el precio a yy.yy del mismo día....entonces... necesito que estos precios se comparen cada día. No sé cómo evitar mencionar la fecha. Probado datetime Time 1=D'().().() 12:00 '; pero no funciona en tester. No escribe errores, pero al probarlo parece que esta vez los datos son ignorados.

Funciona así:

int time=iTime(NULL,PERIOD_D1,0)+60*(60*horas+minutos);

double price=iOpen(NULL,PERIOD_M1,iBarShift(NULL,PERIOD_M1,time));

 


Sigo exactamente este artículo, pero como dije arriba,

channel=ddeinit('MT4','BID'); - todo está bien, channel = 7.2920e-304 - la conexión está establecida

pero

rc = ddeadv(channel, 'EURUSD','disp(x)','x',[1 1]); - no pasa nada,

a pesar de que rc = 1.

Aunque parece que funciona en el artículo. ¿Qué ocurre?

 


¡Hola!

¿Podría decirme cómo llevar la cuenta de cuándo se cierra una operación con stop loss o con beneficios en el bucle?

¿Qué función hay que utilizar para hacerlo correctamente?

Gracias.

 
Klinskih писал(а) >>

¡Hola!

¿Podría decirme cómo llevar la cuenta de cuándo se cierra una operación con stop loss o con beneficios en el bucle?

¿Qué función hay que utilizar para hacerlo correctamente?

Gracias.

No hay ningún evento para cerrar órdenes en stop loss o take profit, pero se puede controlar la disponibilidad de las órdenes abiertas.

int OrdersTotal( )

Devuelve el número total de órdenes abiertas y pendientes.

bool OrderSelect( int index, int select, int pool= MODE_TRADES) 

La función selecciona una orden para su posterior procesamiento. Devuelve TRUE si la función se completa con éxito. Devuelve FALSE si la función falla. Para obtener la información sobre el error, es necesario llamar a la función GetLastError().
El parámetro pool se ignora si la orden se selecciona por el número de ticket. El número de ticket es un identificador único para el pedido. Para determinar de qué lista se selecciona una orden, debemos analizar su hora de cierre. Si la hora de cierre de la orden es 0, entonces la orden está abierta o pendiente y se toma de la lista de posiciones abiertas del terminal. Una posición abierta puede distinguirse de una orden pendiente por su tipo. Si la hora de cierre no es igual a 0, entonces la orden está cerrada o pendiente y ha sido seleccionada del historial del terminal. La distinción entre una orden cerrada y una orden pendiente eliminada también puede hacerse por tipo de orden.

También puede encontrar soluciones preparadas, por ejemplo de KimIV - https://www.mql5.com/ru/forum/107476/page2.

 
xeon >> :

No hay ningún evento para cerrar la orden en el momento de la parada o de la retirada, pero se puede controlar la disponibilidad de las órdenes abiertas

Devuelve la cantidad total de órdenes abiertas y pendientes.

Esta función selecciona una orden para trabajar con ella posteriormente. Devuelve TRUE si la función se completa con éxito. Devuelve FALSE si la función falla. Para obtener la información sobre el error, es necesario llamar a la función GetLastError().
El parámetro pool se ignora si la orden se selecciona por el número de ticket. El número de ticket es un identificador único para el pedido. Para determinar de qué lista se selecciona una orden, debemos analizar su hora de cierre. Si la hora de cierre de la orden es 0, entonces la orden está abierta o pendiente y se toma de la lista de posiciones abiertas del terminal. Una posición abierta puede distinguirse de una orden pendiente por su tipo. Si la hora de cierre no es igual a 0, entonces la orden está cerrada o pendiente y ha sido seleccionada del historial del terminal. La diferencia entre una orden cerrada y una orden pendiente eliminada también se puede hacer por el tipo de orden.

También puede ver implementaciones ya hechas, por ejemplo, de KimIV - https://www.mql5.com/ru/forum/107476/page2

Muchas gracias por la respuesta tan completa.

 
xeon >> :

No hay ningún evento para cerrar la orden en la parada o la retirada, pero puede controlar la disponibilidad de las órdenes abiertas

Devuelve la cantidad total de órdenes abiertas y pendientes.

Esta función selecciona una orden para trabajar con ella posteriormente. Devuelve TRUE si la función se completa con éxito. Devuelve FALSE si la función falla. Para obtener la información sobre el error, es necesario llamar a la función GetLastError().
El parámetro pool se ignora si la orden se selecciona por el número de ticket. El número de ticket es un identificador único para el pedido. Para determinar de qué lista se selecciona una orden, debemos analizar su hora de cierre. Si la hora de cierre de la orden es 0, entonces la orden está abierta o pendiente y se toma de la lista de posiciones abiertas del terminal. Una posición abierta puede distinguirse de una orden pendiente por su tipo. Si la hora de cierre no es igual a 0, entonces la orden está cerrada o pendiente y ha sido seleccionada del historial del terminal. La diferencia entre una orden cerrada y una orden pendiente eliminada también se puede hacer por el tipo de orden.

También puede ver implementaciones ya hechas, por ejemplo, de KimIV - https://www.mql5.com/ru/forum/107476/page2

Muchas gracias por la respuesta tan completa.

 
future >> :
Señores, todavía estoy agonizando con una pregunta. ¿Cómo se escribe lo siguiente? Si el precio a xx.xx del día actual es mayor que el precio a yy.yy del mismo día....entonces... necesito que estos precios se comparen cada día. No sé cómo evitar mencionar la fecha. Probado datetime Time 1=D'().().() 12:00 '; pero no funciona en tester. No escribe errores, pero al probarlo parece que esta vez los datos son ignorados.

Para el probador está bien.

int час=15; час2=20;
int мин=21; мин2=00;

if(Hour()> час-1&&Hour()< час+1&&Minute()> мин-1&&Minute()< мин+1)
double цена_инструмента=Bid;
if(Hour()> час2-1&&Hour()< час2+1&&Minute()> мин2-1&&Minute()< мин2+1)
double цена_инструмента2=Bid;

if( цена_инструмента> цена_инструмента2)....
if( цена_инструмента< цена_инструмента2)....
 

Hola.

¿Cómo puedo saber si se activa el SL o el TP? Por ejemplo, si una orden se cierra por

SL o TP, y luego ejecutar esto y aquello. No he encontrado dicha función.

 

Supongamos que se ha guardado un conjunto de indicadores en la plantilla y que ésta se ha cargado para un par de divisas.

- Después, ¿los indicadores de esta ventana tienen alguna relación con los parámetros guardados en la Plantilla o se vuelven completamente independientes?

 
chief2000 >> :

Supongamos que se ha guardado un conjunto de indicadores en la plantilla y que ésta se ha cargado para un par de divisas.

- ¿Los indicadores de esta ventana tienen alguna relación con los parámetros guardados en la Plantilla o son completamente independientes?


Los pares guardados se "introducen" en los indicadores una vez en la inicialización de la plantilla, luego "se vuelven completamente independientes".

Todos los parámetros modificados del indicador se guardan en la plantilla, si ha cambiado los parámetros del indicador, vuelva a guardar la plantilla.