y de nuevo dll y el mercado - página 4

 
Nikolai Karetnikov:

¿Podría el Asesor de Mercado escribir un archivo de texto como recurso?

Luego formaría el archivo con código cerrado y cambiaría la extensión con código abierto y lo reproduciría

Un asesor experto en mercados puede:

1. Escribir datos en un recurso interno, que puede ser analizado por el usuario EA, si conoce la ruta de acceso a ese recurso y trabajará en paralelo. Lo que el Asesor Experto hará con la información leída, sólo lo sabe el usuario.
2. Puede enviar datos a un archivo ordinario, que el Asesor Experto incluirá como recurso y "digerirá" su contenido utilizando sus algoritmos.


 
Реter Konow:
Pruébalo. Intentar, como se dice, no es una tortura)
Entonces, aquí, dime si funcionó o no.

He empezado a probarlo y ahora tengo una duda.

La biblioteca winapi\fileapi.mqh

#include <WinAPI\windef.mqh>

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
#import "kernel32.dll"
int    AreFileApisANSI(void);
int    CompareFileTime(FILETIME &file_time1,FILETIME &file_time2);
int    CreateDirectoryW(const string path_name,PVOID security_attributes);
HANDLE CreateFile2(const string file_name,uint desired_access,uint share_mode,uint creation_disposition,CREATEFILE2_EXTENDED_PARAMETERS &create_ex_params);
HANDLE CreateFileW(const string file_name,uint desired_access,uint share_mode,PVOID security_attributes,uint creation_disposition,uint flags_and_attributes,HANDLE template_file);
int    DefineDosDeviceW(uint flags,const string device_name,const string target_path);
int    DeleteFileW(const string file_name);
int    DeleteVolumeMountPointW(const string volume_mount_point);
int    FileTimeToLocalFileTime(FILETIME &file_time,FILETIME &local_file_time);
int    FindClose(HANDLE find_file);
int    FindCloseChangeNotification(HANDLE change_handle);
HANDLE FindFirstChangeNotificationW(const string path_name,int watch_subtree,uint notify_filter);
HANDLE FindFirstFileExW(const string file_name,FINDEX_INFO_LEVELS info_level_id,FIND_DATAW &find_file_data,FINDEX_SEARCH_OPS search_op,PVOID search_filter,uint additional_flags);
HANDLE FindFirstFileNameW(const string file_name,uint flags,uint &StringLength,ushort &LinkName[]);
HANDLE FindFirstFileW(const string file_name,FIND_DATAW &find_file_data);
HANDLE FindFirstStreamW(const string file_name,STREAM_INFO_LEVELS InfoLevel,FIND_STREAM_DATA &find_stream_data,uint flags);
HANDLE FindFirstVolumeW(ushort &volume_name[],uint &buffer_length);
int    FindNextChangeNotification(HANDLE change_handle);
int    FindNextFileNameW(HANDLE find_stream,uint &StringLength,ushort &LinkName[]);
int    FindNextFileW(HANDLE find_file,FIND_DATAW &find_file_data);
int    FindNextStreamW(HANDLE find_stream,FIND_STREAM_DATA &find_stream_data);
int    FindNextVolumeW(HANDLE find_volume,ushort &volume_name[],uint &buffer_length);
int    FindVolumeClose(HANDLE find_volume);
int    FlushFileBuffers(HANDLE file);
uint   GetCompressedFileSizeW(const string file_name,uint &file_size_high);
int    GetDiskFreeSpaceExW(const string directory_name,ulong &free_bytes_available_to_caller,ulong &total_number_of_bytes,ulong &total_number_of_free_bytes);
int    GetDiskFreeSpaceW(const string root_path_name,uint &sectors_per_cluster,uint &bytes_per_sector,uint &number_of_free_clusters,uint &total_number_of_clusters);
uint   GetDriveTypeW(const string root_path_name);
int    GetFileAttributesExW(const string file_name,GET_FILEEX_INFO_LEVELS info_level_id,FILE_ATTRIBUTE_DATA &file_information);
uint   GetFileAttributesW(const string file_name);
int    GetFileInformationByHandle(HANDLE file,BY_HANDLE_FILE_INFORMATION &file_information);
uint   GetFileSize(HANDLE file,uint &file_size_high);
int    GetFileSizeEx(HANDLE file,long &file_size);
int    GetFileTime(HANDLE file,FILETIME &creation_time,FILETIME &last_access_time,FILETIME &last_write_time);
uint   GetFileType(HANDLE file);
uint   GetFinalPathNameByHandleW(HANDLE file,ushort &file_path[],uint file_path,uint flags);
uint   GetFullPathNameW(const string file_name,uint buffer_length,ushort &buffer[],ushort &file_part[]);
uint   GetLogicalDrives(void);
uint   GetLogicalDriveStringsW(uint buffer_length,ushort &buffer[]);
uint   GetLongPathNameW(const string short_path,string &long_path,uint buffer);
uint   GetShortPathNameW(const string long_path,string &short_path,uint buffer);
uint   GetTempFileNameW(const string path_name,const string prefix_string,uint unique,ushort &temp_file_name[]);
uint   GetTempPathW(uint buffer_length,ushort &buffer[]);
int    GetVolumeInformationByHandleW(HANDLE file,ushort &volume_name_buffer[],uint volume_name_size,uint &volume_serial_number,uint &maximum_component_length,uint &file_system_flags,ushort &file_system_name_buffer[],uint file_system_name_size);
int    GetVolumeInformationW(const string root_path_name,ushort &volume_name_buffer[],uint volume_name_size,uint &volume_serial_number,uint &maximum_component_length,uint &file_system_flags,ushort &file_system_name_buffer[],uint file_system_name_size);
int    GetVolumeNameForVolumeMountPointW(const string volume_mount_point,string volume_name,uint buffer_length);
int    GetVolumePathNamesForVolumeNameW(const string volume_name,string volume_path_names,uint buffer_length,uint &return_length);
int    GetVolumePathNameW(const string file_name,ushort &volume_path_name[],uint buffer_length);
int    LocalFileTimeToFileTime(FILETIME &local_file_time,FILETIME &file_time);
int    LockFile(HANDLE file,uint file_offset_low,uint file_offset_high,uint number_of_bytes_to_lock_low,uint number_of_bytes_to_lock_high);
int    LockFileEx(HANDLE file,uint flags,uint reserved,uint number_of_bytes_to_lock_low,uint number_of_bytes_to_lock_high,OVERLAPPED &overlapped);
uint   QueryDosDeviceW(const string device_name,ushort &target_path[],uint max);
int    ReadFile(HANDLE file,ushort &buffer[],uint number_of_bytes_to_read,uint &number_of_bytes_read,OVERLAPPED &overlapped);
int    ReadFile(HANDLE file,ushort &buffer[],uint number_of_bytes_to_read,uint &number_of_bytes_read,PVOID overlapped);
int    ReadFileScatter(HANDLE file,FILE_SEGMENT_ELEMENT &segment_array[],uint number_of_bytes_to_read,uint &reserved,OVERLAPPED &overlapped);
int    ReadFileScatter(HANDLE file,FILE_SEGMENT_ELEMENT &segment_array[],uint number_of_bytes_to_read,uint &reserved,PVOID overlapped);
int    RemoveDirectoryW(const string path_name);
int    SetEndOfFile(HANDLE file);
void   SetFileApisToANSI(void);
void   SetFileApisToOEM(void);
int    SetFileAttributesW(const string file_name,uint file_attributes);
int    SetFileInformationByHandle(HANDLE file,FILE_INFO_BY_HANDLE_CLASS FileInformationClass,FILE_INFO &file_information,uint buffer_size);
int    SetFileIoOverlappedRange(HANDLE FileHandle,uchar &OverlappedRangeStart,ulong Length);
uint   SetFilePointer(HANDLE file,long distance_to_move,long &distance_to_move_high,uint move_method);
int    SetFilePointerEx(HANDLE file,long distance_to_move,long &new_file_pointer,uint move_method);
int    SetFileTime(HANDLE file,FILETIME &creation_time,FILETIME &last_access_time,FILETIME &last_write_time);
int    SetFileValidData(HANDLE file,long ValidDataLength);
int    UnlockFile(HANDLE file,uint file_offset_low,uint file_offset_high,uint number_of_bytes_to_unlock_low,uint number_of_bytes_to_unlock_high);
int    UnlockFileEx(HANDLE file,uint reserved,uint number_of_bytes_to_unlock_low,uint number_of_bytes_to_unlock_high,OVERLAPPED &overlapped);
int    WriteFile(HANDLE file,const ushort &buffer[],uint number_of_bytes_to_write,uint &number_of_bytes_written,OVERLAPPED &overlapped);
int    WriteFile(HANDLE file,const ushort &buffer[],uint number_of_bytes_to_write,uint &number_of_bytes_written,PVOID overlapped);
int    WriteFileGather(HANDLE file,FILE_SEGMENT_ELEMENT &segment_array[],uint number_of_bytes_to_write,uint &reserved,OVERLAPPED &overlapped);
int    WriteFileGather(HANDLE file,FILE_SEGMENT_ELEMENT &segment_array[],uint number_of_bytes_to_write,uint &reserved,PVOID overlapped);
#import
//+------------------------------------------------------------------+

¿cómo es que falta la función CopyFileW?

 
Nikolai Karetnikov:

He empezado a probarlo y ahora tengo una pregunta.

La biblioteca winapi\fileapi.mqh

¿cómo es que falta la función CopyFileW?

No lo sé. Si su prototipo no está en la lista, debe ser de algún otro conjunto de funciones dll.
 
A juzgar por lo que dijo Renat en el hilo paralelo, esta llamada es obsoleta y sólo sirve para las versiones de 32 bits del terminal.

Aquí hay un enlace al tema: https://www.mql5.com/ru/forum/342311
 
Nikolai Karetnikov:

oops )

Lo que estorba es que el script vbs accede al motor de voz de windows

Creo que estás montando una rueda muy complicada :)

hay motores de voz gratuitos de mcrosoft y google

El de Microsoft se busca en Google en las primeras consultashttp://speech-text.narod.ru/chap5.html


bueno y sobre el tema, no eres el primero que encuentra \MQL5\Include\WinAPI

pero la política de MQ no se ha modificado:

- la seguridad de los programas MQL debe estar garantizada, por lo que todos los programas de libre distribución deben funcionar dentro de la "caja de arena MQL" (llamadas, acceso a archivos)

- para uso personal o como tutoriales, puede utilizar la posibilidad de llamar a las .dll

 
Parece que el EA que utiliza el motor de voz de Windows no podrá entrar en el mercado. Aquí tienes un límite insuperable en el desarrollo de EAs comercializables).

Una pena, por supuesto. En el futuro, el control por gestos podría ser posible.
 
Реter Konow:
Parece que no hay forma de entrar en el mercado con un EA que utilice el motor de voz de Windows. Hasta aquí el límite infranqueable en el desarrollo de los EA vendidos).

Una pena, por supuesto. En el futuro, el control gestual podría ser posible.

A mí la idea de dar órdenes de voz al terminal o escuchar lo que dice EA me parece una especie de neurosis a punto de convertirse en una forma complicada de psicosis u otras enfermedades

)))

imho, sólo para burlarse de las posibilidades de la tecnología


ZS:

Utilizo OK-Google en el teléfono, búsqueda práctica, práctica, probablemente un PC para utilizar multimedia o navegar por Internet

¿pero qué le digo al terminal? ¡abre una orden! ¡el precio va más rápido a la toma! ¡WOW, WOW!

 
Igor Makanu:

Creo que te ha salido algún tipo de bicicleta complicada :)

existen motores de voz gratuitos de microsoft y google

Microsoft se puede buscar en las primeras consultasen http://speech-text.narod.ru/chap5.html.


bueno y sobre el tema, no eres el primero que encuentra \MQL5\Include\WinAPI

pero la política de MQ no se ha modificado:

- la seguridad de los programas MQL debe estar garantizada, por lo que todos los programas de libre distribución deben funcionar dentro de la "caja de arena MQL" (llamadas, acceso a archivos)

- para uso personal o como tutoriales, puede utilizar la posibilidad de llamar a .dll.

Esto sería una pérdida de tiempo.

Mi búho sólo prepara el texto para su reproducción mediante el motor integrado en el bobinado

 
Igor Makanu:

A mí la idea de comandar un terminal con órdenes de voz o escuchar lo que hace EA me parece una especie de neurosis a punto de convertirse en una forma complicada de psicosis o enfermedades relacionadas

)))

imho, sólo para burlarse de las posibilidades de la tecnología


ZS:

Utilizo OK-Google en el teléfono, búsqueda práctica, práctica, probablemente un PC para utilizar multimedia o navegar por Internet

¿pero qué le digo al terminal? ¡abre una orden! ¡el precio va más rápido a la toma! ¡WOW, WOW!

)))

la idea no es el control por voz del terminal y el universo ))), sino la guía por voz. Digamos que cada cinco minutos para sondear el precio de un instrumento de un conjunto, o tener la capacidad de establecer alertas de voz. En el terminal existen las llamadas "Alertas", cuando se activan se reproduce una breve señal sonora, pero a qué instrumento se refiere, es imposible de entender

 
Nikolai Karetnikov:

que sería una pérdida de tiempo.

Mi búho sólo prepara el texto para su reproducción mediante el motor incorporado en el bobinado

escribirlo en un archivo, en MQL5/Archivos y explicar cómo poner el motor de windows en él. Para unix/linux es un script literalmente en unas pocas líneas, para powershell sospecho que lo mismo.