e di nuovo dll e mercato - pagina 4

 
Nikolai Karetnikov:

Il Market Advisor sarebbe in grado di scrivere un file di testo come risorsa?

Poi formerei il file con codice chiuso e cambierei l'estensione con codice aperto e lo riprodurrei

Un consulente esperto di mercato può:

1. Scrivere dati in una risorsa interna, che può essere analizzata dall'utente EA, se conosce il percorso di quella risorsa e lavora in parallelo. Cosa farà l'Expert Advisor con le informazioni lette lo sa solo l'utente.
2. Può inviare dati a un normale file, che l'Expert Advisor includerà come risorsa e "digerirà" il suo contenuto utilizzando i suoi algoritmi.


 
Реter Konow:
Provate. Provare, come si dice, non è una tortura)
Poi, qui, ditemi se ha funzionato o no.

Ho iniziato a provarlo e ora ho una domanda.

La libreria 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
//+------------------------------------------------------------------+

come mai manca la funzione CopyFileW?

 
Nikolai Karetnikov:

Ho iniziato a provarlo e ora ho una domanda.

La libreria winapi\fileapi.mqh

come mai manca la funzione CopyFileW?

Non lo so. Se il suo prototipo non è nella lista, deve provenire da qualche altro gruppo di funzioni dll.
 
A giudicare da quanto detto da Renat nel thread parallelo, questa chiamata è obsoleta e si adatta solo alle versioni a 32 bit del terminale.

Ecco un link all'argomento: https://www.mql5.com/ru/forum/342311
 
Nikolai Karetnikov:

oops )

Ciò che si mette in mezzo è che lo script vbs accede al motore vocale di Windows

Penso che tu stia cavalcando una ruota molto complicata :)

ci sono motori vocali gratuiti da mcrosoft e google

Quello di Microsoft è googlato nelle prime queryhttp://speech-text.narod.ru/chap5.html


bene e a proposito, non sei il primo a trovare \MQL5\Include\WinAPI

ma la politica MQ non è stata cambiata:

- la sicurezza dei programmi MQL deve essere garantita, quindi tutti i programmi distribuiti liberamente devono lavorare all'interno della "sandbox MQL" (chiamate, accesso ai file)

- per uso personale o come tutorial, è possibile utilizzare la possibilità di chiamare .dll

 
Sembra che l'EA che utilizza il motore vocale di Windows non sarà in grado di entrare nel mercato. Qui avete un limite insormontabile nello sviluppo di EAs commerciabili).

Un peccato, naturalmente. In futuro, il controllo dei gesti potrebbe essere possibile.
 
Реter Konow:
Sembra che non ci sia modo di entrare nel mercato con un EA che utilizza il motore vocale di Windows. Così tanto per il confine insormontabile nello sviluppo di EA vendibili).

Un peccato, naturalmente. In futuro, il controllo gestuale potrebbe essere possibile.

Per me l'idea di dare comandi vocali al terminale o di ascoltare ciò che dice EA sembra una specie di nevrosi che sta per trasformarsi in una forma complicata di psicosi o altre malattie

)))

imho, solo per prendere in giro le possibilità della tecnologia


ZS:

Uso OK-Google sul telefono, ricerca comoda, pratica, probabilmente un PC per usare i multimedia o navigare in Internet

ma cosa posso dire al terminale? aprire un ordine! il prezzo va più veloce alla presa! WOW, WOW!

 
Igor Makanu:

Credo che tu stia inventando una specie di bicicletta complicata :)

ci sono motori vocali gratuiti di microsoft e google

Microsoft viene cercata su Google nelle prime ricerchehttp://speech-text.narod.ru/chap5.html.


bene e a proposito, non sei il primo a trovare \MQL5\Include\WinAPI

ma la politica MQ non è stata cambiata:

- la sicurezza dei programmi MQL deve essere garantita, quindi tutti i programmi distribuiti liberamente devono lavorare all'interno della "sandbox MQL" (chiamate, accesso ai file)

- per uso personale o come tutorial, si può usare la possibilità di chiamare .dll.

Sarebbe una perdita di tempo.

Il mio gufo prepara solo il testo per la riproduzione tramite il motore incorporato nel windup

 
Igor Makanu:

Per me l'idea di comandare un terminale con comandi vocali o di ascoltare ciò che EA sta facendo sembra una specie di nevrosi che sta per svilupparsi in una forma complicata di psicosi o malattie correlate

)))

imho, solo per prendere in giro le possibilità della tecnologia


ZS:

Uso OK-Google sul telefono, ricerca comoda, pratica, probabilmente un PC per usare i multimedia o navigare in Internet

ma cosa posso dire al terminale? aprire un ordine! il prezzo va più veloce alla presa! WOW, WOW!

)))

l'idea non è il controllo vocale del terminale e dell'universo ))), ma la guida vocale. Diciamo ogni cinque minuti per sondare il prezzo di uno strumento di un set, o avere la possibilità di impostare avvisi vocali. Esistono nel terminale cose come gli "Alerts", quando vengono attivati viene riprodotto un breve segnale sonoro, ma a quale strumento si riferisce, è impossibile capire

 
Nikolai Karetnikov:

sarebbe una perdita di tempo.

Il mio gufo prepara solo il testo per la riproduzione tramite il motore incorporato nel windup

scriverlo in un file, in MQL5/Files e spiegare come metterci il motore di Windows. Per unix/linux è uno script letteralmente in poche righe, per powershell sospetto lo stesso.