Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 914

 
Top2n:

Muchas gracias. Todo funciona. Investigaré lo que has escrito...
 
Top2n:

¿Alguna otra sugerencia?

Conecto un script a un gráfico sin conexión, el terminal se cuelga. Tal vez sea posible montar el código en el robot, entonces qué hacer con#import "user32.dll"

El guión era sólo un ejemplo, nadie ha dicho que haya que ponerlo en la tabla de fuera de línea. Normalmente se ejecuta en un gráfico normal y se especifica el TF del gráfico fuera de línea en la línea

 int whdl=WindowHandle (Symbol(), period_renko);  

Y #importar "user32.dll" no es necesario, se llama en WinUser32.mqh

De hecho, existe un indicador "6MTH_Renko_Chart_Builder_Indi_Ver_02.mq4" que puede emular los ticks en el gráfico Renko creado. Funciona así, el indicador se ejecuta en un gráfico normal, luego se abre el gráfico Renko que se actualiza en tiempo real.


 
evillive:

El guión era sólo un ejemplo, nadie ha dicho que haya que ponerlo en un gráfico sin conexión. Normalmente se ejecuta en un gráfico normal y se especifica el TF del gráfico fuera de línea en la línea

Y #importar "user32.dll" no es necesario, se llama en WinUser32.mqh

De hecho, existe un indicador "6MTH_Renko_Chart_Builder_Indi_Ver_02.mq4" que puede emular los ticks en el gráfico Renko creado. Funciona así, el indicador se ejecuta en un gráfico normal, luego se abre el gráfico Renko que se actualiza en tiempo real.


Gracias)
 

Hola, ¿me pueden decir cómo hacer esto?

Hay un trozo de código así y funciona. Son señales cuando se acercan a los niveles de negociación. Buy1_line es un nivel en el gráfico, buy1 es la distancia del precio en pips desde el nivel correspondiente. El asunto es que el código tiene la capacidad de desactivar los niveles que no necesitas. En este caso, el valor del nivel buy1_line (0,00000) y la distancia - se muestra como un número de 6 dígitos, lo que en principio no tiene sentido. (El nivel está desactivado, no necesitas saber la distancia) ¡Pregunta! ¿Cómo anular la distancia al nivel - buy1, si el nivel correspondiente está desactivado? (o en lugar de este número escriba OFF ?)

string buy1_line=DoubleToStr(Price_Line,Digits);
string buy2_line=DoubleToStr(Price_Line2,Digits);
string buy1=     DoubleToStr((Price_Line-Bid)/Point,0);
string buy2=     DoubleToStr((Price_Line2-Bid)/Point,0);       

message=
 "buy_1 ("+buy1_line+"):"+(buy1>"0"?"+":"")+buy1+"   \n"+
 "buy_2 ("+buy2_line+"):"+(buy2>"0"?"+":"")+buy2+"   \n";

SendNotification(message);
 

Hola, ¿podríais decirme si hay alguna forma de conseguir un ticket de un pedido recién enviado?

ticket = OrderSend(Symbol(), cmd, Lot((OOP-OSL)/Point),OOP,1,OSL, OTP,NULL, Expert_ID, 0);

entonces compruebo si ticket < 1, y ahora quiero obtener el número de OrderTicket() sin tener que volver a pasar por todas las órdenes abiertas, ya que puede haber muchas, y espero que haya un problema si envío dos órdenes casi idénticas con diferentes stops a la vez

Gracias.

 
danik:

Hola, ¿podríais decirme si hay alguna forma de conseguir un ticket de un pedido recién enviado?

ticket = OrderSend(Symbol(), cmd, Lot((OOP-OSL)/Point),OOP,1,OSL, OTP,NULL, Expert_ID, 0);

entonces compruebo si ticket < 1, y ahora quiero obtener el número de OrderTicket() sin tener que volver a pasar por todas las órdenes abiertas, ya que puede haber muchas, y espero que haya un problema si envío dos órdenes casi idénticas con diferentes stops a la vez

Gracias.

Y no necesita OrderSend(), para conocer el ticket de un pedido que ya está abierto, debe seleccionarlo usando OrderSelect().

En el bucle, debe recorrer todas las órdenes de mercado, seleccionar cada una de ellas y si su tipo, símbolo y mago coinciden, escribir el ticket en el array.

A continuación, ordena la matriz en orden ascendente. El valor más alto del billete es el pedido más reciente.

 
Sí, supongo que habrá que hacerlo. Me preguntaba si había algún truco o método para conseguir un ticket para un pedido que acaba de ser enviado. Pues no lo hay, tendré que hacerlo a la antigua usanza, una pena. ¡gracias!
 
danik:
He pensado que puede haber una forma de conseguir un billete que acaba de ser enviado. Si no es así, tendré que hacerlo a la antigua usanza y es una pena. ¡Gracias!

Sólo el ticket abierto será como usted escribió -ticket = OrderSend(Symbol(), cmd, Lot((OOP-OSL)/Point),OOP,1,OSL, OTP,NULL, Expert_ID, 0);

Pero siempre y cuando la solicitud se haya ejecutado sin errores, y dicho ticket se sobrescribe rápidamente.

 
danik:

Hola, ¿podríais decirme si hay alguna forma de conseguir un ticket de un pedido recién enviado?

ticket = OrderSend(Symbol(), cmd, Lot((OOP-OSL)/Point),OOP,1,OSL, OTP,NULL, Expert_ID, 0);

entonces compruebo si ticket < 1, y ahora quiero obtener el número de OrderTicket() sin tener que volver a pasar por todas las órdenes abiertas, ya que puede haber muchas, y espero que haya un problema si envío dos órdenes casi idénticas con diferentes stops a la vez

Gracias.

¿Por qué no te gusta declarar las entradas a nivel de variable global?
 

El problema es que estos tickets son más de uno. tal vez 4, no lo sé exactamente todavía. por eso he creado una clase con el número de ticket y otra información que no es almacenada por orderselect. así que quería tener acceso al ticket. pero hasta ahora sólo puedo crear objetos de clase y ponerlos en CarrayObj y luego obtener el índice, comparar el ticket y seguir analizando. Pero ya lo he resuelto, gracias. Me culpo a mí mismo en otra parte. SeñoresevilliveAlexeyVik - ¡ gracias por sus rápidas respuestas!