Cita Iniciado por ;
gracias amigos por sus ideas. hasta ahora estoy en una situación de punto muerto, sigo buscando una solución que use 1 clic como interruptor usando el mouse. He visto que IBfx lo tiene en su última plataforma (para abrir/cerrar una operación), pero el código no está expuesto. espero que entren mas ideas
Lo siento, he entendido mal; Pensé que estaba buscando específicamente seleccionar/deseleccionar objetos usando MQL4. Como dice cja, puede codificar una verificación para ver si un objeto se ha movido (aunque esto requiere un clic para seleccionar el objeto, y luego debe arrastrarlo):
Cita Iniciado por ;
puede configurar la plataforma MT4 para seleccionar un objeto con un clic o un doble clic en la pestaña en la parte superior de las herramientas/opciones/objetos de la plataforma y marcar/desmarcar Seleccionar objeto con un solo clic del ratón. ......... Aunque no lo he probado personalmente, también creo que un objeto también se puede seleccionar y mover en un gráfico para crear un interruptor.
Aquí hay un fragmento de código de un EA que escribí, que hace exactamente eso: Inserted Code extern double RefreshInterval_seconds = 0; cadena externa CornerForCounter = TR; : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : string objname = VOmonitor; int objtamaño = 8; cadena objfuente = Arial; color objcolor = Naranja; int objxpos = 5; int objypos = 15;/ -------------------------------------------------------- ------------------ int init() {/ ------------------------------------- -------------------------------------------- : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : if (ObjectFind(objname) lt; 0) { ObjectCreate(objname,OBJ_LABEL,0, 0,0); ObjectSet(objname,OBJPROP_XDISTANCE,objxpos); ObjectSet(objname,OBJPROP_YDISTANCE,objypos); maíz = 0; if (StringFind(StringUpper(CornerForCounter),B) gt;= 0) corn = 2; if (StringFind(StringUpper(CornerForCounter),R) gt;= 0) corn = 1; ObjectSet(objname,OBJPROP_CORNER,corn); ObjectSetText(objname,VOM,objsize,objfont,objcolor ); } proceso principal(); if (RefreshInterval_seconds gt; 0) { while (!IsStopped()) { main_process(); Dormir (RefreshInterval_seconds*1000); int xpos = ObjectGet(objname,OBJPROP_XDISTANCE); int ypos = ObjectGet(objname,OBJPROP_YDISTANCE); if (xpos != objxpos || ypos != objypos) break; } } RefreshInterval_segundos = 0; retorno(0); }/ ---------------------------------------------- -------------------- int inicio() {/ --------------------- --------------------------------------------- si (RefreshInterval_segundos lt ;= 0) { proceso_principal(); } retorno(0); }/ ---------------------------------------------- -------------------- int proceso_principal() {/ --------------------- ------------------------------------------------------------ : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : Si la configuración de RefreshInterval_seconds gt; 0, el EA realizará un bucle, realizando main_process() repetida e indefinidamente (al codificar el bucle en la sección init()), hasta que el objeto se mueva, lo que termina el bucle, lo que le da al usuario la oportunidad de cambiar los parámetros del EA. La configuración también provoca un retraso del número especificado de segundos, entre cada iteración del bucle. Si la configuración RefreshInterval_seconds = 0, entonces el EA simplemente realiza main_process() una vez por marca (es decir, el código en la sección start()). Espero que te dé algunas ideas con las que trabajar. David