我怎样才能获得订单打开后的最高价。 - 页 4

 
( OrderType() < OP_BUYLIMIT ) 与 ( OrderType () == OP_BUY ||OrderType() ==OP_SELL ) 相同。
 
Hand:


我需要单独的最后一个订单,一个用于买入,另一个用于卖出。

非常感谢。

让我告诉你为什么我想使用LastOpenPrice(OP_BUY)和LastOpenPrice(OP_SELL),因为我想在一些条件下使用它们,例如

if ( LastOpenPrice(OP_BUY) -LastOpenPrice(OP_SELL)) > 0.0090 // 因为这个原因,我需要保留最后一个买入订单和最后一个卖出订单,所以我需要单独的最后一个订单,一个用于买入,另一个用于卖出。

你可以这样做......会有效果的......试试吧。
 
或者你指的是现在已经关闭的最后一个BUY订单
 

对第4号函数的解释清楚吗?

4号函数。

//我想获得在最后一个平仓单之前的平仓单 ,无论是买还是卖。

4-函数获取并保留最后一个平仓单之前的平仓价格即买入或卖出

 

伙计们。

它真的不起作用

// Used to keep global variables

extern int MagicNumberLong = 6658641;                     //Identifies long positions
extern int MagicNumberShort = 4167090;                    //Identifies short positions
  
 






double LastOpenPrice(int ordertype)
   { 

   double OpenPrice;                         
   datetime lastOpen;
   for ( int pos = OrdersTotal()- 1 ; pos >= 0 ; pos--)
      if ( OrderSelect (pos, SELECT_BY_POS) // Only my orders w/
      && OrderMagicNumber() == MagicNumberLong || MagicNumberShort // my magic number       //  <-------  what Magic Number do you use when you place a trade ?  it must match  ! !
      && OrderSymbol() == Symbol()    // and my pair.                  //            magic.number  should be a Globally defined variable that has your Magic Numer  
      && OrderType() == ordertype 
      && OrderOpenTime() > lastOpen )
         {
         OpenPrice = OrderOpenPrice();
         break;
         }
   return (OpenPrice);                                             //  <-------  this returns the Order Open Price  NOT the ticket
}

if (  ((iOpen("EURUSD",PERIOD_H1,0)-0.0030)>=MarketInfo("EURUSD",MODE_BID))   ) 
  {   BUY("EURUSD",B_EURUSD_LS_0,B_EURUSD_TP_0,B_EURUSD_SL_0,B_EURUSD_TS_0,"if (  ( ((iOpen(EURUSD,PERIOD_H1,0)-0.00...") ;}
if (  ( (LastOpenPrice(OP_BUY)-0.0030)>MarketInfo("EURUSD",MODE_BID) )  ) 
   {  SELL("EURUSD",S_EURUSD_LS_1,S_EURUSD_TP_1,S_EURUSD_SL_1,S_EURUSD_TS_1,"if (  ( (LastOpenPrice(OP_BUY)-0.0030)>=MarketInfo(" EURUSD",MODE_BID) )  )") ;}
if (  ( ((iOpen("EURUSD",PERIOD_H1,0)+0.0030)<=MarketInfo("EURUSD",MODE_BID)) )  ) 
  {   SELL("EURUSD",S_EURUSD_LS_0,S_EURUSD_TP_0,S_EURUSD_SL_0,S_EURUSD_TS_0,"if (  ((iOpen(EURUSD,PERIOD_H1,0)+0.00...") ;}
if (  ( (LastOpenPrice(OP_SELL)+0.0030)<MarketInfo("EURUSD",MODE_BID) )  ) 
   {  BUY("EURUSD",B_EURUSD_LS_1,B_EURUSD_TP_1,B_EURUSD_SL_1,B_EURUSD_TS_1,"if (  ( (LastOpenPrice(OP_SELL)+0.0030)<MarketInfo(" EURUSD",MODE_BID) )") ;}

正如你在图片中看到的

我从2011年3月1日至2011年4月11日开始测试该EA

在2011年3月1日的第一个小时里

仓位被打开了 ,但上面的条件中没有人可用。

 
Hand:

对第4号函数的解释清楚吗?

4号函数。

//我想获得在最后一个平仓单之前的平仓单 ,无论是买还是卖。

4-函数获取并保留最后一个平仓单之前的平仓价格,即买入或卖出

收盘价? 在最后一个订单关闭的条形图之前的条形图的收盘价 ? 或者在最后一个订单关闭之前的买入或卖出的订单 收盘价 ?
 

第二个选项。

在最后一个关闭的订单之前关闭的买入或卖出的订单 收盘价

 
Hand:

第二个选项。

买入或卖出的订单 收盘价在最后一个收盘价之前?

试试这个 . . .

要获得最后一个买入或卖出订单的最后收盘价,并匹配符号和magic.number,请这样做LastClosePrice(1)

要获得之前的订单,请这样做 . .LastClosePrice(2 )

double LastClosePrice(int Order)
   { 
 
   double ClosePrice;                         

   for ( int pos = OrdersHistoryTotal()- 1 ; pos >= 0 ; pos--)
      if ( OrderSelect (pos, SELECT_BY_POS, MODE_HISTORY)            // Only my CLOSED  orders 
      && OrderMagicNumber() == magic.number // my magic number       //  <-------  what Magic Number do you use when you place a trade ?  it must match  ! !
      && OrderSymbol() == Symbol()  // and my pair.                  //            magic.number  should be a Globally defined variable that has your Magic Numer  
      && OrderType() < OP_BUYLIMIT )
         {
         Order--;
         if (Order == 0)                                            //  determines if we have found the Order we are interested in
            {
            ClosePrice = OrderCloseprice();
            break;
            }
         }
   return (ClosePrice);                                             //  <-------  this returns the Order Open Price  NOT the ticket
}

注意:这段代码在你上面的代码中显示的神奇数字中是不工作 的 . .

extern int MagicNumberLong = 6658641;                     //Identifies long positions
extern int MagicNumberShort = 4167090; 


WHY ? ? ? ?
 

各位。

有没有人可以使用teamviewer程序,然后我们将一起访问并检查 什么是真正的问题。

 
Hand:

伙计们。

它真的不起作用

正如你在图片中看到的

我从2011年3月1日至2011年4月11日开始测试该EA

在2011年3月1日的第一个小时里

仓位被打开了 ,但上面的条件中没有人可用。这让我真的很疯狂

这并不疯狂。 订单被打开是 "合理 "的,因为。

double LastOpenPrice(int ordertype)
   { 

   double OpenPrice;                         
   datetime lastOpen;
   for ( int pos = OrdersTotal()- 1 ; pos >= 0 ; pos--)
      if ( OrderSelect (pos, SELECT_BY_POS) // Only my orders w/
      && OrderMagicNumber() == MagicNumberLong || MagicNumberShort // my magic number       
      && OrderSymbol() == Symbol()    // and my pair.             
      && OrderType() == ordertype 
      && OrderOpenTime() > lastOpen )
         {
         OpenPrice = OrderOpenPrice();
         break;
         }
   return (OpenPrice); //  <-------  this returns the Order Open Price OR ZERO.

如果上述函数的返回值为零,那么可能会出现下面这种情况

 if (  ( (LastOpenPrice(OP_SELL)+0.0030)<MarketInfo("EURUSD",MODE_BID) )  ) <--------------- 0+0.0030=0.0030<Bid: TRUE
   {  BUY("EURUSD",B_EURUSD_LS_1,B_EURUSD_TP_1,B_EURUSD_SL_1,B_EURUSD_TS_1,"if (

我建议你放置一个 "主 "逻辑,在此之上。 如果函数LastOpenPrice(...)返回0....,你的游戏计划是什么?