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

 
Vladimir Pastushak:


这是错的,其他的例子也是错的。

如果你在1.2356处设置了止损,在新的交易日你又在1.2356处设置了止损,你会得到错误1

这是从第一块开始的。我改变了它,但错误仍然存在。这个带停止的条件已被实施,以使EA不做不必要的通过。而在一个新的刻度线上,EA将不会再次设置相同的止损--因为在这个条件之后,我会检查其他条件,例如,如果止损等于我想要设置的值。

 
Alexandr Sokolov:

这是第一个街区的情况。我改变了它,但错误仍然存在。我在这个条件中设置了止损点,以防止EA进行不必要的交易。在一个新的刻度线上,EA不会再次设置相同的止损--因为在这个条件被检查后,其他条件也被检查,例如,如果止损等于要设置的值

OrderStopLoss()

所有订单......()必须被规范化

 
Vladimir Pastushak:

所有订单......()需要被规范化。

我也这么做了--但也没有帮助。同时,和以前一样,我在测试器中没有这个错误,而MQL却莫名其妙地发现了它

 
该文本文件应该保存在哪里,以便可以从另一个终端读取?
 
yiduwi:
应该用什么路径来保存一个文本文件,以便可以从另一个终端读取它?

enum_terminal_info_string

识别器

描述

财产类型

终端语言

终端语言

绳子

终端_公司

公司名称

绳子

TERMINAL_NAME

终端名称

绳子

TERMINAL_PATH

终端所运行的文件夹

绳子

终端_数据_路径

存储终端数据的文件夹

绳子

终端_commondata_path

计算机上安装的所有客户终端的共享文件夹

绳子


Документация по MQL5: Проверка состояния / TerminalInfoString
Документация по MQL5: Проверка состояния / TerminalInfoString
  • www.mql5.com
Проверка состояния / TerminalInfoString - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
 
Artyom Trishkin:

谢谢你。

 

做一个文章中的一对一的例子https://www.mql5.com/ru/articles/18

文章中的代码在MT4中100%有效,我在今年1月检查过。

或者,你已经为64位的dll编译了一个项目,MT4终端是32位的,你需要为32位的.dll配置和编译一个项目。

Как за 10 минут написать DLL библиотеку для MQL5 и обмениваться данными?
Как за 10 минут написать DLL библиотеку для MQL5 и обмениваться данными?
  • www.mql5.com
Так уж сложилось, что сейчас мало кто из разработчиков помнит, как написать простую DLL библиотеку и в чем особенности связывания разнородных систем. Я постараюсь за 10 минут на примерах показать весь процесс создания простых DLL библиотек и раскрою некоторые технические детали нашей реализации связывания. Демонстрация будет на примере Visual...
 

你好,亲爱的论坛用户。

你能解释一下在哪种情况下代码写得正确,哪种情况下不正确,为什么(见下文)?

for (z=OrdersTotal()-1; z>=0; z --)
    {
      OrderSelect (z, SELECT_BY_POS);
      if (OrderSymbol()!=Symbol()) continue;
      if (OrderMagicNumber()!=MAGIC) continue;
      if(OrderType()==OP_BUY)  CloseBUY();
    }
for(int i=OrdersTotal()-1;i>=0;i--)
            {
            if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
            {
             if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic)
             {
             if(OrderType()==OP_BUY)  CloseBUY();
             }
            }
            }

如果可能的话,请更详细地说明。谢谢你。

 
novichok2018:

你好,亲爱的论坛用户。

你能解释一下在哪种情况下代码写得正确,哪种情况下不正确,为什么(见下文)?

如果可能的话,请更详细地说明。谢谢你。

甚至在第一种情况下,编译器会向你强调" 必须检查OrderSelect的结果";-)

如果你为第一个改变,如果(!OrderSelect(...))继续;选项是相同的。

在第一个案例中,代码在视觉上是线性的,在第二个案例中,它看起来像一个楼梯。我更喜欢第一种变体,它更容易阅读,而且一般来说,深层逻辑标签的出现{{{{ }}}},暗示着是时候改变一些东西了 :-)

原因: