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

 
Alexandr Nikolaev:
因此,事实证明,OrderSelect by ticket从已关闭和已删除的订单中只在加载到终端的历史记录中搜索?手册中没有这方面的信息。

事实上,EA只能访问你在终端找到的数据

这也适用于图表历史,如果你限制了它,EA也将不能访问你在终端看不到的图表条。


阿列克谢-马夫林

在OrdersHistoryTotal的描述中,它说

当选择按票订购时。

池参数被忽略

https://docs.mql4.com/ru/trading/orderselect
 
谁能告诉我,在不知道文件名的情况下,如何获得文件夹中最新文件的柄。也就是说,当运行脚本时,我需要引用最近创建的文件,我不知道该怎么把它放在循环中。MQL4
 
hoka777:
谁能告诉我,在不知道文件名的情况下,怎样才能得到文件夹中最新文件的句柄。也就是说,当运行脚本时,我需要引用最近创建的文件,我不知道该把什么放在循环中。MQL4

文件查找第一个,文件查找下一个,文件获取积分

 

这个条目是什么意思?

int tf=0x0001|0x0002|0x0004|0x0008|0x0010|0x0020|0x0040;
 
Seric29:

这个条目是什么意思?

与此相等。

int tf=1|2|4|8|16|32|64;

有人在某个地方利用旗帜做一些事情。这个条目说,有7个标志存储在tf变量中,它们都被提升了。

 

订单跟踪。

大家好,论坛的先生们。

面对需要跟踪复印机的订单,对问题的复杂性感到惊讶。

任务。

以尽可能少的延迟和系统负荷来跟踪市场和待定订单的开盘、收盘和修改。

可能的解决方案。

1.监测整个订单列表的每一个刻度还不是很有吸引力。

2.MQL5 有很好的OnTrade()和 OnTradeTransaction()函数,但我在MQL4 中没有找到类似的函数。

3.我们可能会发现使用 OnChartEvent来监控图表上的最后一笔订单线及其TPSL 是很有吸引力的,但是这些对象是不可见的,也不被函数所处理也许有一种方法可以 "显示 "它们?

4.现在我在考虑能否从一般日志中获取信息。你也必须监测那里,但要少一些。

我还没有找到满意的解决方案,也许有人已经做了一些挖掘?

 
Artyom Trishkin:

与此相等。

某地有人在利用旗帜做一些事情。这个条目说,有7个标志存储在变量tf中,它们都被升起。

int tf=1|2|4|8|16|32|64;

还有,为什么他们通过竖棍写出如何使用这个?这个旗帜的每个部分都能被访问吗?这里有一个这样的代码。

    if(_Period==1440){diff=86399; tf=0x0001|0x0002|0x0004|0x0008|0x0010|0x0020|0x0040;}// выбор старшего ТФ, с него скрипт рисует на младших ТФ
    if(_Period==240) {diff=14340; tf=0x0001|0x0002|0x0004|0x0008|0x0010|0x0020;}
    if(_Period==60)  {diff=3540;  tf=0x0001|0x0002|0x0004|0x0008|0x0010;}
    if(_Period==30)  {diff=1740;  tf=0x0001|0x0002|0x0004|0x0008;}
    if(_Period==15)  {diff=840;   tf=0x0001|0x0002|0x0004;}
    if(_Period==5)   {diff=240;   tf=0x0001|0x0002;}  

    cl_timeM1=op_timeM1 + diff ;                    // координата даты и времени бара М1 по цене CLOSE старшего ТФ
    cl_NumBarM1=iBarShift(NULL,PERIOD_M1,cl_timeM1);// индекс бара М1
    cl_priceM1=iClose(NULL,PERIOD_M1,cl_NumBarM1);  // координата цены CLOSE бара М1
      
//--- трендовые линии -----------------------------------------------+ 
   for(i=0;i<1000000;i++){name1="Point_"+i; if(ObjectFind(name1)<0) break;}     // позволяет рисовать множество объектов с одинаковым именем, добавляя к имени порядковый номер
  
   ObjectCreate(0,name1,OBJ_TREND,0,op_timeM1,op_priceM1,cl_timeM1,cl_priceM1); // создать объект трендовая линия с координатами цены и времени  
   ObjectSet(name1,OBJPROP_COLOR,clrWhite);                                     // задать цвет объекта
   ObjectSet(name1,OBJPROP_STYLE,STYLE_DASH);                                   // задать стиль объекта (пунктир, линия...)
   ObjectSet(name1,OBJPROP_RAY,false);
   Строчка ниже будет отрисовываться нужное количество раз или что?
   ObjectSet(name1,OBJPROP_TIMEFRAMES,tf);    
 
Seric29:

还有,为什么要通过竖棍写出如何使用它?

只要你称它为 "垂直棒",你就不能读这个代码

阅读帮助https://www.mql5.com/ru/docs/basis/operations/bit

 
Igor Makanu:

只要你称它为 "垂直棒",你就无法读懂这个代码。

阅读帮助https://www.mql5.com/ru/docs/basis/operations/bit

我读了它(我不知道已经读了多少次),理解得很差,因为没有使用的例子,也不清楚它的用途。有一个例子

int a=305;
int b=a;      
int shift=37; 
shift++; 
a=a>>shift;   // 38 в двоичном представлении будет выглядеть как '100110', младшие 5 бит '00110' представляют число 6 
b=b>>6;

有什么办法可以使这一行

if(_Period==1440){diff=86399; tf=0x0001|0x0002|0x0004|0x0008|0x0010|0x0020|0x0040;}

能否通过计数器写得更短?

 
Seric29:

我读过它(我不知道读了多少遍),理解得很差,因为没有如何使用它的例子,也不清楚它的用途。有一个例子。

你看错了例子

Bitwise OR操作

x和y的二进制表示的位数OR。表达式的值在所有x或y不包含0的地方包含1,在所有其他地方包含0。

b = x | y。

例子。

 char a='a',b='b';
//--- операция ИЛИ
   char c=a|b;
   Print("a = ",a,"  b = ",b);
   Print("a | b = ",c);
// Результат будет такой:
// a = 97   b = 98
// a | b = 99