L'ho come una funzione nel mio EA, ecco l'inizio del codice
questa è la funzione stessa
Il resto dell'EA funziona bene, le variabili che sono nella funzione non sono usate da nessun'altra parte nel codice. Il terminale va in crash sulla lineaSetClipboardData( CF_UNICODETEXT, hMem );// Passare la memoria con la stringa al buffer
void OutClipboard()
{
uint hwnd = (uint)ChartGetInteger( 0, CHART_WINDOW_HANDLE );
int strSize = StringLen( text ) * 2 + 2; // Получаем размер строки в байтахif( OpenClipboard( hwnd ) ) // Открываем буфер
{
EmptyClipboard(); // Очищаем буферuint hMem = GlobalAlloc( GHND, strSize ); // Выделяем памятьuint pMem = GlobalLock( hMem ); // Получаем адрес выделенной памяти
memcpy( pMem, text, strSize ); // Копируем строку в память
GlobalUnlock( hMem );
SetClipboardData( CF_UNICODETEXT, hMem ); // Передаём память со строкой в буфер
CloseClipboard(); // Закрываем буфер
}
}
Il resto dell'EA funziona bene, le variabili che sono nella funzione non sono usate da nessun'altra parte nel codice. Il terminale va in crash sulla lineaSetClipboardData( CF_UNICODETEXT, hMem );// Passare la memoria con la stringa al buffer
//+------------------------------------------------------------------+//| Clipboard.mq4 |//| ПавелИванович(api) |//| p231970@hotmail.com |//| Перенос на MQL5 и доработка unicode - Сергеев Алексей (sergeev) |//| profy.mql@gmail.com |//+------------------------------------------------------------------+#property version"1.00"#property description"Getting contents of the clipboard"#import "user32.dll"bool OpenClipboard(int hwnd);
int GetClipboardData(int uFormat);
bool CloseClipboard();
int GetAncestor(long hWnd,int gaFlags);
int GetAncestor(int hWnd,int gaFlags);
#import "kernel32.dll"int GlobalLock(int hMem);
bool GlobalUnlock(int hMem);
string lstrcatW(int dst,string src);
#import
//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+intOnStart()
{
int hMain;
string clip="";
//---if(_IsX64)
hMain=GetAncestor(ChartGetInteger(ChartID(),CHART_WINDOW_HANDLE),2);
else
hMain=GetAncestor((int)ChartGetInteger(ChartID(),CHART_WINDOW_HANDLE),2);
//---if(OpenClipboard(hMain))
{
int hglb=GetClipboardData(1/*CF_TEXT*/);
if(hglb!=0)
{
int lptstr=GlobalLock(hglb);
if(lptstr!=0) { clip=lstrcatW(lptstr,""); GlobalUnlock(hglb); }
}
CloseClipboard();
}
// translate ANSI to UNICODEushort chW; uchar chA; string rez;
for(int i=0; i<StringLen(clip); i++)
{
chW=StringGetCharacter(clip, i);
chA=uchar(chW&255); rez=rez+CharToString(chA);
chA=uchar(chW>>8&255); rez=rez+CharToString(chA);
}
MessageBox("Clipboard: \n"+rez,"Clipboard");
return(0);
}
//+------------------------------------------------------------------+
Ho trovato questo script, che presumibilmente legge il buffer ed emette il valore nella finestra del terminale - non funziona nemmeno questo.
Anche se non uccide il terminale, non emette nulla nella finestra. È un mistero con il buffer, limiterò l'emissione di dati su Alert per ora, posso copiare i dati da esso con ctrl+c, anche se volevo evitare azioni "manuali".
Quell'esempio era per MT4, quindi non teneva conto del bit rate.
Eccone uno per tutte le piattaforme:
Mi sono insospettito sulla capacità, soprattutto quando ho guardato il secondo script che leggeva il buffer. Questo è l'unico modo per risolvere il problema, l'avrei capito almeno un mese dopo)). Grazie mille, mi hai risparmiato un sacco di tempo).
'OrderType' - funzione non definita KamikadzeStatistics.mqh 259 60
'OrderCloseTime' - funzione non definita KamikadzeStatistics.mqh 261 19
'OrderProfit' - funzione non definita KamikadzeStatistics.mqh 265 42
Che cos'è questo? Non sono un buon giudice di MQL4. Se mi dici di cosa ho bisogno, sarò in grado di scrivere tutto in MQL5. Ha qualcosa a che fare con il calcolo dei profitti e delle perdite della storia?
Consenti l'uso dei cookie per accedere al sito MQL5.com.
Abilita le impostazioni necessarie nel browser, altrimenti non sarà possibile accedere.
Hai effettuato l'accesso. L'autenticazione a due fattori è stata disattivata. Configurala di nuovo e scansiona un nuovo codice QR, oppure continua con l'autenticazione a due fattori disattivata.
Grazie.
Appena registrato, non so ancora come funziona il forum.
Non capisco WinAPI, cosa c'è di sbagliato qui?
fatemi vedere i vostri sforzi sotto forma di script
L'ho come una funzione nel mio EA, ecco l'inizio del codice
questa è la funzione stessa
Il resto dell'EA funziona bene, le variabili che sono nella funzione non sono usate da nessun'altra parte nel codice.
Il terminale va in crash sulla lineaSetClipboardData( CF_UNICODETEXT, hMem );// Passare la memoria con la stringa al buffer
Ho capito, mi correggo).
fatemi vedere i vostri sforzi come uno script
L'ho come una funzione nel mio EA, ecco l'inizio del codice
questa è la funzione stessa
Il resto dell'EA funziona bene, le variabili che sono nella funzione non sono usate da nessun'altra parte nel codice.
Il terminale va in crash sulla lineaSetClipboardData( CF_UNICODETEXT, hMem );// Passare la memoria con la stringa al buffer
Ho trovato questo script, che presumibilmente legge il buffer ed emette il valore nella finestra del terminale - non funziona nemmeno questo.
Anche se non uccide il terminale, non emette nulla nella finestra.
È un mistero con il buffer, limiterò l'emissione di dati su Alert per ora, posso copiare i dati da esso con ctrl+c, anche se volevo evitare azioni "manuali".
Quell'esempio era per MT4, quindi non teneva conto della capacità delle cifre.
Eccone uno per tutte le piattaforme:
Quell'esempio era per MT4, quindi non teneva conto del bit rate.
Eccone uno per tutte le piattaforme:
Mi sono insospettito sulla capacità, soprattutto quando ho guardato il secondo script che leggeva il buffer.
Questo è l'unico modo per risolvere il problema, l'avrei capito almeno un mese dopo)).
Grazie mille, mi hai risparmiato un sacco di tempo).
Integrarlo immediatamente in EA)
Per favore aiutatemi a riscrivere il codice su MT5 - non sono bravo con gli ordini :(
Durante la compilazione degli errori di codice:
'SELECT_BY_POS' - identificatore non dichiarato KamikadzeStatistics.mqh 257 33
'MODE_HISTORY' - identificatore non dichiarato KamikadzeStatistics.mqh 257 47
'OrderSelect' - conteggio parametri errato KamikadzeStatistics.mqh 257 13
'OrderType' - funzione non definita KamikadzeStatistics.mqh 259 60
'OrderCloseTime' - funzione non definita KamikadzeStatistics.mqh 261 19
'OrderProfit' - funzione non definita KamikadzeStatistics.mqh 265 42
Per favore aiutatemi a riscrivere il codice su MT5 - non sono bravo con gli ordini :(
Durante la compilazione degli errori di codice:
'SELECT_BY_POS' - identificatore non dichiarato KamikadzeStatistics.mqh 257 33
'MODE_HISTORY' - identificatore non dichiarato KamikadzeStatistics.mqh 257 47
'OrderSelect' - conteggio parametri errato KamikadzeStatistics.mqh 257 13
'OrderType' - funzione non definita KamikadzeStatistics.mqh 259 60
'OrderCloseTime' - funzione non definita KamikadzeStatistics.mqh 261 19
'OrderProfit' - funzione non definita KamikadzeStatistics.mqh 265 42
Che cos'è questo? Non sono un buon giudice di MQL4. Se mi dici di cosa ho bisogno, sarò in grado di scrivere tutto in MQL5.
Ha qualcosa a che fare con il calcolo dei profitti e delle perdite della storia?