Je l'ai placé comme une fonction dans mon EA, voici le début du code
Voici la fonction elle-même
Le reste de l'EA fonctionne bien, les variables qui sont dans la fonction ne sont pas utilisées ailleurs dans le code. Le terminal se bloque à la ligneSetClipboardData( CF_UNICODETEXT, hMem ) ;// Passage de la mémoire avec la chaîne au tampon
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(); // Закрываем буфер
}
}
Le reste de l'EA fonctionne bien, les variables qui sont dans la fonction ne sont pas utilisées ailleurs dans le code. Le terminal se bloque à la ligneSetClipboardData( CF_UNICODETEXT, hMem ) ;// Passage de la mémoire avec la chaîne au tampon
//+------------------------------------------------------------------+//| 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);
}
//+------------------------------------------------------------------+
J'ai trouvé ce script, qui est censé lire le tampon et sortir la valeur dans la fenêtre du terminal - il ne fonctionne pas non plus.
Bien qu'il ne tue pas le terminal, il n'affiche rien dans la fenêtre non plus. C'est un mystère avec le tampon, je vais limiter la sortie de données vers Alert pour le moment, je peux copier des données à partir de celui-ci avec ctrl+c, mais je voulais éviter les actions "manuelles".
Cet exemple était pour MT4, donc il ne prenait pas en compte le débit binaire.
En voici un pour toutes les plateformes :
J'ai eu des doutes sur la capacité, surtout quand j'ai regardé le deuxième script qui lit le tampon. C'est la seule façon de le réparer, je l'aurais compris au moins un mois plus tard)). Merci beaucoup, vous m'avez fait gagner beaucoup de temps).
Aidez-moi à réécrire le code sur MT5 - je ne suis pas doué pour les ordres :(
Lors de la compilation des erreurs de code :
SELECT_BY_POS' - identifiant non déclaré KamikadzeStatistics.mqh 257 33
MODE_HISTORY' - identificateur non déclaré KamikadzeStatistics.mqh 257 47
OrderSelect' - nombre de paramètres erronés KamikadzeStatistics.mqh 257 13
OrderType' - fonction non définie KamikadzeStatistics.mqh 259 60
OrderCloseTime' - fonction non définie KamikadzeStatistics.mqh 261 19
OrderProfit' - fonction non définie KamikadzeStatistics.mqh 265 42
Qu'est-ce que c'est ? Je ne suis pas un bon juge de MQL4. Si vous me dites ce dont j'ai besoin, je pourrai tout écrire en MQL5. Cela a-t-il quelque chose à voir avec le calcul des pertes et profits de l'historique ?
Merci.
Je viens de m'inscrire, je ne connais pas encore le fonctionnement du forum.
Je ne comprends pas WinAPI, qu'est-ce qui ne va pas ici ?
laissez-moi voir vos efforts sous la forme d'un script
Je l'ai placé comme une fonction dans mon EA, voici le début du code
Voici la fonction elle-même
Le reste de l'EA fonctionne bien, les variables qui sont dans la fonction ne sont pas utilisées ailleurs dans le code.
Le terminal se bloque à la ligneSetClipboardData( CF_UNICODETEXT, hMem ) ;// Passage de la mémoire avec la chaîne au tampon
J'ai compris, je suis corrigé.)
laissez-moi voir vos efforts en tant que script
Je l'ai placé comme une fonction dans mon EA, voici le début du code
Voici la fonction elle-même
Le reste de l'EA fonctionne bien, les variables qui sont dans la fonction ne sont pas utilisées ailleurs dans le code.
Le terminal se bloque à la ligneSetClipboardData( CF_UNICODETEXT, hMem ) ;// Passage de la mémoire avec la chaîne au tampon
J'ai trouvé ce script, qui est censé lire le tampon et sortir la valeur dans la fenêtre du terminal - il ne fonctionne pas non plus.
Bien qu'il ne tue pas le terminal, il n'affiche rien dans la fenêtre non plus.
C'est un mystère avec le tampon, je vais limiter la sortie de données vers Alert pour le moment, je peux copier des données à partir de celui-ci avec ctrl+c, mais je voulais éviter les actions "manuelles".
Cet exemple était pour MT4, il ne tenait donc pas compte de la capacité des chiffres.
En voici un pour toutes les plateformes :
Cet exemple était pour MT4, donc il ne prenait pas en compte le débit binaire.
En voici un pour toutes les plateformes :
J'ai eu des doutes sur la capacité, surtout quand j'ai regardé le deuxième script qui lit le tampon.
C'est la seule façon de le réparer, je l'aurais compris au moins un mois plus tard)).
Merci beaucoup, vous m'avez fait gagner beaucoup de temps).
L'intégrer immédiatement dans l'EA)
Aidez-moi à réécrire le code sur MT5 - je ne suis pas doué pour les ordres :(
Lors de la compilation des erreurs de code :
SELECT_BY_POS' - identifiant non déclaré KamikadzeStatistics.mqh 257 33
MODE_HISTORY' - identificateur non déclaré KamikadzeStatistics.mqh 257 47
OrderSelect' - nombre de paramètres erronés KamikadzeStatistics.mqh 257 13
OrderType' - fonction non définie KamikadzeStatistics.mqh 259 60
OrderCloseTime' - fonction non définie KamikadzeStatistics.mqh 261 19
OrderProfit' - fonction non définie KamikadzeStatistics.mqh 265 42
Aidez-moi à réécrire le code sur MT5 - je ne suis pas doué pour les ordres :(
Lors de la compilation des erreurs de code :
SELECT_BY_POS' - identifiant non déclaré KamikadzeStatistics.mqh 257 33
MODE_HISTORY' - identificateur non déclaré KamikadzeStatistics.mqh 257 47
OrderSelect' - nombre de paramètres erronés KamikadzeStatistics.mqh 257 13
OrderType' - fonction non définie KamikadzeStatistics.mqh 259 60
OrderCloseTime' - fonction non définie KamikadzeStatistics.mqh 261 19
OrderProfit' - fonction non définie KamikadzeStatistics.mqh 265 42
Qu'est-ce que c'est ? Je ne suis pas un bon juge de MQL4. Si vous me dites ce dont j'ai besoin, je pourrai tout écrire en MQL5.
Cela a-t-il quelque chose à voir avec le calcul des pertes et profits de l'historique ?