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

 
rigonich:


Esto no es una función, sino una forma de comparar números no normalizados. No pueden compararse entre sí, pero el resultado de restar uno del otro puede compararse con cero.

Y mi cheque es así:

Lo dices bien, pero lo haces "a tu manera"... Y es más literaria (todavía):

//+------------------------------------------------------------------+ 
 double ND(double nd){return(NormalizeDouble(nd,Digits));}
//+------------------------------------------------------------------+ 
if (ND (price - OrderOpenPrice()) != 0.0 || ND (SL - OrderStopLoss()) != 0.0 || ND (TP - OrderTakeProfit()) != 0.0 || Expiration != OrderExpiration())
{OrderModify( int ticket, double price, double stoploss, double takeprofit, datetime expiration, color arrow_color=CLR_NONE);}

...aunque no estoy de acuerdo con todas las condiciones de comparación. Puede consultar las condiciones aquí.

 
rigonich:

Intenta compilar y lo descubrirás.

sí... sólo tienes que abrir estos archivos mqh con 4Editor...
 
Desead:

Necesidad de normalizar el gráfico de precios, cualquier par de divisas de su elección. Lo necesito para un indicador. He probado a dividir el valor actual por el anterior - obtengo una especie de oscilación alrededor de 1. Se me ha ocurrido que debo convertir el gráfico de valores absolutos a relativos, es decir, en este caso podré ver el cambio porcentual de la cotización. Se ha puesto en práctica. Ya es mejor y prácticamente lo que necesitamos. Sin embargo, mi deseo final es normalizar las cotizaciones en el rango [0:1] .Por cierto, aquí está lo que necesito pero en burgués - me gustaría lo mismo en ruso: http://people.revoledu.com/kardi/tutorial/Similarity/Normalization.html

Ya me he cansado de pelearme con esto. No puedo borrar todos los pedidos pendientes normalmente, no le cojo el tranquillo:

Incluso he añadido al bucle FOR WHILE que los pedidos borrados siguen ahí, pero todavía no los he borrado. Tengo muchas órdenes pendientes de eliminar, es decir, unas 20, ¿puede ser que sea algo complicado?


Parece que se ha solucionado el problema de la eliminación de los pedidos. Utilizo una función separada para contar el número de órdenes "necesarias" (para ser eliminadas), Total, llamo a esta función y al while con una condición (Total>0), entonces el ciclo de eliminación para (int i=Total-1 ;i<=0l; i--), de nuevo f-tipo de"necesarias", contador de intentos de eliminación con salida delwhile cuando se alcanza el nivel dado. De este modo, se eliminan todos ellos.
 
TarasBY:

Aquí hay un ejemplo de borrado de órdenes, incluyendo las pendientes (yo borré con esta):

No todas las órdenes pendientes están presentes en su código (en el filtro de selección). Otra variante de error: compruebe el Magick que reciben las órdenes pendientes cuando se abren (en su propio código).

Gracias por su respuesta. No necesito todas las órdenes pendientes, solo bylimit y selllimit y las pongo solo, el magik es el mismo en todas partes. Si no puedo resolver el problema con mis propios esfuerzos, tengo que buscar en sus scripts, no puedo hacerlo de otra manera, simplemente no lo borrará.

Estaba pensando en algo. He configurado la eliminación de todos los robots pendientes en un solo lugar: cuando descargue mi robot, se colocará en deinit. ¿Quizás esta sección tiene algún tipo de límite de tiempo? Cuando borro sólo unos pocos pedidos, todo va bien, pero cuando descargo una parrilla entera, entonces qué demonios pasa, siempre queda una docena de pedidos y no hay opción de limpiarla manualmente.

 
rigonich:

Hurra, parece que he resuelto el problema de la eliminación de los pedidos. He calculado el número de órdenes "necesarias" (a eliminar) en una función separada, llamada esta función, luego while con una condición (Total>0), luego el ciclo de eliminación for(int i=Total-1 ;i<=0l; i--), de nuevo, la función de contar las "necesarias", contador de intentos de eliminación con la salida dewhile cuando se alcanza el nivel especificado. De esta manera se borra todo.
Por cierto, esta es una buena alternativa, que este mientras siga corriendo su bucle hasta el fin del mundo, gracias, lo probaré ahora.
 

es necesario insertar los términos TIENEN una operación abierta (una, sin mayores) en una fila, por ejemplo, con un cruce de medias.

encontró esto

==============================================

int inicio()

{

for(int i=0; i<TotalPedidos(); i++)

{

if ((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) )

PlaySound ("alert.wav");

return(0);

}}

==============================================

Hayuna posición abierta pero no hay sonido.

¿Puede decirme qué pasa?

O lo fácil que es escribir la condición:

Si la MA 5 cruza la MA 10 y hay una posición abierta, cierre esa posición.

parece que aquí es donde se necesita void....

 
lottamer:

Sí... sólo tienes que abrir estos archivos mqh con 4Editor...

Si son del tutorial MQL4, se abrirán conel 4thEditor. Ponlos en la carpeta includ o renómbralos amq4 y ponlos en la carpeta de Expertos, la principal si es un EA, o las carpetas de scripts o indicadores respectivamente, y ábrelos.
 
Desead:
Buena opción por cierto, y que esto mientras corra su ciclo hasta el fin del mundo hasta que borre los pedidos, gracias, lo probaré ahora.


Tarda 2,5 segundos en ejecutarse en mt4.
 
rigonich:

Tarda 2,5 segundos en ejecutarse en mt 4.

Joder, ese es mi problema, me pregunto cómo puedo obviarlo si sólo tengo que borrar toda la rejilla cuando descargo el robot... Aquí no se me ocurre nada :(
 
lottamer:

es necesario insertar los términos TIENEN una operación abierta (una, sin mayores) en una fila, por ejemplo, con un cruce de medias.

encontró esto

==============================================

int inicio()

{

for(int i=0; i<TotalPedidos(); i++)

{

if ((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) )

PlaySound ("alert.wav");

return(0);

}}

==============================================

Hay una posición abierta pero no hay sonido.

¿Puede decirme qué pasa?

O lo fácil que es escribir la condición:

Si la MA 5 cruza la MA 10 y hay una posición abierta, cierre esa posición.

parece que aquí es donde se necesita void....


Compruebe si los sonidos están permitidos para la MT en el windup, y si hay archivos en la carpetaSound. Pero en el mercado bstrom el sn funcionará como despertador.