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

 
artem artem #:

MakarFX,谢谢!现在没有额外的非信号第一订单,但现在由于某些原因,第一信号订单(正常)提前进入了2个蜡烛))。我在留言中附上了测试器的截图,但即使是这样的第一个订单--最重要的事情已经完成了,再次非常感谢你)随着魔术师得到它,那么我将做一个外部变量,当我将把探索器附加到一个货币对的特定图表上时,我将为每个货币对单独改变数字。

我将看一下开幕式。

如果符号被控制,就没有必要改变魔力。

 
Nerd Trader #:

我已经忘记了......一开始我也是这样做的(很好,我把它锁住了),但条件法似乎不可靠,我想用更明显的东西来表示改变的顺序。

好吧,你仍然需要在每一个新的刻度上检查条件,如果它在前一个刻度上不起作用 - 它将在新的刻度上改变。

而且应该进行错误处理。

 
Nerd Trader #:

我已经忘记了......一开始就这样做了(这是我承诺的好事),但条件的方式似乎不可靠,我想要一些更明显的东西 来表明改变的顺序。

//+------------------------------------------------------------------+
if(OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), OrderTakeProfit(), 0))
   ObjectCreate(0,OrderTicket(),OBJ_ARROW_UP,0,Time[0],Bid);
//+------------------------------------------------------------------+
int NameObject()
  {
   int ticket=-1;
   for(int i=0;i<ObjectsTotal();i++)
     {
      ticket=StringToInteger(ObjectName(0,i,0));
     }
   return(ticket);
  }
//+----------------------------------------------------------------------------+
void GetTicketOrder()
  {
   int result=-1;
   for (int cnt = OrdersTotal() - 1; cnt >= 0; cnt--) 
     {
      if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) 
        {
         if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
           {
            if(OrderType() == OP_BUY || OrderType() == OP_SELL)
              {
               if(OrderTicket() == NameObject())
                  {
                     делай все что хочешь
                  }
              }
           }
        }
     }
  }
 
EVGENII SHELIPOV 存款货币利润 ,整个订单网格被关闭

请帮助我修改代码,以便有积分 而不是利润谢谢你。

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает суммарный профит открытых позиций в пунктах         |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
int GetProfitOpenPosInPoint(string sy="", int op=-1, int mn=-1) {
  double p;
  int    i, k=OrdersTotal(), pr=0;

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
        if (mn<0 || OrderMagicNumber()==mn) {
          p=MarketInfo(OrderSymbol(), MODE_POINT);
          if (p==0) if (StringFind(OrderSymbol(), "JPY")<0) p=0.0001; else p=0.01;
          if (OrderType()==OP_BUY) {
            pr+=(MarketInfo(OrderSymbol(), MODE_BID)-OrderOpenPrice())/p;
          }
          if (OrderType()==OP_SELL) {
            pr+=(OrderOpenPrice()-MarketInfo(OrderSymbol(), MODE_ASK))/p;
          }
        }
      }
    }
  }
  return(pr);
}
 
artem artem #:

MakarFX,谢谢!现在没有额外的非信号第一订单,但现在由于某些原因,第一信号订单(正常)提前进入了2个蜡烛))。我在留言中附上了测试者的截图,但即使是这样的第一个订单--最重要的事情已经完成了,再次非常感谢你)与魔术师得到了它,那么我将做一个外部变量,当我将espert附加到一个特定的货币对图表时,我将为每个货币对单独改变数字。

测试的时间段是什么,确认的数量是多少?
 
MakarFX #:

根据我的理解,应该用它来代替CalculiteProfit()函数。

 
EVGENII SHELIPOV #:

根据我的理解,应该用它来代替CalculiteProfit()函数。

并改变这个

int op = GetProfitOpenPosInPoint("", -1, Magic ); 
 
MakarFX #:
你在哪个时期测试的,确认的数量是多少?

MakarFX,在我所附的截图上,测试了欧元/美元 - M 30 - 所有点 - 01.08.21 到 03.09.21 - 26个订单(但我 把常数从4改为8,我决定看更多数量的蜡烛。)

如果我们把常数恢复到4个蜡烛图,那么对于同一时期--那么35个订单,但第一个订单也是提前2个订单来的

附加的文件:
 
MakarFX #:

和你改变它。

Makar,你能告诉我是否只有最小和最大的订单?

 
EVGENII SHELIPOV #:

Makar,你能告诉我是否只有最小和最大的订单?

你说的 "最小和最大 "是指门票还是价格?
原因: