Buenas tardes
No puedo conectarme desde un proyecto C++ Builder .
Aquí está el código
void __fastcall TForm1::FormActivate(TObject *Sender) { AnsiString path_MemMap32=ExtractFileDir(ParamStr(0)) + "\\dll\\MemMap32.dll"; AnsiString path_file="Local\\Monitor_USDCHF"; wchar_t * UnicodeString = new wchar_t[path_file.WideCharBufSize()]; path_file.WideChar(UnicodeString,path_file.WideCharBufSize()); delete [] UnicodeString; int (__stdcall *MemOpen) (char * path,int size,int mode,int &err); void (__stdcall *MemClose)(int hmem); int (__stdcall *MemRead)(int hmem, int v[], int pos, int sz, int &err); HINSTANCE hDLL= LoadLibrary(path_MemMap32.c_str()); if(!hDLL) {StatusBar1->SimpleText="I can't load dll";} else {StatusBar1->SimpleText="path_MemMap32.dll load";} MemOpen= (int(__stdcall *)(char * path,int size,int mode,int &err)) GetProcAddress(hDLL,"MemOpen"); MemClose=(void(__stdcall*)(int hmem)) GetProcAddress(hDLL,"MemClose"); MemRead= (int(__stdcall *)(int hmem, int v[], int pos, int sz, int &err)) GetProcAddress(hDLL,"MemRead"); hmem=MemOpen(path_file.c_str(),-1,0,err); StatusBar1->SimpleText=err; }
La barra de estado dice 2 es decir, archivo no encontrado, he intentado tanto en ansi y en unicode para enviar la ruta al archivo
En el archivo de MT5 Expert Advisor creó un archivo y actualiza las cotizaciones en él.
Si tiene C++, ¿por qué decidió utilizar una DLL?
El código fuente está totalmente disponible allí.
Si tiene C++, ¿por qué decidió utilizar una DLL?
El código fuente está totalmente disponible allí.
Quería usar una DLL ya hecha.
para que no hubiera problemas con MT4-5.
... Voy a tratar de ver el código fuente de la DLL
Quería usar la dll ya hecha.
para que no hubiera problemas con el sparring en MT4-5.
... Voy a tratar de ver el código fuente de la dll.
¿Cuál es su Windows?
win7x64
No puedo escribir en builder
y no puedo escribirlo asi.
#include <vcl.h> #include <stdafx.h> #include "BuySell.h"Lo he conseguido.
[C++ Fatal Error] afxv_w32.h(14): F1003 Error directive: WINDOWS.H already included. MFC apps must not #include <windows.h>
He intentado conectarme primero
afxv_w32.h
no ayudó
Intenté conectar afxwin.h primero - tampoco ayudó.
buscar afx.h conectado como otra opción.
Sí, por lo que se conecta sin errores voy a seguir intentando. Gracias.
...
Lo tengo, todo funciona.
Pero CloseHandle no cierra por alguna razón.
Tengo un servidor en el exe (crea actualizaciones y debería cerrarse) y en el terminal hay un receptor, por lo que después de CloseHandle en el servidor ve el objeto fallido en memoria.
Tengo un servidor en el eco (lo actualiza y lo cierra) y un receptor en el terminal, por lo que después de CloseHandle en el servidor ve el objeto fallido en la memoria.
¿y espera que la memoria se borre completamente cuando se cierre la manilla?
Buenas tardes
Por favor, dígame la dirección del desarrollo del pensamiento.
Hay una tarea para distribuir señales dentro de un ordenador (servidor) en muchos terminales, los retrasos críticos de más de 1-3 ms.
implementado en un paquete de cliente-servidor, 1-2 cuentas de trabajo aceptable y no colgar el terminal hizo la lectura de la memoria utilizando Sleep(1) en un bucle - si la memoria toma el valor necesario a continuación, realizar alguna acción. Pero cuando los terminales incluso 5 terminales, 1 ms aquí no es factible de lo contrario el refrigerador en el procesador comienza a aullar ...
No he seguido las noticias durante mucho tiempo, tal vez en mt5 hay eventos personalizados similares a OnTrade para que puedan estar vinculados a la modificación de la memoria.
He intentado leer sin retrasos 100 000 ciclos (8 bytes cada uno) pasa en 670 ms.
... tal vez debería reducir los datos a 4 bytes.
... probablemente hay otra opción para reconstruir su dll para hacer un bucle en su interior - no devolver los datos hasta que no aceptan los valores requeridos. pero cómo MT5 reaccionará a una espera tan larga para el retorno de una función externa es otra cuestión.
Hay una tarea para distribuir señales dentro de un ordenador (servidor) a muchos terminales, los retrasos de más de 1-3 ms son críticos.
implementado en el paquete cliente-servidor, 1-2 cuentas funcionan aceptablemente y no colgar el terminal hizo la lectura de la memoria utilizando Sleep(1) en un bucle - si la memoria toma el valor necesario que realizar alguna acción. Pero cuando los terminales incluso 5 terminales, 1 ms aquí no es factible de lo contrario el refrigerador en el procesador comienza a aullar ...
No he seguido las noticias durante mucho tiempo, tal vez en mt5 hay eventos de usuario similares a OnTrade para que puedan estar vinculados a la modificación de la memoria.
En tu caso, solo el servidor tiene derecho a modificar la memoria, los clientes la leen.
- Mira en la dirección de Pipe. allí los "eventos" de llegada de datos se realizan como autoexplicativos - si hay datos, los tomamos, si no, esperamos.
Sí, el servidor tendrá que ser escrito o copiado de MSDN, pero los clientes ya hechos se pueden utilizar directamente en MQL5.
Desafortunadamente, no hay manera de lidiar con la periodicidad de sondeo aquí tampoco. Sleep(1) en tal número de Asesores Expertos no debe hacer ruido, incluso cuando se trabaja con la memoria. Es necesario comprobar la sincronización de las funciones, tal vez hay pases adicionales y carga en alguna parte.
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
Monitorización de cotizaciones (fichero mapeado en memoria):
Este Asesor Experto es un ejemplo del uso de la DLL de Mapeado en Memoria para trabajar con las funciones de Mapeado de Ficheros. En este ejemplo, el Asesor Experto crea un fichero virtual (mapeado en memoria) y empieza a actualizarlo con las cotizaciones de un símbolo. Con este método, los Asesores Expertos pueden intercambiar datos (por ejemplo, cotizaciones) utilizando ficheros mapeados en memoria compartida.
Autor: o_O