Discusión sobre el artículo "Desarrollando las interfaces gráficas para los Asesores Expertos e indicadores a base de .Net Framework и C#" - página 11

 

¡buen trabajo!

a veces el MT5 se bloquea cuando cierro un formulario, por supuesto, hay una excepción no controlada, pero no sé dónde está el código y no puede atraparlo. ¿tiene alguna idea?

¿tienes alguna idea?

 
Artur Zas:

El código del ejemplo es específico de WinForms, pero puede modificarlo fácilmente para utilizarlo con WPF. Sólo tiene que enlazar a diferentes eventos en el lado shell WPF. El código será un poco diferente, pero los principios seguirán siendo los mismos.

También puede utilizar el código tal cual si sólo utiliza la ventana WinForms como anfitrión de los controles XAML. Puede hacer esto con las nuevas Islas XAML. De esta forma puedes usar todos los controles UWP modernos dentro de un WinForm.

¿Cómo podemos hacer lo primero, porque estoy tratando de incluir la clase de ventana en lugar de forma en el programa de Visual Studio, pero que dont 'Obras. ¿O conocéis alguna otra .dll capaz de trabajar con MQL5 y WPF?
 

Buenas tardes, por alguna razón no compila, ¿qué estoy haciendo mal? He puesto el archivo MtGuiController.dll en la carpeta Libraries.


 
Copyright © 2020 ®kwancheetuck Todos los derechos reservados vía. Titularidad del depósito MQL5
.
 
Vasiliy Sokolov:

Me gustaría lanzar naves espaciales al espacio. Tengo muchas ideas, pero tampoco puedo ponerme manos a la obra.

Y en general es congenial: es difícil descargar el estudio, pero escribir uno mismo el intérprete XAML... no es nada, pero no consigo meterle mano.

))

 
Rafil Nurmukhametov:

Buenas tardes, por alguna razón no compila, ¿qué estoy haciendo mal? He puesto el archivo MtGuiController.dll en la carpeta Libraries.


Rafil, ¿has averiguado cuál era el problema?

 
#import  "MtGuiController.dll"
string assembly = "C:\\MT5\\Form1.exe";

//+------------------------------------------------------------------+
//| Función de inicialización experta|
//+------------------------------------------------------------------+
int OnInit()
  {
//--- crear temporizador
   GuiController::ShowForm(assembly, "Form1");
   EventSetMillisecondTimer(200);   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Función de desinicialización experta|
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- destruir temporizador
   printf("enter deinit");
   GuiController::HideForm(assembly, "Form1");
   printf("exit deinit");
   EventKillTimer();
   
  }
//+------------------------------------------------------------------+
//| Función tick experto|
//+------------------------------------------------------------------+
void OnTick()
{
//---
}
//+------------------------------------------------------------------+
//| Función temporizador|
//+------------------------------------------------------------------+
void OnTimer()
  {
//---
   for(static int i = 0; i < GuiController::EventsTotal(); i++)
   {
      int id;
      string el_name;
      long lparam;
      double dparam;
      string sparam;
      GuiController::GetEvent(i, el_name, id, lparam, dparam, sparam);
// if(id == ClickOnElement)
      if(id == 9)
         printf("Click on element " + el_name);
   }
  }
//+------------------------------------------------------------------+

@Vasiliy Sokolov, ¿puedes ayudarme a entender esto?

Tome GuiMtController.mq5, poner la biblioteca en Bibliotecas, .exe en c:\\MT\\\\, definir la asamblea en consecuencia.

Compilamos y obtenemos un mensaje sobre una variable ClickOnElement indefinida. Digamos que la sustituimos por cualquier entero -> compila normalmente, pero el formulario en sí no arranca. Por supuesto, las dlls están permitidas, Metaeditor build 2361

 

Tal vez alguien más se tropiece

aquí está el lugar en el artículo

"Como puedes ver, el compilador entiende los enums externos definidos en Net-libraries y sabe como trabajar con ellos."

Todavía no sé por qué razón, pero el compilador se niega obstinadamente a entender los enums de C#, así que arrastramos los enum de C# a Mql5 y todo funciona.

Lo único, Vasily, es que has colocado los botones de Compra y Venta en el panel de trading al revés )).

Pero en general, la cosa más cool ha resultado. ¡Gracias por tu duro trabajo!)

Документация по MQL5: Основы языка / Типы данных / Целые типы / Перечисления
Документация по MQL5: Основы языка / Типы данных / Целые типы / Перечисления
  • www.mql5.com
После объявления перечисления появляется новый целочисленный 4-байтовый тип данных. Объявление нового типа данных позволяет компилятору строго контролировать типы передаваемых параметров, так как  перечисление вводит новые именованные константы. В приведенном примере именованная константа January имеет значение 0, February имеет значение 1...
 
Nikolai Karetnikov:

quizás alguien más tropiece

este es el lugar en el artículo

"Como puedes ver, el compilador entiende las enumeraciones externas definidas en Net-libraries y sabe cómo trabajar con ellas."

No sé por qué razón, pero el compilador se niega obstinadamente a entender las enumeraciones de C#, así que arrastramos enum de C# a Mql5 y todo funciona.

Sólo que, Vasily, has colocado los botones de Compra y Venta en el panel de operaciones al revés ))

Pero en general, la cosa más cool ha resultado. ¡Gracias por tu duro trabajo!)

Espera a emocionarte. Comprueba si las tablas funcionan. Esta cuestión seguía sin estar clara. Se producían enormes retrasos en la salida de datos a alta frecuencia.
 
Реter Konow:
Espera a emocionarte. Comprueba si las mesas funcionan. Esta cuestión seguía sin estar clara. Había grandes retrasos cuando se emitían datos a alta frecuencia.

Buenas tardes. )

Peter, ¿qué quieres decir con "eran" y qué quieres decir con "altas"? Hubo una discusión sobre este tema en algún lugar o algo así