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

 

那么,为什么你要返回票号?阅读你所复制和粘贴的代码,理解它,学习......。

我用它来做以下事情

如果(OrderSelect(LastOpenTicketForBuy(), SELECT_BY_POS) ==true)
{买入的订单=OrderOpenPrice();}。

然后如果(((买入订单+卖出订单)/2))<MarketInfo("EURUSD",MODE_BID))

关闭头寸

 
Hand:


如果(OrderSelect(LastOpenTicketForBuy(), SELECT_BY_POS) ==true)


在你的允许下,做了一点改变

if(OrderSelect(LastOpenTicketForBuy(), SELECT_BY_TICKET)==true)
 

亲爱的qjol

非常感谢你的真正帮助。但我仍然不确定它是否会工作(我认为我的函数有点不同),让我们看看

第一个函数。

函数,以获得并保持 最后一笔订单的开盘价 只用于买入

double LastOpenForBuy(){ datetime lastTime = 0 ; int lastTicket = - 1 ; // None open. 
int magi.number= 0 ; double orderforbuy;
for ( int pos = OrdersTotal ()- 1 ; pos >= 0 ; pos--)
if ( OrderSelect (pos, SELECT_BY_POS) // Only my orders w/
&& OrderMagicNumber () == magic.number // my magic number
&& OrderSymbol () == Symbol () // and my pair.
&& OrderType ()==OP_BUY )
{ orderforbuy = OrderOpenprice ();
lastTicket = OrderTicket (); }
return (orderforbuy);}

if(OrderSelect(LastOpenForBuy(), SELECT_BY_TICKET)==true)
{ order for buy= OrderOpenPrice();}

// then something like// // if ( (( order for buy+ order for sell)/2))<MarketInfo("EURUSD",MODE_BID) )

//close the position

     我需要的是:1- 函数来获取和保持 最后一笔订单的开盘价只用于买入 
2-函数:获取并保持卖出 的最后一个订单的开盘价
3- 获取并保持最后一笔订单的 收盘价的函数,无论买入还是卖出
4- 获取并保留最后一个平仓单之前的收盘价的函数,无论买入还是卖 出。
 

好吧,试试这个 . . .

它将做1和2 . .

LastOpenPrice(OP_BUY)为最后买入的开盘价

LastOpenPrice(OP_SELL)表示最后一次卖出的开盘价。

double LastOpenPrice(int  OrderType)
   { 
 
   double OpenPrice;                         

   for ( int pos = OrdersTotal()- 1 ; pos >= 0 ; pos--)
      if ( OrderSelect (pos, SELECT_BY_POS) // Only my orders w/
      && 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() == OrderType )
         {
         OpenPrice = OrderOpenprice();
         break;
         }
   return (OpenPrice);                                             //  <-------  this returns the Order Open Price  NOT the ticket
}
 

而这个......。

为3 . .

double LastClosePrice()
   { 
 
   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 )
         {
         ClosePrice = OrderCloseprice();
         break;
         }
   return (ClosePrice);                                             //  <-------  this returns the Order Open Price  NOT the ticket
}
 
我不太明白你说的第4 条是什么意思
 

猛禽

我认为如果他在同一对组合上有超过1个订单(和相同的魔法),你就错过了一些东西,因此我认为这样更好。

double LastOpenPrice(int OrderType)
   { 
 
   double OpenPrice;                         
   datetime lastOpen; // First line added

   for ( int pos = OrdersTotal()- 1 ; pos >= 0 ; pos--)
      if ( OrderSelect (pos, SELECT_BY_POS) // Only my orders w/
      && 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() == OrderType
      && OrderOpenTime() > lastOpen) // Second line added
         {
         OpenPrice = OrderOpenprice();
         break;
         }
   return (OpenPrice);                                             //  <-------  this returns the Order Open Price  NOT the ticket
}

你的意见

 
如果你倒计时,第一个符合神奇数字和符号的订单将是有关EA和符号的最后一笔订单,不是吗?
 
不确定
 
qjol:

猛禽

我认为你错过了一些东西,如果他在同一对上有超过1个订单(和相同的魔法),因此我认为这样更好。

您的意见


伙计们。

非常感谢。

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

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

-----

对于双倍LastClosePrice() //我可以用if (OrderType() == OP_BUY || OP_SELL)代替*** OrderType() < OP_BUYLIMIT***来获得最后的收盘价,不管是买入还是卖出。

----

为4号函数。

4-函数获取并保留最后一个买入或卖出平仓单之前的收盘价 //我想获得最后一个平仓单之前的平仓单 ,即买入或卖出。

谢谢