Emulación de ticks de un EA/indicador - página 5

 
Zhunko: Igor, esta forma de desconectarse de internet no es buena. Muchas cosas no funcionan en este modo. No es necesario desactivar el acceso a Internet.

no, su engranaje - en la primera página, funciona bien en winHp, te equivocas, pero en win7 por alguna razón no quería trabajar para mí

Carne:Se supone que el código no funciona donde hay un win de 64 bits. Sólo tengo 32, así que no puedo comprobarlo.

no, tengo win7 max 32bit

 
IgorM:

No, su engranaje - en la primera página, funciona bien en win XP, te equivocas, pero en win7 por alguna razón no quería trabajar para mí

Igor, no me refiero al código de Alexey, sino a la desconexión de Internet.
 
Zhunko:

¿Cómo se negocia a partir de un indicador de tic-tac? MQL4 no lo proporciona.

¡De verdad! ¿Por qué necesito la adición del indicador de ticking que no puede operar, si puedo hacer todo en un Asesor Experto en bucle? Esto no requerirá ninguna dificultad con WinAPI, la interfaz de MT4 no se volverá más lenta, y el EA operará tres veces más rápido. ¿Por qué complicar las cosas así?

Bueno, dejemos esta discusión, de todas formas no llevará a nada constructivo, lo más probable es que sea lo contrario. Ya has empezado a tergiversar (no sé, intencionadamente o no) el significado de lo que he escrito, he escrito en ruso que no comercio desde un indicador, sino desde un metatrader, mientras que tú vuelves a hablar de algún tipo de comercio desde un indicador. Si has interpretado algo mal de lo que he dicho, entonces te explico: la frase "se utiliza el indicador en el comercio" no significa que las operaciones se ejecuten por un indicador.

 
Meat:

Ya he empezado a desvirtuar (no sé si intencionadamente o no) el sentido de lo que he escrito. Ya has empezado a tergiversar (no sé si intencionadamente o no) el sentido de lo que he escrito, he escrito en ruso que yo comercio no desde un indicador, sino desde un metatrader, y tú vuelves a hablar de algún comercio desde un indicador. Si has interpretado mal algo de lo que he dicho antes, te explico: la frase "el indicador se utiliza en el comercio" no significa que el indicador realice la operación.

Entonces, ¿un Asesor Experto que recibe señales de un indicador opera? ¿Y por supuesto, MT4 hace todo esto? ¿Es correcto? Si es así, mi pregunta sigue siendo. ¿Por qué no dejar que el Asesor Experto haga todo esto? Es lo más racional.
 
Zhunko: Igor, no me refiero al código de Alexey, sino a la desconexión de Internet.

sí, entiendo, pero su código funciona cuando el internet está apagado en winhr

El código, en principio, es necesario, lo hacemos como un inluder y tenemos ticks en cualquier código en el fin de semana, especialmente útil cuando se trabaja con objetos gráficos - la gente a menudo piden para hacer "reglas inteligentes" y así sucesivamente, y en el fin de semana hay que hacer el código "a ojo".

 
IgorM:

sí, entiendo, pero su código funciona cuando el internet está apagado en winhr

Y el código, en principio, es necesario, hacerlo como un inluder y los fines de semana tienen una garrapata en cualquier código, en particular útil cuando se trabaja con objetos gráficos - la gente a menudo piden para hacer "reglas inteligentes" y así sucesivamente, y los fines de semana tienen que hacer el código "a ojo".

Bueno, he publicado un código que funciona en todas partes. Una línea. No hay temporizador. Funciona en todos los indicadores y en cualquier sistema operativo. Es suficiente para un experimento.

También di el código para el Asesor Experto arriba. La línea que genera el tick para el Asesor Experto puede ser sustituida en el código del indicador. En este caso, también afectará al experto.

La biblioteca se puede simplificar. Todo está ya implementado allí.

 
Zhunko:
Entonces, ¿un Asesor Experto que recibe señales de un indicador opera? ¿Y por supuesto que MT4 hace todo esto? ¿Es correcto? Si es así, mi pregunta sigue siendo. ¿Por qué no dejar que el Asesor Experto haga todo eso? Es lo más racional.

Si estuviéramos hablando de trading automático, la cuestión de los indicadores o los ticks no se plantearía en absoluto, porque ahí no son necesarios. Así que debes haber entendido mal el objetivo de este hilo desde el principio.

 

Por cierto, aquí hay otra cosa. La línea

TimerCode[byte/4] += (value[i]>>(8*j)&0xFF) <<(byte%4*8);

debe ser sustituido por

TimerCode[byte/4] |= (value[i]>>(8*j)&0xFF) <<(byte%4*8);

De lo contrario, se producirá un error al llamar de nuevo a SetMyTimer, o puede simplemente inicializar el array con cero antes de iniciar el bucle.

En cuanto a Win7, no he conseguido reproducir el problema ahí, todo me funciona bien. Y hacer la depuración a ciegas es poco realista. Me pregunto si hay alguien más aquí que tenga este código también funciona en séptimo? Porque me da la sensación de que estoy corriendo algún tipo de Windows especial.

 

Creo que he encontrado el error. Aquí está la versión corregida de la función SetMyTimer.

int SetMyTimer(int interval)
{    
  int MT4InternMsg= RegisterWindowMessageA("MetaTrader4_Internal_Message");
  int hWnd= WindowHandle(Symbol(),Period());
  int PostMsgAddr= GetProcAddress(GetModuleHandleA("user32.dll"),"PostMessageA");
  if (PostMsgAddr==0) return(0);
  // push ebp; move ebp,esp; push 01; push 02; push MT4InternMsg; push hWnd; mov eax,PostMsgAddr; call eax; pop ebp; ret 0010;    
  int value[]={ 0x55, 0x8B,0xEC, 0x6A,01, 0x6A,02, 0x68,0000, 0x68,0000, 0xB8,0000, 0xFF,0xD0, 0x5D, 0xC2,0x10 };
  int len[]=  { 1,    1,   1,    1,   1,  1,   1,  1,   4,    1,   4,    1,   4,    1,   1,    1,    1,   2 };
  value[8]=MT4InternMsg;  value[10]=hWnd;  value[12]=PostMsgAddr; 
  int byte=0;  ArrayInitialize(TimerCode,0);
  for (int i=0;  i<ArraySize(value);  i++)
    for (int j=0;  j<len[i];  j++, byte++)
      TimerCode[byte/4] |= value[i]>>(8*j)&0xFF<<(byte%4*8);

  return ( SetTimer(hWnd, TimerId, interval, TimerCode) );
}

Ahora debería funcionar bien.

 

nope..., no funciona

no hay errores en el registro, incluso el Internet en el terminal, en el consejo de Vadim, no se desconectó - no hay garrapatas en la salida de todos modos