он у меня ввиде функции в советнике, вот начало кода
это сама функция
остальной советник работает нормально, переменные, которые в функции, больше в коде нигде не используются. Терминал вылетает на строке SetClipboardData( CF_UNICODETEXT, hMem ); // Передаём память со строкой в буфер
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(); // Закрываем буфер
}
}
остальной советник работает нормально, переменные, которые в функции, больше в коде нигде не используются. Терминал вылетает на строке SetClipboardData( CF_UNICODETEXT, hMem ); // Передаём память со строкой в буфер
//+------------------------------------------------------------------+//| 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);
}
//+------------------------------------------------------------------+
Обнаружил вот такой скрипт, по идее читает буфер и выводит значение в окне терминала - тоже не работает.
Хоть и не убивает терминал, но и в окне ничего не выводит. Загадка с буфером какая то, ограничусь пока выводом данных в алерт, оттуда можно ctrl+c скопировать, хоть и хотелось избежать "ручных" действий.
Тот пример был для MT4, поэтому не учитывалась разрядность.
Вот для всех платформ:
Вот на счет разрядности у меня появились подозрения, особенно когда я посмотрел второй скрипт читающий буфер. Вот только как исправить я бы допер только через месяц как минимум)) Большое спасибо, вы сэкономили мне кучу времени).
'OrderType' - function not definedKamikadzeStatistics.mqh25960
'OrderCloseTime' - function not definedKamikadzeStatistics.mqh26119
'OrderProfit' - function not definedKamikadzeStatistics.mqh26542
Это чего? Я в MQL4 плохо соображаю, если скажете что надо получить, то можно сразу на MQL5 все написать. Вроде чтото связанное с расчетом прибыли/убытка в истории?
Это чего? Я в MQL4 плохо соображаю, если скажете что надо получить, то можно сразу на MQL5 все написать. Вроде чтото связанное с расчетом прибыли/убытка в истории?
В том то и дело, что сам не пойму - код писали мне на заказ, выдернуто из класса. Я вот так же склонен считать, что этот код для расчета баланса. Но, по идеи изменение баланса с открытием-закрытием нового ордера должно сбрасываться в массив, но не вижу этого...
он у меня ввиде функции в советнике, вот начало кода
это сама функция
остальной советник работает нормально, переменные, которые в функции, больше в коде нигде не используются.
Терминал вылетает на строке SetClipboardData( CF_UNICODETEXT, hMem ); // Передаём память со строкой в буфер
Понял, исправлюсь)
дайте ваши потуги в виде скрипта посмотреть
он у меня ввиде функции в советнике, вот начало кода
это сама функция
остальной советник работает нормально, переменные, которые в функции, больше в коде нигде не используются.
Терминал вылетает на строке SetClipboardData( CF_UNICODETEXT, hMem ); // Передаём память со строкой в буфер
Обнаружил вот такой скрипт, по идее читает буфер и выводит значение в окне терминала - тоже не работает.
Хоть и не убивает терминал, но и в окне ничего не выводит.
Загадка с буфером какая то, ограничусь пока выводом данных в алерт, оттуда можно ctrl+c скопировать, хоть и хотелось избежать "ручных" действий.
Тот пример был для MT4, поэтому не учитывалась разрядность.
Вот для всех платформ:
Тот пример был для MT4, поэтому не учитывалась разрядность.
Вот для всех платформ:
Вот на счет разрядности у меня появились подозрения, особенно когда я посмотрел второй скрипт читающий буфер.
Вот только как исправить я бы допер только через месяц как минимум))
Большое спасибо, вы сэкономили мне кучу времени).
Незамедлительно интегрирую его в советника)
Помогите, пожалуйста, переписать код на MT5 - я в ордерах вообще не соображаю :(
При компиляции ошибки:
'SELECT_BY_POS' - undeclared identifier KamikadzeStatistics.mqh 257 33
'MODE_HISTORY' - undeclared identifier KamikadzeStatistics.mqh 257 47
'OrderSelect' - wrong parameters count KamikadzeStatistics.mqh 257 13
'OrderType' - function not defined KamikadzeStatistics.mqh 259 60
'OrderCloseTime' - function not defined KamikadzeStatistics.mqh 261 19
'OrderProfit' - function not defined KamikadzeStatistics.mqh 265 42
Помогите, пожалуйста, переписать код на MT5 - я в ордерах вообще не соображаю :(
При компиляции ошибки:
'SELECT_BY_POS' - undeclared identifier KamikadzeStatistics.mqh 257 33
'MODE_HISTORY' - undeclared identifier KamikadzeStatistics.mqh 257 47
'OrderSelect' - wrong parameters count KamikadzeStatistics.mqh 257 13
'OrderType' - function not defined KamikadzeStatistics.mqh 259 60
'OrderCloseTime' - function not defined KamikadzeStatistics.mqh 261 19
'OrderProfit' - function not defined KamikadzeStatistics.mqh 265 42
Это чего? Я в MQL4 плохо соображаю, если скажете что надо получить, то можно сразу на MQL5 все написать.
Вроде чтото связанное с расчетом прибыли/убытка в истории?
Это чего? Я в MQL4 плохо соображаю, если скажете что надо получить, то можно сразу на MQL5 все написать.
Вроде чтото связанное с расчетом прибыли/убытка в истории?
В том то и дело, что сам не пойму - код писали мне на заказ, выдернуто из класса. Я вот так же склонен считать, что этот код для расчета баланса. Но, по идеи изменение баланса с открытием-закрытием нового ордера должно сбрасываться в массив, но не вижу этого...
Помогите, пожалуйста, переписать код на MT5 - я в ордерах вообще не соображаю :(
#include <MT4Orders.mqh>