A ver compis, que es lo que pretendeis conseguir con lo del ChartID() enfocado a discernir entre distintas órdenes???.
MT4 no guarda ningún dato entre los diferentes propiedades de las órdenes que haga referencia a desde qué ID de char fue abierta dicha orden. Los datos a los que se tiene acceso, una vez buscadas y seleccionadas las órdenes correspondientes que nos interesen son:
- OrderClosePrice
- OrderCloseTime
- OrderComment
- OrderCommission
- OrderExpiration
- OrderLots
- OrderMagicNumber
- OrderOpenPrice
- OrderOpenTime
- OrderProfit
- OrderStopLoss
- OrderSwap
- OrderSymbol
- OrderTakeProfit
- OrderTicket
- OrderType
Lo que estais intentando se podría hacer, ya que en MT4 se puede hacer casi todo, pero no es absolutamente nada práctico ni útil por varias razones:
1 - El ChartID() se utiliza para operaciones con gráficos y otras tareas varias que nada tienen que ver con selección de órdenes.
2 - Habría que hacer un proceso más complejo para guardar el ID del chart desde el cual se ha abierto cada orden.
3 - Y, sobre todo, los datos a los que podemos acceder fácilmente buscando las órdenes con normalidad como lo hace todo el mundo, (los que he enumerado más arriba) son más que suficientes para poder buscar y encontrar la orden u órdenes que necesitemos en todos los casos, sin tener que hacer este tipo de componendas.
4 - Para lo que quereis, si es buscar si hay órdenes abiertas por un EA que esté anclado a un chart concreto es tan sencillo como poner el parámetro del Magic Number como parámetro externo (con el modificador input) y cada vez que anclemos el EA a un gráfico diferente, cambiarle ese valor, y ponerle un Magic Number diferente. Después en el código se buscan las órdenes con normalidad como lo hacemos todos (por aquí y por otro post ya se han puesto códigos para buscar órdenes por su Magic Number) y si no encuentra ninguna que lleve el Magic Number justo que hemos puesto en la instancia del EA que hemos adjuntado justo a ese gráfico, entonces ya se abre operación o se hace lo que se tenga por objetivo de hacer. Esto mismo se podría hacer con el OrderComment en lugar de con el Magic Number, pero es más rápido, práctico y eficiente hacerlo por el Magic Number.
Me parece que ya lo comentó Tivag y algún otro compañero, y tal cual, os aseguro que si anclais el EA a 1000 gráficos diferentes del mismo par y en cada uno de esos 1000 gráficos le poneis un Magic Number diferente (para comodidad mediante parámetro externo), cuando busqueis una orden de entre todo el pool exigiéndole que tenga que tener ese Magic Number , no os encontrará otra que haya sido abierta desde otro chart, sino solo esa, si la hay. Y si no la encuentra, pues a aplicar lo que se quisiera aplicar.
Saludos y un abrazo.Foro de Forex Trading United