Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 953

 
Rustam Bikbulatov:

Was ist los mit mir? Wie kann ich erreichen, dass nur offene Aufträge berücksichtigt werden? Dieser Code erfasst auch teilweise abgeschlossene Aufträge, die ich nicht benötige.

Eigentlich verstehe ich das überhaupt nicht. Warum gibt die Funktion vom Typ int einen Wert vom Typ string zurück? Bei der Kompilierung tritt kein Fehler auf?
 
Igor Kryuchkov:

Ich habe einOBJ_RECTANGLE-Objekt, das nach Preis und Zeit und nicht nach Koordinaten verknüpft ist.

И? Das ist richtig. Wenn Sie die Zeitleiste komprimieren, wird auch das Rechteck komprimiert. Ist das logisch? Haben Sie Probleme mit der Logik?

Verfolgen Sie die Verschiebung im Diagramm.

 
Artyom Trishkin:

И? Das ist richtig. Wenn Sie die Zeitleiste verkleinern, wird auch das Rechteck verkleinert. Ist das logisch? Haben Sie Probleme mit der Logik?

Verfolgen Sie die Verschiebung in der Grafik.

Bitte sagen Sie mir, in welche Richtung ich graben soll.

 
Igor Kryuchkov:

Bitte sagen Sie mir, welchen Weg ich einschlagen soll.

Sie haben aus meinem Beitrag genau das zitiert, was ich Ihnen gesagt habe.

Es gibt verschiedene Arten von Objekten, die Sie für Ihre Zwecke verwenden können. Was Sie jetzt verwenden, ist definitiv nicht das Richtige.

Es gibt also mehrere Möglichkeiten. Sie müssen nur lesen und fragen, was Sie nicht verstehen:

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

Bitte sagen Sie mir, welchen Weg ich einschlagen soll.

Die Objekte, die ich oben gezeigt habe, und dieses:

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

Die Objekte, die ich oben gezeigt habe, und dieses:

Ich sehe keinen Gegenstand, der mein Problem lösen könnte, Sie etwa? Es sei denn, OBJ_TEXT unterstützt einen Rahmen!?

 


Rectangle_label ist das, was ich brauche.

Aber ich habe versucht, Time, Price mit ChartTimePriceToXY in Koordinaten zu übersetzen. Ich konnte an der richtigen Stelle zeichnen, aber wenn ich das Diagramm verschiebe, bleibt es stehen, was bei mir nicht funktioniert.


Es ist die gleiche Geschichte mit BitMap, weil es durch Koordinaten verbunden ist, was bedeutet, dass alle BitMaps an Ort und Stelle stehen, wenn das Diagramm scrollen, es passt mir nicht.


Dann die allgemeine Frage: Ist es möglich, meine oben beschriebene Idee zu verwirklichen?

 
Igor Kryuchkov:


Rectangle_label ist das, was ich brauche.

Aber ich habe versucht, Time, Price mit ChartTimePriceToXY in Koordinaten zu übersetzen. Ich konnte an der richtigen Stelle zeichnen, aber wenn ich das Diagramm verschiebe, bleibt es stehen, was bei mir nicht funktioniert.


Es ist die gleiche Geschichte mit BitMap, weil es durch Koordinaten verbunden ist, was bedeutet, dass alle BitMaps an Ort und Stelle stehen, wenn das Diagramm scrollen, es passt mir nicht.


Dann die allgemeine Frage: Ist es möglich, meine oben beschriebene Idee zu verwirklichen?

Ja.

Ich habe Ihnen den Hilfe-Link für OnChartEvent() gegeben

 

Hallo zusammen, ich habe ein Problem mit lstrcpyW () auf MT5,


lstrcpyW () definiert in winbase.mqh:string lstrcpyW(ushort &string1[],const string string2);


Dieser Code kopiert eine Zeichenkette in die Zwischenablage, wie kann ich ihn ändern, damit er funktioniert?


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

}