if (OrderSelect(tickethigh1,SELECT_BY_TICKET))
if (OrderOpenTime()==0) {
// ... код при успешном выборе ордера по тикету в списке рыночных ордеров
}
...或。
if (OrderSelect(tickethigh1,SELECT_BY_TICKET))
if (OrderOpenTime()>0) {
// ... код при успешном выборе ордера по тикету в списке закрытых ордеров
}
.........或者。
if (OrderSelect(tickethigh1,SELECT_BY_TICKET)) {
if (OrderOpenTime()>0) {
// ... код при успешном выборе ордера по тикету в списке закрытых ордеров
}
if (OrderOpenTime()==0) {
// ... код при успешном выборе ордера по тикету в списке рыночных ордеров
}
}
在趋势的定义中?
在一段 时期内的趋势变化 中...见https://www.mql5.com/ru/forum/131277/page148 和https://www.mql5.com/ru/forum/131277/page149
你能告诉我为什么OrderSelect 会返回TRUE,即使这个票据的订单不存在(被删除)?
在一个 时间段上的趋势变化 ...
请告诉我Tp和Slossa功能在这里是否有效
if (total > 0) AveragePrice =NormalizeDouble(AveragePrice / Count, Digits);
if (NewOrdersPlaced) {
for (cnt = OrdersTotal() - 1; cnt >= 0; cnt-){
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
if (OrderType() == OP_BUY){
PriceTarget = AveragePrice + TakeProfit * Point;
BuyTarget = PriceTarget;
Stopper = AveragePrice - Stoploss * Point;
flag = TRUE;
}
}
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
if (OrderType() == OP_SELL) {
PriceTarget = AveragePrice - TakeProfit * Point;
SellTarget = PriceTarget;
Stopper = AveragePrice + Stoploss * Point;
flag = TRUE;
对我来说,它编译得很好
对不起,指标是有效的--原来就是这样的,错误在tcht文件中--它没有编译。
我可以用init来对指标缓冲区进行计算吗?
我想在init中重新计算除零条以外的所有条数,而在启动零条时--它不计入...
你能告诉我为什么OrderSelect返回TRUE,即使没有这样的票据订单(已经被删除)?
你有没有好好读过函数参考?
让我们再读一遍。
---------------------------------------------------------------------------------------------------------------------------------------------------------------
如果订单是由票号选择的,则池子 参数被忽略。票号是订单的唯一标识符。为了确定一个订单是从哪个列表中选择的,我们应该分析其关闭时间。如果订单的关闭时间是0,那么该订单是开放的或待定的,并从终端的开放位置列表中取出。未结头寸可以通过其类型 与挂单区分开来。如果收盘时间 不等于0,那么该订单已关闭 或待定,并已从终端的历史记录中选择。已关闭的订单和已删除的待处理订单之间的区别也可以通过订单 类型来实现。
SELECT_BY_POS -索引 参数包含列表中位置的索引号。
SELECT_BY_TICKET -索引 参数包含票号。
MODE_TRADES (默认) - 在未结订单和挂单中选择订单。
MODE_HISTORY - 该订单在已关闭和已删除的订单中被选中。
---------------------------------------------------------------------------------------------------------------------------------------------------------------
这一个。
如果订单是由票号选择的,则池子 参数被忽略。票号是订单的唯一标识符。为了确定从哪个列表中选择一个订单,必须分析其关闭时间。如果订单的关闭时间 是 0,那么该订单是开放的或待定的,并从终端的开放位置列表 中取出。
你做什么?
我用红色显示了参数池,当通过票据选择时,参数池会被忽略,订单会从终端的任何仓位列表(打开或关闭)中获取。这就是为什么它会返回真相。毕竟,这样的票据是存在的,并且选择了一个订单,但从封闭的订单列表中...
我们应该这样做。
...或。
.........或者。
我想我已经解释得很清楚了......:)
Artmedia70
谢谢你如此详细和全面的答复。真的是越清楚越好 :)谢谢!!!。
Artmedia70
谢谢你如此详细的答复。真的是尽可能的清楚 :)谢谢!!!。
:)谢谢你。不客气。
我想提醒大家注意一些按票数选择公开职位的 "隐蔽性"。事情是这样的,在一个交易日结束后,当一个头寸被转移到第二天时,经纪公司会重新开出订单。也就是说,当前的头寸被关闭,另一个头寸以相同的成交量开仓,但有一个新的票据,包括交换。因此,您的 "专家顾问 "必须跟踪重新开放的订单,并考虑到它们的新股票代码,否则一切都会 "流动"--具有旧股票代码的订单将出现在已关闭的订单列表中,而您将无法使用旧股票代码打开移动到新交易日的现有位置。部分关闭的头寸将遭遇同样的命运--也将为其分配一个新的票据。
因此,要严格记录自己的所有EA订单,及时跟踪所有这种 "阴险 "的变化。
我想提醒的是,通过票据来选择公开职位的做法有一定的 "隐蔽性"。问题是,在交易日结束时,当一个头寸被转移到第二天时,DC会重新开出订单。
我不知道有些经纪公司是否如此,但大多数公司都不做这种破事。
考虑到DC的这种行为不也是一种 "良好的礼仪 "规则吗?毕竟......。是的,别介意...我只是试着考虑一切,嗯......或者说我所知道的。
谨慎是前车之鉴,嗯?;)