Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 953

 
Rustam Bikbulatov:

Что у меня не так? Как сделать чтобы рассматривал только открытые ордера? Этот код захватывает еще частично закрытые ордера что мне не нужно

Вообще немного непонятно. Почему функция типа int, а возвращает значение типа string? Ошибку не выдает при компиляции?
 
Igor Kryuchkov:

У меня идет привязка обьекта OBJ_RECTANGLE по ценам и времени, а не по координатам.

И? Всё верно. Когда сжимаете шкалу времени, то сжимается и прямоугольник. Логично? Вы с логикой боритесь?

Отслеживайте смещение графика.

 
Artyom Trishkin:

И? Всё верно. Когда сжимаете шкалу времени, то сжимается и прямоугольник. Логично? Вы с логикой боритесь?

Отслеживайте смещение графика.

Просьба подсказать в какую сторну копать.

 
Igor Kryuchkov:

Просьба подсказать в какую сторну копать.

Вы этим постом процитировали как раз мою подсказку.

Есть несколько типов объектов, которые вы можете использовать для своих целей. То, что используете сейчас точно не подходит.

Остаются несколько вариантов. И все они есть здесь, стоит только почитать и что не понятно - спросить:

Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Типы объектов
Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Типы объектов
  • www.mql5.com
При создании графического объекта функцией ObjectCreate() необходимо указать тип создаваемого объекта, который может принимать одно из значений перечисления ENUM_OBJECT. Дальнейшие уточнения свойств созданного объекта возможно с помощью функций по работе с графическими объектами.
 
Igor Kryuchkov:

Просьба подсказать в какую сторну копать.

Объекты что выше показал, и вот это:

Документация по MQL5: Константы, перечисления и структуры / Константы графиков / Типы событий графика
Документация по MQL5: Константы, перечисления и структуры / Константы графиков / Типы событий графика
  • www.mql5.com
Существуют 11 видов событий, которые можно обрабатывать с помощью функции предопределенной функции OnChartEvent(). Для пользовательских событий предусмотрено 65535 идентификаторов в диапазоне от CHARTEVENT_CUSTOM до CHARTEVENT_CUSTOM_LAST включительно. Для генерации пользовательского события необходимо использовать функцию EventChartCustom...
 
Artyom Trishkin:

Объекты что выше показал, и вот это:

Не вижу обьекта для решения моей задачи, Вы видите? Разве что OBJ_TEXT если он поддерживает рамку!?

 


Rectangle_label это то, что мне нужно. 

Но я попробывал перевести Time, Price с помощью ChartTimePriceToXY в координаты. У меня получилось нарисовать в нужном месте, но опять же при прокруте графика, он стоит на месте, что мне не подходит.


С BitMap та же история, потому что он крепится по координатам, а значит при прокрутке графика все BitMap будут стоять на месте, это мне не подходит.


Тогда в целом вопрос, можно ли реализовать мою идею которую я описал выше?

 
Igor Kryuchkov:


Rectangle_label это то, что мне нужно. 

Но я попробывал перевести Time, Price с помощью ChartTimePriceToXY в координаты. У меня получилось нарисовать в нужном месте, но опять же при прокруте графика, он стоит на месте, что мне не подходит.


С BitMap та же история, потому что он крепится по координатам, а значит при прокрутке графика все BitMap будут стоять на месте, это мне не подходит.


Тогда в целом вопрос, можно ли реализовать мою идею которую я описал выше?

Да.

Я вам давал ссылку на справку по OnChartEvent()

 

всем привет, у меня проблема с lstrcpyW () на MT5,


lstrcpyW (), определенный в winbase.mqh: string    lstrcpyW(ushort &string1[],const string string2);


этот код копирует строку в буфер обмена, как изменить его чтобы работал


//+------------------------------------------------------------------+
//| This piece of code will copy any text we want to the clipboard   |
//+------------------------------------------------------------------+
/*
#import "kernel32.dll"
   int GlobalAlloc(int Flags, int Size);   long                 GlobalAlloc(uint flags,ulong bytes);
   int GlobalLock(int hMem);               long                  GlobalLock(HANDLE mem);            
   int GlobalUnlock(int hMem);             int                    GlobalUnlock(HANDLE mem);
   int GlobalFree(int hMem);               long                 GlobalFree(HANDLE mem);
   int lstrcpyW(int ptrhMem, string Text);
#import


#import "user32.dll"
   int OpenClipboard(int hOwnerWindow);         int   OpenClipboard(HANDLE wnd_new_owner)
   int EmptyClipboard();                        int   EmptyClipboard(void);
   int CloseClipboard();                        int   CloseClipboard(void);
   int SetClipboardData(int Format, int hMem);  long  SetClipboardData(uint format,HANDLE mem);
#import
*/
#define GMEM_MOVEABLE   2
#define CF_UNICODETEXT  13



#include <WinAPI\winuser.mqh>
#include <WinAPI\winbase.mqh>
// Copies the specified text to the clipboard, returning true if successful
bool CopyTextToClipboard(string Text)
{ 
   bool bReturnvalue = false;
   long wnd_new_owner=0 ;
   // Try grabbing ownership of the clipboard 
   if (OpenClipboard(wnd_new_owner) != 0) {
      // Try emptying the clipboard
      if (EmptyClipboard() != 0) {
         // Try allocating a block of global memory to hold the text 
         int lnString = StringLen(Text);
         long hMem = GlobalAlloc(GMEM_MOVEABLE, lnString * 2 + 2);
         if (hMem != 0) {
            // Try locking the memory, so that we can copy into it
            long ptrMem = GlobalLock(hMem);
            if (ptrMem != 0) {
               // Copy the string into the global memory
               lstrcpyW(ptrMem, Text);            
               // Release ownership of the global memory (but don't discard it)
               GlobalUnlock(hMem);            

               // Try setting the clipboard contents using the global memory
               if (SetClipboardData(CF_UNICODETEXT, hMem) != 0) {
                  // Okay
                  bReturnvalue = true;   
               } else {
                  // Failed to set the clipboard using the global memory
                  GlobalFree(hMem);
               }
            } else {
               // Meemory allocated but not locked
               GlobalFree(hMem);
            }      
         } else {
            // Failed to allocate memory to hold string 
         }
      } else {
         // Failed to empty clipboard
      }
      // Always release the clipboard, even if the copy failed
      CloseClipboard();
   } else {
      // Failed to open clipboard
   }

   return (bReturnvalue);
}




void OnStart(){

bool re = false ;

re =CopyTextToClipboard("11111");

printf(re);

}
 
Причина обращения: