e novamente dll e mercado - página 4

 
Nikolai Karetnikov:

O Conselheiro de Mercado seria capaz de escrever um arquivo de texto como recurso?

Então eu formaria o arquivo com código fechado e mudaria a extensão com código aberto e o reproduziria

Um Expert Advisor de mercado pode:

1. Escreva os dados em um recurso interno, que pode ser analisado pelo usuário EA, se ele souber o caminho para esse recurso e trabalhar em paralelo. O que o Expert Advisor fará com as informações lidas, somente o usuário sabe.
2. Ele pode enviar dados para um arquivo comum, que o consultor especializado incluirá como recurso e "digerirá" seu conteúdo usando seus algoritmos.


 
Реter Konow:
Experimente. Tentar, como eles dizem, não é uma tortura)
Então, aqui, diga-me se funcionou ou não.

Eu comecei a experimentar e agora tenho uma pergunta.

A 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
//+------------------------------------------------------------------+

como a função CopyFileW está faltando?

 
Nikolai Karetnikov:

Comecei a experimentá-lo e agora tenho uma pergunta.

A biblioteca winapi\fileapi.mqh

como a função CopyFileW está faltando?

Eu não sei. Se seu protótipo não estiver na lista, ele deve ser de alguma outra montagem da função dll.
 
A julgar pelo que Renat disse na linha paralela, esta chamada é obsoleta e serve apenas para as versões de 32 bits do terminal.

Aqui está um link para o tópico: https://www.mql5.com/ru/forum/342311
 
Nikolai Karetnikov:

oops )

O que atrapalha é que o script vbs acessa o motor de voz do windows

Acho que você está montando uma roda muito complicada :)

há motores de voz gratuitos da mcrosoft e google

O Google da Microsoft é pesquisado nas primeiras consultashttp://speech-text.narod.ru/chap5.html


bem e sobre o assunto, você não é o primeiro a encontrar o MQL5IncluaWinAPI

mas a política da MQ não foi alterada:

- a segurança dos programas MQL deve ser garantida, portanto todos os programas distribuídos livremente devem funcionar dentro da "caixa de areia MQL" (chamadas, acesso a arquivos)

- para uso pessoal ou como tutoriais, você pode usar a possibilidade de chamar .dll

 
Parece que o EA usando o motor de voz do Windows não poderá entrar no mercado. Aqui você tem uma fronteira intransponível no desenvolvimento de EAs comercializáveis).

Uma pena, é claro. No futuro, o controle por gestos poderá ser possível.
 
Реter Konow:
Parece que não há como entrar no mercado com um EA que usa o motor de voz do Windows. Lá se vai a fronteira intransponível no desenvolvimento dos EAs vendidos).

Uma pena, é claro. No futuro, o controle gestual poderá ser possível.

Para mim, a idéia de dar comandos de voz ao terminal ou ouvir o que a EA está dizendo parece uma espécie de neurose prestes a se transformar em uma forma complicada de psicose ou outras doenças

)))

imho, apenas para se divertir com as possibilidades da tecnologia


ZS:

Uso o OK-Google no telefone, busca prática, prático, provavelmente um PC para usar multimídia ou navegar na Internet

mas o que posso dizer ao terminal? abra um pedido! o preço vai mais rápido para a tomada! WOW, WOW!

 
Igor Makanu:

Acho que você está inventando algum tipo de bicicleta complicada :)

há motores de voz gratuitos da microsoft e google

A Microsoft é pesquisada no Google nas primeiras consultashttp://speech-text.narod.ru/chap5.html.


bem e sobre o assunto, você não é o primeiro a encontrar o MQL5IncluaWinAPI

mas a política da MQ não foi alterada:

- a segurança dos programas MQL deve ser garantida, portanto todos os programas distribuídos livremente devem funcionar dentro do "MQL sandbox" (chamadas, acesso a arquivos)

- para uso pessoal ou como tutoriais, você pode usar a possibilidade de chamar .dll.

Isto seria uma perda de tempo.

Minha coruja prepara apenas o texto para ser reproduzido pelo motor embutido no enrolamento

 
Igor Makanu:

Para mim, a idéia de comandar um terminal com comandos de voz ou ouvir o que a EA está fazendo parece algum tipo de neurose prestes a se tornar uma forma complicada de psicose ou doenças relacionadas

)))

imho, apenas para se divertir com as possibilidades da tecnologia


ZS:

Uso o OK-Google no telefone, busca prática, prático, provavelmente um PC para usar multimídia ou navegar na Internet

mas o que posso dizer ao terminal? abra um pedido! o preço vai mais rápido para a tomada! UAU, UAU!

)))

a idéia não é o controle por voz do terminal e do universo )), mas a orientação por voz. Digamos que a cada cinco minutos para sondar o preço de um instrumento a partir de um conjunto, ou ter a capacidade de configurar alertas de voz. Alertas" existem no terminal, quando são acionados um curto sinal sonoro é tocado, mas a que instrumento ele se refere, é impossível de entender

 
Nikolai Karetnikov:

isso seria uma perda de tempo.

Minha coruja só prepara o texto para ser reproduzido pelo motor embutido no enrolamento

escreva-o em um arquivo, em MQL5/Files e explique como colocar o motor das janelas nele. Para unix/linux é um roteiro literalmente em algumas linhas, para powerhell eu suspeito o mesmo.