Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Publica tu código donde obtienes el OrderTicket para hacer el nombre.
( Cuando alguien necesita algo de código - me demoro en publicarlo rápidamente - porque uso funciones OBJECT_****, es poco diferente de las documentaciones de los objetos )
El código de abajo está en OnTick().
{
if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
if(Symbol()!=OrderSymbol()) continue;
ObjectCreate(0,"#"+IntegerToString(OrderTicket())+" -"+"Object Button",OBJ_BUTTON,0,0,0);
}
Ahora, trato de llamar a ese objeto por el OnChartEvent() como abajo.
{
// when click this button - do something...
}
Gracias de antemano.
no está dentro del bucle de pedido, por lo que no conocería el OrderTicket().
Entonces, ¿no hay ninguna posibilidad?
La mayoría de las cosas son posibles. Pero no tengo claro qué es lo que quiere conseguir. ¿Qué es este botón? ¿Qué quiere hacer cuando se hace clic en él?
Probablemente pueda obtener el resultado deseado, pero es posible que tenga que cambiar su enfoque.
La mayoría de las cosas son posibles. Pero no tengo claro qué es lo que quiere conseguir. ¿Qué es este botón? ¿Qué quiere hacer cuando se hace clic en él?
Probablemente puedas conseguir el resultado deseado, pero puede que tengas que cambiar tu enfoque.
Mi propósito es que este objeto botón pueda mostrar los nubers de las entradas y su ganancia cuando hago clic en ellos, que la nube de pedidos se cierre.
He escrito este comentario desde un dispositivo móvil. Por lo tanto, voy a empezar a investigar sobre este tema después de 10 horas más tarde. Gracias por sus comentarios.
Mi propósito es que este objeto botón pueda mostrar los nubers de las entradas y su beneficio cuando haga clic en ellos, que la nube de pedidos se cierre.
He escrito este comentario desde un dispositivo móvil. Por lo tanto, voy a empezar a investigar sobre este tema después de 10 horas más tarde. Gracias por sus comentarios.
Tenga una etiqueta única en los nombres de los objetos que identifique estos botones. Parece que está utilizando "#"
Luego extraer el número de orden del resto del nombre del objeto, o del texto del botón.
No es necesario utilizar OrderTicket() en esta etapa.
Sus objetos son identificados por el orderticket.
Así que cada objeto tiene el número de ticket en su nombre de cadena para poder encontrar a qué orden pertenece el objeto.
Esto significa que cada objeto tendrá "#" en su nombre de cadena.
Así que, esencialmente, al hacer clic en un botón, primero tiene que extraer el número de ticket de pedido del nombre de la cadena del objeto, y luego ejecutar el bucle orderselect, y cuando el ticket de pedido seleccionado coincida con el número de ticket de pedido extraído del nombre de la cadena del botón, habrá encontrado el pedido.
O puede simplemente
Para seleccionar el pedido dentro del evento gráfico.
Ahora sería mucho más fácil si sólo le da al objeto el número/nombre del ticket y nada más.
Porque entonces puede seleccionar directamente el ticket o comparar los números.
Yo era el último día trató de OrderSelect () Loop. Ahora primero lo intentaré una vez más pronto.
Entonces voy a investigar profundamente sus últimos comentarios.
Gracias por sus tiempos valiosos.
He probado el código de abajo en mi archivo test.mq4 así que el código de abajo funciona perfectamente, y hasta ahora no he tenido ningún problema, pero todavía lo estoy probando.
P: ¿Puedes mejorar el código de abajo si es malo, por favor?
{
for(i=OrdersTotal()-1; i>=0; i--)
{
if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
if(OrderSymbol()!=Symbol()) continue;
if(sparam=="#"+IntegerToString(OrderTicket())+" -"+"Object Button")
{
if(!OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,CLR_NONE))
{
Print("# Error ",GetLastError());
}
}
}
}
Gracias de antemano.
( Estoy trabajando en ello )
Un examen superficial sugiere que debería funcionar. Pero podría mejorar la eficacia.
Piensa en cuántos objetos diferentes has dibujado en tu gráfico. Si hace clic en *cualquiera* de esos objetos, va a recorrer cada una de las órdenes e intentar encontrar una coincidencia. Muchos objetos probablemente no tienen nada que ver con las órdenes. Esto es ineficiente.
Por eso sugerí comprobar el primer carácter de sparam para "#". Esto identifica automáticamente el objeto como relacionado con un pedido.
Además, no es necesario hacer un bucle a través de los pedidos. El nombre del objeto y/o el texto del objeto ya contienen el número de ticket. Así que extraiga el número de ticket de ahí y cierre el pedido
Ejemplo:
Usted abre un pedido. Se le da el número de ticket 12345
Crea un OBJ_BUTTON con el nombre"#12345".
El código en OnChartEvent() sería algo así (no compilado, no probado, a última hora de la noche...):
{
int ticket=(int)StringSubstr(sparam,1); // extract the ticket number
if(OrderSelect(ticket,SELECT_BY_TICKET)) // select the order
{
if(!OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,CLR_NONE)) // close the order
{
Print("# Error ",GetLastError());
}
}
}