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

 
Artyom Trishkin #:
休息

问题是什么呢?)

 
Alexey Viktorov #:

问题是什么呢?)

很显然,你和安德烈应该停止扯皮......

气氛真的很不友好(如上所述)。我来到这里是为了讨论MQLQL问题。但我读到了一些与MQL无关的东西。你在说什么呢?

让一些新来的人问个问题什么的......或者,也许他害怕......?迷失在你和安德烈之间的争斗中......:)
 

大家下午好。

请告知如何正确编写代码。
,我根据某些条件,在不同的方向、不同的货币对,一次关闭几个订单。但有时由于经纪公司的原因,命令没有被执行,部分订单仍未完成。我可以为每个订单开出睡眠 的处方。但我想要更短的东西。

if ( NormalizeDouble((MaxOpenSell(2) + MaxOpenBuy(2) + MinOpenSell(2))*Point,Digits) >= Profit1 && FindLastSell() >= Block 
         && FindLastBuy() >= 1 && MaxOpenSell(2) > 0 && MA1 < MA2)
      {
         LockTicket = 0;
         CalProfHis = 0;
         bool close =  OrderClose((int)MaxOpenSell(5),MaxOpenSell(3), Ask, Slippage, clrPink);
              close =  OrderClose((int)MinOpenSell(5),MinOpenSell(3), Ask, Slippage, clrPink);
              close =  OrderClose((int)MaxOpenBuy(5),MaxOpenBuy(3), Bid, Slippage, clrBlue);

      }
 
makssub 睡眠 的处方。我想用更短的东西。

https://book.mql4.com/ru/trading/orderclose

Закрытие и удаление ордеров - Торговые операции - Учебник по MQL4
Закрытие и удаление ордеров - Торговые операции - Учебник по MQL4
  • book.mql4.com
Закрытие и удаление ордеров - Торговые операции - Учебник по MQL4
 
makssub 睡眠 的处方。我希望能有更短的东西。

当退出/关闭条件发生时,我们应该将票据添加到数组中。然后,如果该数组不是空的,程序将循环浏览,为每张票调用OrderClose。然后检查每张票的存在性,并将其从列表中删除。以1-3秒的间隔重复这些动作,直到列表为空。

 

你好。

我需要在工作结束时计算出专家顾问的净利润。我在OnDeinit中通过OrdersHistoryTotal()开始一个循环,并加入OrderProfit()。

利润=利润+订单利润()。

但最终的利润与测试器中报告的不同。我发现,在一部分订单上,积分值是不同的。

这其中的原因是什么?分布是在测试器中手动设置的。

 
AlexandrVV #:

你好。

我需要在工作结束时计算出专家顾问的净利润。我在OnDeinit中通过OrdersHistoryTotal()开始一个循环,并加入OrderProfit()。

利润=利润+订单利润()。

但最终的利润与测试器中报告的不同。我发现,在一部分订单上,积分值是不同的。

这其中的原因是什么?分布是在测试器中手动设置的

交换和佣金被忘记了,要添加!点差已经被考虑在内,因为它总是在进入和退出价格之间。

 
Mihail Matkovskij #:

交换和佣金已经被忘记了,要添加!价差已经被考虑在内,因为它总是在进入价格和退出价格之间。

哦,这就对了!非常感谢!)

 
大家好。请告诉我在哪里可以找到一个脚本或指标,当价格达到我指定的某个水平时,向我的手机发送一个通知
 

你能告诉我问题出在哪里吗?代码应该关闭订单,如果订单缺失,它应该打开一个新的订单。

但由于某些原因,它只关闭了1个订单,并停止到下一个信号。

2022.01.17 16:22:08.389 2022.01.04 08:00:00 e: 信号1.1322 < 关闭 1.1304 ExistPosSell 0
2022.01.17 16:22:08.389 2022.01.04 08:00:00 e: 信号1.1322 > clos 1.1304 ExistPosBuy 1
2022.01.17 16:22:08.366 2022.01.04 08:00:00 e: Signal 1.1325 < clos 1.1306 ExistPosSell 0
2022.01.17 16:22:08.366 2022.01.04 04:00:00 e: 信号1.1325 > 关闭1.1306 ExistPosBuy 1
2022.01.17 16:22:08.327 2022.01.04 2022.01.04 00:00:00 e: 信号1.1326 < clos 1.1296 ExistPosSell 0
2022.01.17 16:22:08.327 2022.01.04 00:00:00 e: Signal 1.1326 > clos 1.1296 ExistPosBuy 1
2022.01.17 16:22:08.298 2022.01.03 20:00:00 e: 信号1.1328 < 收盘1.1283 ExistPosSell 0
2022.01.17 16:22:08.298 2022.01.03 20:00:00 e: 收盘1号在1.13598买入0.01欧元兑美元,价格1.12831

2022.01.17 16:22:08.298 2022.01.03 20:00:00 e: 信号1.1328>收盘1.1283 ExistPosBuy 1
2022.01.17 16:22:08.190 2022.01.03 16:00:00 E: open #4 buy 0.01 EURUSD at 1.13512 ok
2022.01.17 16:22:08.190 2022.01.03 16:00:00 e: Signal 1.134 < close 1.135 ExistPosSell 0
2022.01.17 16:22:08.190 2022.01.03 16:00:00 e: Signal 1.134 > close 1.135 ExistPosBuy 1

if(isNewBar()==true) {  
if(Signal > clos ) {  //--------------------- МА выше цены закрытия предыдущего бара.
     if(ExistPositions( NULL, OP_BUY, Magic) == true) //---------------- Если есть позиция BUY то
ClosePosWithMaxProfitInCurrency(); //--------  закрытие одной позиции с максимальным профитом в валюте депозита.
         if(ExistPositions( NULL, OP_BUY, Magic) == False) //----------- если позиции BUY отсутствуют то
   ticket=OpenPosition(NULL,OP_SELL, NDLot(Lot),0,0, Magic, Com);} //------------ открываем позицию SELL

if(Signal < clos ) { //--------------------- МА ниже цены закрытия предыдущего бара.
    if(ExistPositions( NULL, OP_SELL, Magic) == true) //---------------- Если есть позиция SELL то
 ClosePosWithMaxProfitInCurrency(); //---------------------закрытие одной позиции с максимальным профитом в валюте депозита.
        if(ExistPositions( NULL, OP_SELL, Magic) == False)  //----------- если позиции SELL отсутствуют то
  ticket=OpenPosition(NULL,OP_BUY, NDLot(Lot),0,0, Magic, Com);} //------------ открываем позицию BUY

} return; 
原因: