[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要路过。没有你就无处可去 - 3. - 页 582

 
Azerus:

Kim最新发布的函数GetPotentialLossInCurrency(https://forum.mql4.com/ru/11287/page107)只考虑到了未结订单。

我试图通过将挂单纳入其中来扩大一点范围(通过简单地添加其他类型):但挂单没有被考虑在内。他们的计算方式不同吗?文件中没有提到这个问题....。


挂单 没有 "存款货币未结头寸的全部潜在损失"。

GetPotentialLossInCurrency() 函数返回存款货币的未平仓头寸的总潜在损失。

它指的是市场中的头寸。在这些市场功能上按F1,重新仔细阅读信息。

tv=MarketInfo(OrderSymbol(), MODE_TICKVALUE);
              if (OrderType()==OP_BUY) {
                pl+=(OrderOpenPrice()-OrderStopLoss())/po*OrderLots()*tv;
              }
              if (OrderType()==OP_SELL) {
                pl+=(OrderStopLoss()-OrderOpenPrice())/po*OrderLots()*tv;
              }
              pl+=OrderCommission()+OrderSwap();
 
Roman.:


挂单不 存在 "存款货币未结头寸的全部潜在损失"。

GetPotentialLossInCurrency() 函数返回存款货币的未平仓头寸的总潜在损失。

我们谈论的是市场上的头寸。在这些市场功能上按F1,重新仔细阅读信息。

 

向程序员提问:
,在一个新的条形图 上,专家顾问检查欧元的订单是否有效(例如),如果没有--它做一个新的交易,如果是--它保持一切原样。
,设置这样一个条件。

 for(int i=1; i<=OrdersTotal(); i++)          // Цикл перебора ордер
     {
      if (OrderSelect(i-1,SELECT_BY_POS)==true) // Если есть следующий
        {                                       // Анализ ордеров:
         int Tip=OrderType();                   // Тип ордера
         if(OrderSymbol()!="EURUSD"||Tip>1){continue;}else{// Не наш ордер

      
   RefreshRates();
  double point5 =MarketInfo("EURUSD", MODE_POINT);//Запрос Point
 double bid5 =MarketInfo("EURUSD", MODE_BID); // Запрос значения Bid
 double ask5 =MarketInfo("EURUSD", MODE_ASK); // Запрос значения Ask
  double SL5 = NormalizeDouble(bid5+(Stop*point5), MarketInfo("EURUSD", MODE_DIGITS));
 double TP5 = NormalizeDouble(bid5-(Profit*point5), MarketInfo("EURUSD", MODE_DIGITS)); 
  double SL5v = NormalizeDouble(bid5-(Stop*point5), MarketInfo("EURUSD", MODE_DIGITS));
 double TP5v = NormalizeDouble(bid5+(Profit*point5), MarketInfo("EURUSD", MODE_DIGITS));  
 if ((iVolume("EURUSD",Period(),4)) > (iVolume("EURUSD",Period(),1))) { 
 ticket=OrderSend("EURUSD",OP_SELL,lot_EUR,bid5,Slip,0,0);// Открытие Sell
 OrderSelect(ticket,SELECT_BY_TICKET);
 OrderModify(OrderTicket(),OrderOpenPrice(),SL5,TP5 ,0,CLR_NONE); 
 {Alert (GetLastError());} // Сообщение об ошибке
}else{ticket=OrderSend("EURUSD",OP_BUY,lot_EUR,ask5,Slip,0,0); // Открытие BUY
 OrderSelect(ticket,SELECT_BY_TICKET);
 OrderModify(OrderTicket(),OrderOpenPrice(),SL5v,TP5v ,0,CLR_NONE); 
 { Alert (GetLastError());} // Сообщение об ошибке
}}

        }                                       // Конец анализа орд.
     }                                          // Конец перебора орд.

但该代码并不工作。错误在哪里?

 
Cruc:

这里有一个问题要问程序员。
在一个新的条形图上,EA检查欧元订单是否有效(例如,如果不是,它将打开一个新的交易,如果是,它将保持一切原样。
我已经设定了这样一个条件。

但这段代码不起作用。错误在哪里?

看看如果有一打订单,而你的是第七个,会发生什么(例如)

检查第一个 - 它不是我们的。

检查第二个,这不是我们的。

...

检查第七次 - 我们的

检查第八次,它不是我们的。

...

 


这个想法是,当你在一个货币对上开出一堆订单时,你可以在一次行动中关闭所有重叠的订单。

修改/删除订单--->type---->关闭重叠的订单

它删除了重叠的订单...在MQL中是否有这样的功能?

哎呀,找到了:https://forum.mql4.com/ru/4822

 
ilunga:

看看如果有十几个订单,而你的是第七个,会发生什么(例如)

检查第一个 - 它不是我们的。

检查第二个,它不是我们的。

...

检查第七次 - 我们的

检查第八个,它不是我们的,设置订单

...


该货币对只有一个订单未结。 我只检查给定的欧元兑美元符号,但我一定没有正确设置条件

如果(OrderSymbol()!="EURUSD"||Tip>1){继续;}else{

我们需要 if(OrderSymbol()= Symbol("EURUSD"){

 
Cruc:


这对组合只有一个订单未完成。 我只检查给定的欧元兑美元符号,但我一定是设置了错误的条件。

如果(OrderSymbol()!="EURUSD"||Tip>1){继续;}else{

需要 if(OrderSymbol()= Symbol("EURUSD"){

如果你在专家顾问中只有一个符号,你可以只记住它的票据,每次都检查它,而不需要翻阅所有的订单。
 
ilunga:
如果你的EA中只有一个,你可以只记住它的票据,并在每次关闭或不关闭时进行检查,而不需要查看所有的订单。

非常感谢你的建议,我几乎想明白了,只是不记得如果订单被触发,那么票据的价值是-10?
 
Roman.:


挂单不 存在 "存款货币的未结头寸的全部潜在损失"。

GetPotentialLossInCurrency() 函数返回存款货币的未平仓头寸的总潜在损失。

它指的是市场中的头寸。在这些市场功能上按F1,重新仔细阅读信息。


我非常明白,GetPotentialLossInCurrency() 函数是在谈论未结头寸。我有一个问题:为什么不能把待处理的订单 也算进去?

的文件。

double OrderOpenPrice(  )

 Возвращает цену открытия для выбранного ордера.
 Ордер должен быть предварительно выбран с помощью функции OrderSelect().

double OrderStopLoss(   )

 Возвращает значение цены закрытия позиции при достижении уровня убыточности (stop loss) для текущего выбранного ордера.
 Ордер должен быть предварительно выбран с помощью функции OrderSelect().

没有任何地方说OrderOpenPrice和/或 OrderStopLoss只适用于未结订单

 
Cruc:

非常感谢你的建议,我几乎想明白了,只是不记得是否触发了订单,票据是否取值为-10?
车票保持原样