Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 953

 
Rustam Bikbulatov:

Qu'est-ce qui ne va pas chez moi ? Comment faire pour que seuls les ordres ouverts soient pris en compte ? Ce code capture également les ordres partiellement fermés, ce dont je n'ai pas besoin.

En fait, je ne le comprends pas du tout. Pourquoi la fonction de type int renvoie-t-elle une valeur de type string? Il n'y a pas d'erreur pendant la compilation ?
 
Igor Kryuchkov:

J'ai un objetOBJ_RECTANGLE lié par le prix et l'heure, et non par les coordonnées.

И ? C'est exact. Lorsque vous compressez la timeline, le rectangle est également compressé. Est-ce logique ? Vous avez du mal avec la logique ?

Suivez l'évolution du graphique.

 
Artyom Trishkin:

И ? C'est vrai. Lorsque vous rétrécissez la timeline, le rectangle se rétrécit également. C'est logique ? Vous avez du mal avec la logique ?

Suivez l'évolution du graphique.

S'il vous plaît, dites-moi dans quel sens creuser.

 
Igor Kryuchkov:

S'il vous plaît, dites-moi quelle direction prendre.

Vous avez cité de mon post exactement ce que je vous ai dit.

Il existe plusieurs types d'objets que vous pouvez utiliser à vos fins. Ce que vous utilisez actuellement n'est certainement pas le bon.

Cela laisse plusieurs options. Et toutes sont ici, il suffit de lire et de demander ce que vous ne comprenez pas :

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

S'il vous plaît, dites-moi quelle direction prendre.

Les objets que j'ai montrés ci-dessus et ceci :

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

Les objets que j'ai montrés ci-dessus, et celui-ci :

Je ne vois pas d'objet pour résoudre mon problème, et vous ? À moins que OBJ_TEXT ne prenne en charge un cadre ! ?

 


Rectangle_label est ce dont j'ai besoin.

Mais j'ai essayé de traduire le temps, le prix avec ChartTimePriceToXY en coordonnées. J'ai pu dessiner au bon endroit, mais là encore, lorsque l'on fait défiler le graphique, il reste en place, ce qui ne me convient pas.


C'est la même histoire avec BitMap, parce qu'il est attaché par des coordonnées, ce qui signifie que tous les BitMap resteront en place lors du défilement du graphique, cela ne me convient pas.


Alors en général une question, est-il possible de mettre en œuvre mon idée que j'ai décrite ci-dessus ?

 
Igor Kryuchkov:


Rectangle_label est ce dont j'ai besoin.

Mais j'ai essayé de traduire le temps, le prix avec ChartTimePriceToXY en coordonnées. J'ai pu dessiner au bon endroit, mais là encore, lorsque l'on fait défiler le graphique, il reste en place, ce qui ne me convient pas.


C'est la même histoire avec BitMap, parce qu'il est attaché par des coordonnées, ce qui signifie que tous les BitMap resteront en place lors du défilement du graphique, cela ne me convient pas.


Alors question globale, est-il possible de mettre en œuvre mon idée que j'ai décrite ci-dessus ?

Oui.

Je vous ai donné le lien d'aide pour OnChartEvent()

 

Bonjour à tous, j'ai un problème avec lstrcpyW () sur MT5,


lstrcpyW () défini dans winbase.mqh :string lstrcpyW(ushort &string1[],const string2);


ce code copie une chaîne de caractères dans le presse-papiers, comment puis-je le modifier pour qu'il fonctionne ?


//+------------------------------------------------------------------+
//| 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);

}
 
Raison: