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

 
Oleg Remizov:

而根据我的观察,用户喜欢专家顾问在屏幕上显示各种信息:它画出箭头、线条、通道和其他东西,以显示 "人工智能 "的蓬勃活动)。

根据指标,专家顾问提供跟踪。我想把这个过程可视化,以便用户可以看到带止损的虚线。

使用趋势线,第一个锚点 是当前条,第二个锚点 是历史上的一个条,把厚度定为2-3。

 
Vitaly Muzichenko:

使用趋势线,第一个锚点是 当前条,第二个锚点 是历史上的一个条,把厚度放在2-3。

好主意!非常感谢你,看起来刚刚好。

趋势

 
ANDREY:

以下是Kovalev的教科书中关于在声明数组的同时初始化数组的内容

8.4.4 阵列初始化

一个数组只能用适当类型的常量来初始化。一维和多维数组用逗号隔开的一维常量序列来初始化。序列被括在大括号内。

int Mas_i[3][4] = { 0, 1, 2, 3, 10, 11, 12, 13, 20, 21, 22, 23 }

double Mas_d[2][3] = { 0.1, 0.2, -0.3, -10.2, 1.5, 7.0 };

bool Mas_b[5] = { false, true, false, true, true }

初始化序列 中可以跳过一个或多个常数。

在我看来,从教科书上看,当一个数组被声明时,整个数组被初始化为所有的数据,而不仅仅是数组的第一个元素。
如果我对教科书有误解,请你指出我的误解之处,我将不胜感激。

我没有丝毫的欲望来讨论你的教科书,我没有读过它

并在论坛上写道:"这本教科书已经过时了,而且无关紧要。

一个二维数组可以用这种方式进行初始化。

int arr[2][5] = {{1, 2, 3, 4, 5,}, {6, 7, 8, 9, 10}};
 
Igor Makanu:

没有丝毫想讨论你的教科书,我没有读过

并在论坛上写道:"这本教科书已经过时了,而且无关紧要。

一个二维的数组可以这样初始化。

非常感谢您的帮助。你已经直接猜到了我的想法。我只是在思考如何初始化一个二维数组.....,但只能通过函数ArrayInitialize();
这个函数的手册只给出了一维数组的初始化信息,在我看来是这样的。
如果你告诉我,我将非常感激。

 
ANDREY:

非常感谢您的帮助。你已经直接猜到了我的想法。我只是在思考如何初始化二维数组.....,但只能通过函数ArrayInitialize();
在这个函数的参考资料中,只给出了初始化一维数组的信息,在我看来是这样的。
如果你告诉我,我将非常感激。

ArrayFill()允许你将一个数组的 所有元素 都填上所需的值,可用于二维数组。请看这个函数的帮助中的例子。

顺便说一下,我检查了ArrayInitialize()应用于二维数组的情况,它也能工作。但在这两种情况下,你只能用一个特定的值来初始化所有的元素。

如果你想为每个元素设置一个不同的值,这些函数将不起作用。

Документация по MQL5: Основы языка / Переменные
Документация по MQL5: Основы языка / Переменные
  • www.mql5.com
Переменные должны быть объявлены перед их использованием. Для идентификации переменных используются уникальные имена. Описания переменных используются для их определения и объявления типов. Описание не является оператором. Индексом массива может быть только целое число. Допускаются не более чем четырехмерные массивы. Нумерация элементов массива...
 
Oleg Remizov:

ArrayFill()允许你将一个数组的 所有元素 都填上所需的值,可用于二维数组。请看这个函数的帮助中的例子。

顺便说一下,我检查了ArrayInitialize()应用于二维数组的情况,它也能工作。但在这两种情况下,你只能用一个特定的值来初始化所有的元素。

如果你需要为每个项目设置不同的值,这些功能将无法工作。

非常感谢您的帮助。

 
Oleg Remizov:

不幸的是,该模板对我不起作用。指示器显示功能应在设置中打开/关闭,而绘图应直接从EA中完成。专家顾问应该能够在一个文件中传输。

不画箭头,而是画一条趋势线,两点的价格和时间相同。使用线条的粗细来调整所产生的点的大小。

 
你好,我是一个新人,想知道如何从我的账户中取钱,然后什么时候转账
 

问候。

在MT4中有这样一个东西。

#import "user32.dll"
   int SendMessageA(int hWnd, int Msg, int wParam, char &lParam[]);
   int RegisterWindowMessageA(uchar &lParam[]);
#import

string IndiName="TestBot";

void OnStart()
  {
   char buf[];
   StringToCharArray("MetaTrader4_Internal_Message", buf);
   int MT4InternalMsg=RegisterWindowMessageA(buf);
   StringToCharArray(IndiName, buf);
   long handle=ChartGetInteger(0, CHART_WINDOW_HANDLE);
   Print(MT4InternalMsg);
   bool res=SendMessageA((int)handle, MT4InternalMsg, 14, buf);
   Print("Функция SendMessageA завершила работу с результатом: ",res);
  }

这段代码向终端窗口发送了一条命令,以运行一个特定的EA。

MT5也有类似的功能吗?

我是这样试的。

#import "user32.dll"
   int SendMessageA(long hWnd, long Msg, uint wParam, uchar &lParam[]);
   int RegisterWindowMessageA(uchar &lParam[]);
#import

string IndiName="TestBot";

void OnStart()
  {
   uchar buf[];
   StringToCharArray("MetaTrader5_Internal_Message", buf);
   long MT5InternalMsg=RegisterWindowMessageA(buf);
   StringToCharArray(IndiName, buf);
   long handle=ChartGetInteger(0, CHART_WINDOW_HANDLE);
   Print("Window handle: ", handle);
   Print("Message: ",MT5InternalMsg);
   for(int i = 0; i<100; i++){
      bool res=SendMessageA(handle, MT5InternalMsg, i , buf);
      printf("Функция SendMessageA завершила работу с результатом: %d, номер: %d ",res, i);
   }
  }

不起作用。

我试着扫描spy++,但在MT5中没有消息,不像在MT4中。

我需要准确地调用专家顾问的设置窗口。

 
50211108:
你好,我是一个新手,我想弄清楚如何从账户中取钱,然后何时存款

你只能提取你从这一资源中获得的收益,也就是销售软件、信号和计算机电源。输入的内容只能用于该资源。