Características del lenguaje mql5, sutilezas y técnicas - página 149

 
fxsaber:

Gracias, buena regla. Me convertí en víctima de mi propia incompetencia. Realmente, se necesita alguna norma más para un caso tan evidente.


Tal vez para ambos casos Advertencia inteligente de hacer?

No)))) No sería nada aburrido)))

 
Vladimir Simakov:
¿Cuál es el problema de este código? Deinit clavó el objeto por un puntero constante (conozco el mango aquí). Tiro normal de las extremidades en estilo C++, de lo contrario los creadores han disuelto a todos))

No habrá problemas en la puesta en marcha. Una vez iniciado, puede esperar un tiempo y luego crear una situación para el EA que su ejecución se rompa.

No es un misterio, es sólo que se entiende mucho mejor si se busca el problema en un código aparentemente inocuo.
 
fxsaber:

No habrá problemas en la puesta en marcha. Una vez iniciado, puede esperar un tiempo y luego crear una situación para el EA que su ejecución se rompa.

No es un misterio, es sólo que se entiende mucho mejor si se busca el problema en un código aparentemente inocuo.
Sé cuál es el problema. Cambio de horario y oops... Es decir, es estándar aquí. ¿Advertencia? ¿Para qué? En cuanto a mí, cuando me enfrento a algo así, sólo lo cuento en el aumento de mi habilidad. Con su ejemplo, IMHO, aquí en la fuerza del 20 por ciento de la comunidad son capaces de encontrar, así que ¿por qué privarlos de desarrollo?
 
Vladimir Simakov:
Sé cuál es el problema aquí. Cambio de horario y oops... Es decir, es estándar aquí. ¿Advertencia? ¿Para qué? En cuanto a mí, cuando me enfrento a algo así, sólo lo cuento en el aumento de mi habilidad. Con su ejemplo, IMHO, aquí en la fuerza del 20 por ciento de la comunidad son capaces de encontrar, así que ¿por qué privarlos de desarrollo?

Tuve una situación aún más interesante. No hubo ningún cambio de nada, pero se llamó a OnDeinit después de la reconexión. Ahora estaré atento a la Razón.

 

Constantemente me encuentro con la necesidad de buscar en la Observación del Mercado el símbolo requerido. Por ejemplo, el símbolo del gráfico actual.

Cada vez se necesita un tiempo precioso. Lo he automatizado con el siguiente script.

// После запуска и нажатия ENTER делает активным в Обзоре рынка символ чарта.
#include <WinAPI\winuser.mqh>

#define  GA_ROOT           0x00000002

#define  WM_KEYDOWN        0x0100
#define  WM_LBUTTONDOWN    0x0201

#define  VK_DELETE         0x2E

#define  WM_CHAR           0x0102

#define  GET_HANDLE                                                                       \
  long Handle = user32::GetAncestor(::ChartGetInteger(0, CHART_WINDOW_HANDLE), GA_ROOT); \
                                                                                         \
  for (int i = 0; i < sizeof(ControlID) / sizeof(int); i++)                              \
    Handle = user32::GetDlgItem(Handle, ControlID[i]);


bool SetSymbolNavigator( const string SymbName )
{
  const bool Res = ::SymbolInfoInteger(SymbName, SYMBOL_EXIST);

  if (Res)
  {
    static const int ControlID[] = {0xE81C, 0x804B, 0x27A0, 0x271B, 0x3E9};
    GET_HANDLE

    user32::SendMessageW(Handle, WM_LBUTTONDOWN, 0, 0);
    user32::SendMessageW(Handle, WM_KEYDOWN, VK_DELETE, 0);

    const int Size = ::StringLen(SymbName);
    
    for (int i = 0; i < Size; i++)
      user32::SendMessageW(Handle, WM_CHAR, SymbName[i], 0);
  }

  return(Res);
}

void OnStart()
{
  SetSymbolNavigator(_Symbol);
}
 
fxsaber:

Constantemente me encuentro con la necesidad de buscar en la Observación del Mercado el símbolo requerido. Por ejemplo, el símbolo del gráfico actual.

Cada vez se necesita un tiempo precioso. Lo he automatizado utilizando el siguiente script como tecla de acceso directo.

Colega, aclara el propósito. ¿Desea que el símbolo aparezca en el "Market Watch" o que se destaque en el "Market Watch"?

 
Denis Kirichenko:

Colega, aclara el propósito. ¿Desea que el símbolo aparezca en la Vigilancia del Mercado o que se destaque en ella?

A destacar. Muchas personalizadas, por ejemplo. Tengo que ejecutar Tester en esa costumbre, que gráfico puedo ver.

Entonces ejecuto este script y después de eso, suelto el símbolo seleccionado en Market Watch con el ratón en el probador. Todo esto lleva un par de segundos.

 
fxsaber:

A destacar. Por ejemplo, hay muchas personalizadas. Tengo que ejecutar el probador en esa costumbre, cuyo gráfico puedo ver.

Entonces ejecuto este script, y después de eso, dejo caer el personaje resaltado en Market Watch con el ratón en el probador. Todo esto lleva un par de segundos.

Pues entonces este script no me funciona. No ocurre nada, el símbolo no se resalta.

Inicie, presione Enter. Veo un error en el registro:

2019.11.29 11:47:38.609 Error   file C:\Users\Admin\AppData\Roaming\MetaQuotes\Terminal\5 B326B03063D8D9C446E3637EFA32247\MQL5\Scripts\Shared Projects\Testing\fxsaber\SetActiveSymbol.mq5 not found

Sí, he llamado al scriptSetActiveSymbol.mq5.

 
Denis Kirichenko:

Veo un error en los registros

Simplemente no arranca así. No hay ningún archivo.

 
fxsaber:

Simplemente no arranca así. No hay ningún archivo.

Lo hay. Sólo he dado una entrada del registro. El completo es así:

2019.11.29 12:37:18.851 Scripts script SetActiveSymbol (AUDJPY,H1) loaded successfully
2019.11.29 12:37:18.878 Scripts script SetActiveSymbol (AUDJPY,H1) removed
2019.11.29 12:37:26.419 Error   file C:\Users\Admin\AppData\Roaming\MetaQuotes\Terminal\5 B326B03063D8D9C446E3637EFA32247\MQL5\Scripts\Shared Projects\Testing\fxsaber\SetActiveSymbol.mq5 not found