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
}
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
}
double LastOpenPrice(intOrderType)
{
double OpenPrice;
datetime lastOpen; // First line addedfor ( 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
}
那么,为什么你要返回票号?阅读你所复制和粘贴的代码,理解它,学习......。
我用它来做以下事情
如果(OrderSelect(LastOpenTicketForBuy(), SELECT_BY_POS) ==true)
{买入的订单=OrderOpenPrice();}。
然后如果(((买入订单+卖出订单)/2))<MarketInfo("EURUSD",MODE_BID))
关闭头寸
如果(OrderSelect(LastOpenTicketForBuy(), SELECT_BY_POS) ==true)
在你的允许下,做了一点改变
亲爱的qjol
非常感谢你的真正帮助。但我仍然不确定它是否会工作(我认为我的函数有点不同),让我们看看
第一个函数。
函数,以获得并保持 最后一笔订单的开盘价 只用于买入
2-函数:获取并保持卖出 的最后一个订单的开盘价3- 获取并保持最后一笔订单的 收盘价的函数,无论买入还是卖出4- 获取并保留最后一个平仓单之前的收盘价的函数,无论买入还是卖 出。好吧,试试这个 . . .
它将做1和2 . .
LastOpenPrice(OP_BUY)为最后买入的开盘价。
LastOpenPrice(OP_SELL)表示最后一次卖出的开盘价。
而这个......。
为3 . .
猛禽
我认为如果他在同一对组合上有超过1个订单(和相同的魔法),你就错过了一些东西,因此我认为这样更好。
你的意见
猛禽
我认为你错过了一些东西,如果他在同一对上有超过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-函数获取并保留最后一个买入或卖出平仓单之前的收盘价。 //我想获得最后一个平仓单之前的平仓单 ,即买入或卖出。
谢谢