新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 953

 
Rustam Bikbulatov:

我有什么毛病?我怎样才能使只有未结清的订单被考虑?这段代码还捕获了部分关闭的订单,我不需要这样做

事实上,我一点也不明白。为什么int类型的函数会返回一个字符串类型的 值?它在编译过程中没有抛出错误?
 
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是我需要的。

但我试图用ChartTimePriceToXY将时间、价格翻译成坐标。我能够在正确的地方绘制,但同样地,当滚动图表时,它站在原地,这对我来说并不奏效。


这和BitMap的情况一样,因为它是通过坐标连接的,这意味着所有BitMaps在滚动图表时都会站在原地,这不适合我。


那么总的来说,有一个问题,是否有可能实现我上面描述的想法?

 
Igor Kryuchkov:


Rectangle_label是我需要的。

但我试图用ChartTimePriceToXY将时间、价格翻译成坐标。我能够在正确的地方绘制,但同样地,当滚动图表时,它站在原地,这对我来说并不奏效。


这和BitMap的情况一样,因为它是通过坐标连接的,这意味着所有BitMaps在滚动图表时都会站在原地,这不适合我。


那么总的来说,有可能实现我上述的想法吗?

是的。

我给了你OnChartEvent()的帮助链接。

 

大家好,我在MT5上遇到了lstrcpyW()的问题。


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

}
 
原因: