Lo tengo como una función en mi EA, aquí está el comienzo del código
esta es la función en sí
El resto del EA funciona bien, las variables que están en la función no se utilizan en ninguna otra parte del código. El terminal se bloquea en la líneaSetClipboardData( CF_UNICODETEXT, hMem );// Pasando la memoria con la cadena 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(); // Закрываем буфер
}
}
El resto del EA funciona bien, las variables que están en la función no se utilizan en ninguna otra parte del código. El terminal se bloquea en la líneaSetClipboardData( CF_UNICODETEXT, hMem );// Pasando la memoria con la cadena 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);
}
//+------------------------------------------------------------------+
Encontré este script, que supuestamente lee el buffer y emite el valor en la ventana de la terminal - tampoco funciona.
Aunque no mata a la terminal, tampoco sale nada en la ventana. Es un misterio con el buffer, limitaré la salida de datos a Alert por ahora, puedo copiar datos de él con ctrl+c, aunque quería evitar acciones "manuales".
Ese ejemplo era para MT4, por lo que no tenía en cuenta la capacidad de los dígitos.
Aquí hay uno para todas las plataformas:
Sospeché de la capacidad, especialmente cuando miré el segundo script leyendo el buffer. Esa es la única manera de arreglarlo, me habría dado cuenta sólo después de al menos un mes)). Muchas gracias, me has ahorrado mucho tiempo).
Por favor, ayúdame a reescribir el código en MT5 - No soy bueno en las órdenes :(
Al compilar los errores de código:
'SELECT_BY_POS' - identificador no declarado KamikadzeStatistics.mqh 257 33
'MODE_HISTORY' - identificador no declarado KamikadzeStatistics.mqh 257 47
'OrderSelect' - recuento de parámetros erróneos KamikadzeStatistics.mqh 257 13
'OrderType' - función no definida KamikadzeStatistics.mqh 259 60
'OrderCloseTime' - función no definida KamikadzeStatistics.mqh 261 19
'OrderProfit' - función no definida KamikadzeStatistics.mqh 265 42
¿Qué es esto? No soy un buen juez de MQL4. Si me dices lo que necesito, podré escribir todo en MQL5. ¿Tiene algo que ver con el cálculo de pérdidas y ganancias del historial?
Gracias.
Acabo de registrarme, aún no sé cómo funciona el foro.
No entiendo la WinAPI, ¿qué pasa aquí?
déjame ver tus esfuerzos en forma de guión
Lo tengo como una función en mi EA, aquí está el comienzo del código
esta es la función en sí
El resto del EA funciona bien, las variables que están en la función no se utilizan en ninguna otra parte del código.
El terminal se bloquea en la líneaSetClipboardData( CF_UNICODETEXT, hMem );// Pasando la memoria con la cadena al buffer
Lo entiendo, me corrijo).
déjame ver tus esfuerzos como un guión
Lo tengo como una función en mi EA, aquí está el comienzo del código
esta es la función en sí
El resto del EA funciona bien, las variables que están en la función no se utilizan en ninguna otra parte del código.
El terminal se bloquea en la líneaSetClipboardData( CF_UNICODETEXT, hMem );// Pasando la memoria con la cadena al buffer
Encontré este script, que supuestamente lee el buffer y emite el valor en la ventana de la terminal - tampoco funciona.
Aunque no mata a la terminal, tampoco sale nada en la ventana.
Es un misterio con el buffer, limitaré la salida de datos a Alert por ahora, puedo copiar datos de él con ctrl+c, aunque quería evitar acciones "manuales".
Ese ejemplo era para MT4, por lo que no tenía en cuenta la capacidad de los dígitos.
Aquí hay uno para todas las plataformas:
Ese ejemplo era para MT4, por lo que no tenía en cuenta la capacidad de los dígitos.
Aquí hay uno para todas las plataformas:
Sospeché de la capacidad, especialmente cuando miré el segundo script leyendo el buffer.
Esa es la única manera de arreglarlo, me habría dado cuenta sólo después de al menos un mes)).
Muchas gracias, me has ahorrado mucho tiempo).
Integrarlo inmediatamente en la EA)
Por favor, ayúdame a reescribir el código en MT5 - No soy bueno en las órdenes :(
Al compilar los errores de código:
'SELECT_BY_POS' - identificador no declarado KamikadzeStatistics.mqh 257 33
'MODE_HISTORY' - identificador no declarado KamikadzeStatistics.mqh 257 47
'OrderSelect' - recuento de parámetros erróneos KamikadzeStatistics.mqh 257 13
'OrderType' - función no definida KamikadzeStatistics.mqh 259 60
'OrderCloseTime' - función no definida KamikadzeStatistics.mqh 261 19
'OrderProfit' - función no definida KamikadzeStatistics.mqh 265 42
Por favor, ayúdame a reescribir el código en MT5 - No soy bueno en las órdenes :(
Al compilar los errores de código:
'SELECT_BY_POS' - identificador no declarado KamikadzeStatistics.mqh 257 33
'MODE_HISTORY' - identificador no declarado KamikadzeStatistics.mqh 257 47
'OrderSelect' - recuento de parámetros erróneos KamikadzeStatistics.mqh 257 13
'OrderType' - función no definida KamikadzeStatistics.mqh 259 60
'OrderCloseTime' - función no definida KamikadzeStatistics.mqh 261 19
'OrderProfit' - función no definida KamikadzeStatistics.mqh 265 42
¿Qué es esto? No soy un buen juez de MQL4. Si me dices lo que necesito, podré escribir todo en MQL5.
¿Tiene algo que ver con el cálculo de pérdidas y ganancias del historial?