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

 
makssub #:

是最后一个,不是倒数第二个(


看看你写的东西。

"如果价格下跌,另一个订单被打开,具有最大OrderOpenPrice的订单成为倒数第二个订单。"

该函数搜索最大或最小开盘价。

如果你只想要倒数第二张,你最好在开票时记住这张票。

 
MakarFX #:

看看你写的东西。

"如果价格下跌,另一个订单被打开,具有最大OrderOpenPrice的订单是倒数第二个订单。"

该函数搜索最大或最小开盘价。

如果你只想要倒数第二张,你最好在开票时记住这张票。

我很抱歉,有时我没有很清楚地表达我的观点。

我已经按tick和时间做了,但在波动中,当价格可能先涨后跌时,它可能不是倒数第二。这些变体已经被研究出来了。所以开盘价是最好的选择。或者是一堆会重复检查的函数,在那里我肯定会非常困惑。我没有太多的时间把所有的东西都记在脑子里。

我以前写过倒数第二篇,它发出来了。有一个问题,没有区分OP_SELL和OP_BUY。当第二个出现时,它开始计数(

 
makssub #:

我很抱歉,有时我没有很清楚地表达我的观点。

我已经按时完成了,但在波动中,当价格可能上升,然后下降时,它可能不是倒数第二个。这些变体已经被研究出来了。所以开盘价是最好的选择。或者是一堆会重复检查的函数,在那里我肯定会非常困惑。我没有太多的时间把所有的东西都记在脑子里。

我以前写过倒数第二篇,它发出来了。有一个问题,没有区分OP_SELL和OP_BUY。当我得到第二个时,它就开始计数了(

简单地写下你需要找到的东西(如果发生了,你需要得到它)......因为我也已经感到困惑了

 
MakarFX #:

简单地写下你需要找到的东西(如果发生了,你需要得到它)......因为我也已经感到困惑了

我已经强调了你需要找到哪个订单的价格

如果没有OP_BUY,这并不困难。如果出现OP_BUY,我的代码就无法工作(

double FindPenultSellPrice()
{
   double  UpPrice = DBL_MAX, profit = 0;
   int    i;
   for(i = OrdersTotal()-2; i >=0; i--)
   {
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
      {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_SELL)
         {
            if ( OrderOpenPrice() < UpPrice)
            {
               UpPrice = OrderOpenPrice();
            }
         }
      }
   }
   return(UpPrice);
}
 
MakarFX #:

简单地写下你需要找到的东西(如果发生了,你需要得到它)......我也已经感到困惑了

这不是按时间计算的倒数第二笔订单,而是按价格计算的倒数第二笔订单,如果价格已经走到了另一个方向。阿列克谢写得很对,我们应该按价格搜索。我们不应该改变最大或最低的数值。

Zy。我会记住最后一个订单(这是一个网格),并把倒数第二个订单放在我的变量中。该算法只应被完善,如果上升一个并立即下降一个,再上升一个并立即下降一个))))如果有两笔订单朝一个方向发展,那么我们应该记住倒数第二笔和最后一笔订单的票据,以备不时之需。 如果第三笔订单开启,倒数第二笔订单的票据就等于最后一笔,最后一笔订单的票据就等于第三笔。

 
makssub #:

用颜色突出显示哪个订单的价格可以找到

如果没有OP_BUY,这并不困难。如果出现OP_BUY,我的代码就无法工作(

试试这个方法

//+------------------------------------------------------------------+
//|  Функция возвращает по символу и магику                          |
//|  1 - размер лота последней позиции                               |
//|  2 - цена последней открытой позиции                             |
//|  3 - время последней открытой позиции                            |
//+------------------------------------------------------------------+
double GetInfoLastPos(int a=1)
  {
   datetime t=0;
   double result=0,l=0,p=0,f=0;
   
   for(int pos=OrdersTotal()-1;pos>=0;pos--)
     {
      if(OrderSelect(pos, SELECT_BY_POS, MODE_TRADES))
        {
         if(OrderSymbol()==_Symbol && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL)
              {
               if(t<OrderCloseTime()) {t=OrderOpenTime(); l=OrderLots(); p=OrderOpenPrice();}
              }
           }
        }
     }
   if(a==1) {result=l;} else
   if(a==2) {result=p;} else
   if(a==3) {result=(double)t;}
   else     {result=0;}
   return(result);
  }
//+------------------------------------------------------------------+
double FindOpenPrice()
  {
   double AbsPoint=DBL_MAX;
   double openprice=0;
   
   for(int pos=OrdersTotal()-2;pos>=0;pos--)
     {
      if(OrderSelect(pos, SELECT_BY_POS, MODE_TRADES))
        {
         if(OrderSymbol()==_Symbol && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL)
              {
               if(AbsPoint>MathAbs(OrderOpenPrice()-GetInfoLastPos(2)))
                 {
                  AbsPoint=MathAbs(OrderOpenPrice()-GetInfoLastPos(2));
                  openprice = OrderOpenPrice();
                 }
              }
           }
        }
     }
   return(openprice);
  }
//+------------------------------------------------------------------+
 
MakarFX #:

试试这个。

感谢你的辛勤工作。

有一个细微的差别)它在顶部发现,用红色标记。对于OP_SELL,它在底部,标有蓝色。让我马上告诉你,我没有检查过如果OP_BUY出现会怎么算。

 
makssub #:

感谢你的辛勤工作。

有一个细微的差别)它是在顶部发现的,用红色标记。对于OP_SELL,它需要在底部,标记为蓝色。而且我必须马上说,我不知道如果OP_BUY出现,它将如何工作。

上面是最近的!

我让你写出你必须找到的东西,你给出了一些部分。

例如,我需要:"如果一个卖点已经打开,我应该从上面找到最近的卖点......等等。"。

P.S. 你用红色标记了什么? 我没有看到 0_o
 
MakarFX #:

最上面的那个是最接近的!

我让你写出你需要找到的东西,但你给出了一些部分...

例如,我需要,"如果卖出打开,在顶部找到最近的卖出......等等"。

P.S. 你用红色标记的是什么?

它发生在我身上。我想的是一件事,写的是另一件事。不细心 抱歉)以红色本身的冲击为代价)。

 
makssub #:

它发生在我身上。我想的是一件事,写的是另一件事。我没注意,对不起,我对红色的感到很震惊)

那么你想要什么呢?)
原因: