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

 
Mickey Moose:


没错,这就是我想把它拿出来的原因。

要从这个文件中获得源代码比解决这类问题要难得多)

你可以做一个很酷的事情,一般来说:一个EA(或任何你没有来源的东西)将发送邮件到附近的图表 :-)

就在我闲暇时做了http://luxtrade.tk/atcl:start(论坛主题:https://www.mql5.com/ru/forum/224745)

在软件包中,有SMTP服务器(https://core.tcl.tk/tcllib/doc/tcllib-1-18/embedded/www/tcllib/files/modules/smtpd/smtpd.html)。

换句话说,你可以在指标中使用Eval("package require smtpd"),然后指定传递的回调,并在同一过程中,在不离开MetaTrader的情况下,立即接收必要的邮件。

ATcl
  • luxtrade.tk
Рад представить вам библиотеку ATcl v1 beta - интерпретатор Tcl для MT4. Расширяте возможности ваших программ MQL, используйте СУБД, дополняйте сетевыми средствами, интегрируйте их с любыми программами используя Tcl.
 
Maxim Kuznetsov:

你可以做一个有趣的事情,一般来说:一个EA(或任何你有的没有源代码的东西)将发送邮件到邻近的图表 :-)

刚刚做了http://luxtrade.tk/atcl:start(论坛主题:https://www.mql5.com/ru/forum/224745),在我的闲暇时间。

而且软件包中还有一个SMTP服务器(https://core.tcl.tk/tcllib/doc/tcllib-1-18/embedded/www/tcllib/files/modules/smtpd/smtpd.html)

换句话说,你可以在一个指标中使用Eval("package require smtpd"),然后指定传递的回调,并在同一过程中,在不离开MetaTrader的情况下,立即接收必要的邮件。

我将尝试解决这个问题,如果有必要,我将能够分享结果。

 
Artyom Trishkin:

这个人应该只是在你在设置中设置的条形距离上点缀整个历史。

谢谢,但我想找出箭头所在条形的数字,然后才与10比较(例如),没有嵌套循环我做不到。

我需要知道在当前的时间点上,被调用的指标的箭头在哪个条上。

我想我不太善于表达自己的意思)。我想,通过一个例子,会更清楚我想做什么

例如,通过一个条件if(Open[i+1]>Cloce[i+1]),我想将文本设置为High[i+1],并加上箭头所在的条形图编号。
 
Mickey Moose:

我会试着把它弄清楚,如果我做到了,我可以分享结果

如果你有任何问题,可以当面询问或在我的个人资料中联系我。我经常访问网站,但我不看整个论坛--很难保持跟踪,我可能会不小心错过一个问题。
 

您能告诉我如何在MQL5 中实施,当所有货币对的交易达到一定的利润时,关闭所有的交易,无论这些交易是由这个专家顾问开启的还是其他方式?

我是这样做的,这样做对吗?

   if(AccountInfoDouble(ACCOUNT_PROFIT)>profit_close_all)
         for(int i=0; i<OrdersTotal(); i++)
            trade.PositionClose(OrderGetTicket(i),40);
 

Artyom Trishkin,决定。嵌套循环的确是不必要的。谢谢你 )

 
Roman Sharanov:

您能告诉我如何在MQL5 中实施,当所有货币对的交易达到一定的利润时,关闭所有的交易,无论这些交易是由这个专家顾问开启的还是其他方式?

我是这样做的,这样做对吗?

不,它不是。在mql5中,OrdersTotal()是挂单的数量,活跃的订单被称为仓位。相应地,循环应该由位置的数量 来建立,PositionsTotal()
 
Roman Sharanov:

我这样做,对吗?

if(AccountInfoDouble(ACCOUNT_PROFIT)>profit_close_all)
         for(int i=PositionsTotal()-1; i>=0; i--)
            trade.PositionClose(PositionGetTicket(i),40);

类似这样的事情。

你使用的是一个从零开始的循环,而你需要从多到零,因为你在循环中直接关闭订单。第二,你已经被告知要使用PositionsTotal()

 
明白了,谢谢你的帮助!
 
Roman Sharanov:
明白了,谢谢你的帮助!

只是别忘了把高亮行中的OrderGetTicket()改为PositionGetTicket()。

关于交易、自动交易系统和策略测试的论坛

关于MQL4的初学者的任何问题,对算法和代码的帮助和讨论

Konstantin Nikitin, 2018.02.03 08:38

if(AccountInfoDouble(ACCOUNT_PROFIT)>profit_close_all)
         for(int i=PositionsTotal()-1; i>=0; i--)
            trade.PositionClose(OrderGetTicket(i),40);

类似这样的事情。

你从零开始使用循环,反之亦然,从多到零,因为你在循环中直接关闭订单。第二,你已经被告知要使用PositionsTotal()


原因: