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

 
Ihor Herasko:

OrderSelect()是在终端内执行的,没有向服务器发出请求。因此,在每一次打勾时访问订单列表并没有什么问题。大多数专家顾问都会这样做。

而你关于阵列的问题与程序的架构有关。如果是操作大量订单的复杂EA,这绝对是必要的。如果专家顾问用简单的逻辑操作单一的订单,那么阵列就是一种冗余。

只值得一提的是,即使我们有一个订单数组,我们仍然要考虑OrderSelect()。毕竟,我们必须在每次打钩时检查订单是否仍然存在。另外,它的参数也可能被改变。

谢谢你。
 
Rustam Bikbulatov:

伙计们,告诉我如何处理,从哪里开始?

例如:我有15个0.01手的订单,我需要在某个时候关闭一些0.07手的交易。

我的问题是,我怎么能在一个OrderClose(...)中关闭7个订单或0.07个订单?

如果我一次投入0.07,它不会看到成交量为0.01的交易。

我是编程新手。


    int countS = 3;
   if(LastTime!=iTime(NULL,1,0)){
      for(int i=OrdersTotal()-1; i>=0; i--){
       if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
        if(OrderSymbol()==Symbol() && OrderMagicNumber()==321){ 
         if(OrderType()==OP_SELL){
           irvb=OrderClose(OrderTicket(),0.01,Ask,3,CLR_NONE);
           LastTime=iTime(NULL,1,0); countS--; if(countS==0)break;   
          }}}}} 

我收到了一个关于如何以countS 的形式制作计数器的提示。

它应该每分钟完成三笔0.01手的交易。现在,我们有一个问题,如何转换它,使所有的订单都按顺序计算。

如果我们设置for(int i=OrdersTotal()-1; i>=0; i--){最后的订单将被依次计算

如果for(int p=0; p<OrdersTotal(); p++){ 则从第一个订单到一个订单。

计数器工作,但当手数为0.15时,它没有关闭0.03手,而是每分钟关闭0.01手。

您建议添加什么?

我如何使其能够关闭总手数的一部分,而不考虑订单的数量和手数?
 
Rustam Bikbulatov:


一个关于如何制作countS 计数器的提示。

每分钟应该有三笔0.01手的交易成交。现在我有一个问题,如何转换它,使所有的订单都按顺序计算。

如果我们设置for(int i=OrdersTotal()-1; i>=0; i--){最后的订单将被依次计算

如果for(int p=0; p<OrdersTotal(); p++){ 则从第一个订单到一个订单。

计数器可以工作,但是当手数为0.15时,例如,它不关闭0.03手,每分钟关闭0.01手。

您建议添加什么?

我如何使其能够关闭总手数的一部分,而不考虑订单的数量和手数?

当设置这个问题时(顺便说一下,非常奇怪),你需要与 "账户历史 "的列表一起工作。在每个新的迭代中,我们应该通过这个列表,找到在当前分钟内被关闭的订单,并将其数量加总。如果数量不够,那就根据需要进行分类(所以不要问怎么分类,这取决于你),然后接单。在下一次迭代时,重新开始。

 
Ihor Herasko:

当设置这样的任务时(顺便说一下,这是一个非常奇怪的任务),你必须与 "账户历史 "列表一起工作。在每一个新的迭代中,通过这个列表,找到在当前分钟内已经关闭的订单,将其数量相加。如果数量不够,那就根据需要进行分类(所以不要问怎么分类,这取决于你),然后接单。将其关闭在0.01。 在下一次迭代时,全部重新进行。

我会努力的!谢谢你

 
harbor:
不能从终端配置邮件发送
我不能让它在myl.ru上工作,但现在我以同样的方式配置了它,它不会发送测试信息。
有人处理了吗?

如果是为了自己(不是为了出售),那么对邮件问题的正确处理是:

1)在localhost上找一个邮件程序来处理转发,保证投递,不要乱用授权和反垃圾邮件保护。否则,EA将很快被列入各种黑名单。
这并不难--有一个内置的win smtp和免费的简单设置,至少你可以自己编写脚本 :-)

2) 使用SendMail()的替代品。控制整个过程,发送更智能的报告,有标签、标志,可选择html格式和图片。

当你把1+2结合起来时,你会得到3的总数:-)所以这是一个合理和稳定的解决方案。

更多关于发送邮件 :https://www.mql5.com/ru/blogs/post/718364

-----

如果你需要关于SendMail和MT设置的帮助,那么请附上屏幕截图、源代码摘录、错误诊断......。
所以它不仅仅是一个 "地下的敲门声"

TradeBiff - отправка почты со скриншотами
TradeBiff - отправка почты со скриншотами
  • 2018.05.19
  • Maxim Kuznetsov
  • www.mql5.com
Очень важно получать детальные оповещения о действиях любого робота. Универсальный способ оповещений - это отправка почты. TradeBiff будет следить за изменениями и отправлять вам необходимые отчёты. Таким образом у вас в почтовом ящике получится хороший торговый журнал. Постановка задачи Ставим себя на место заказчика и формулируем задачу...
 
我是否正确理解"TimeCurrent()"在被用户函数调用时将返回最后一次打勾的时间?
 
Asa saas:
我是否正确理解 "TimeCurrent() "在被用户函数调用时将返回最后一次打勾的时间?

 

问候!


一个订单可以通过其编号使用OrderSelect 命令进行访问。

问题是,是否有可能提前知道现有订单的数量,从而不至于把它们都过一遍?例如,我们可以在开立新订单时记住这个数字。

我知道这个号码是按顺序从1开始分配的。可能的细微差别是什么?

非常感谢你。

 
Decromor:

问候!


一个订单可以通过其编号使用OrderSelect命令进行访问。

问题是,是否有可能提前知道现有订单的数量,从而不至于把它们都过一遍?例如,我们可以在开立新订单时记住这个数字。

我知道这个号码是按顺序从1开始分配的。可能的细微差别是什么?

非常感谢你。

订单发送
顺序选择

 

打破了我的大脑,请帮助我!

我已经写了一个相关的计算单元。但OANDA和investing.com给出的结果完全不同!这很有趣--它们也不相配啊!。

我哪里错了?


当前的货币对--欧元兑美元,我检查与英镑兑美元的相关性。


外部字符串SubSymbol = "GBPUSD"。

extern int correlation_time = 24; // 检查所选货币对的相关性的时间是多少?

.....

// ------------------------ 相关性计算块 --------------------------------------

int period = 15;

int bars_number = MathRound(correlation_time*60/period)。

double symbol_avg = 0;

double symbol_avg = 0;

double symbol_price[], double subsymbol_price[]。

双倍x,y。

int j;

int shift = 0。

ArrayResize(symbol_price, bars_number)。

ArrayResize(subsymbol_price, bars_number)。

for (j=0; j < bars_number; j++)

{

symbol_price[j] = (iHigh(NULL,period,j+shift) - iLow(NULL,period,j+shift))/2。

subsymbol_price[j] = (iHigh(SubSymbol,period,j+shift) - iLow(SubSymbol,period,j+shift))/2。

symbol_avg = symbol_avg + symbol_price[j];

subsymbol_avg = subsymbol_avg + subsymbol_price[j];

}

symbol_avg = symbol_avg/bars_number;

subsymbol_avg = subsymbol_avg/bars_number;

double ss_xx = 0;

double ss_xy = 0;

double ss_yy = 0;

for (j=0; j < bars_number; j++)

{

x = symbol_price[j] - symbol_avg;

y = subsymbol_price[j] - subsymbol_avg;

ss_xy = ss_xy + x*y。

ss_xx = ss_xx + x*x;

ss_yyy = ss_yy + y*y。

}

double correlation = ss_xy/MathSqrt(ss_xx*ss_yy)。

Alert(correlation, " ", bars_number)。

ArrayFree(symbol_price)。

ArrayFree(subsymbol_price)。

// ------------------------ 相关计算块的结束 ---------------------------------

原因: