//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Возвращает номер бара открытия последней позиции или -1. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" или NULL - текущий символ) |//| tf - таймфрейм ( 0 - текущий таймфрейм) |//| op - операция ( -1 - любая позиция) |//| mn - MagicNumber ( -1 - любой магик) |//+----------------------------------------------------------------------------+intNumberOfBarOpenLastPos(stringsy="0", inttf=0, intop=-1, intmn=-1){datetimet;
inti, k=OrdersTotal();
if(sy=="" || sy=="0")sy=Symbol();
for(i=0; i<k; i++){if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){if(OrderSymbol()==sy){if(OrderType()==OP_BUY || OrderType()==OP_SELL){if(op<0 || OrderType()==op){if(mn<0 || OrderMagicNumber()==mn){if(t<OrderOpenTime())t=OrderOpenTime();
}}}}}}return(iBarShift(sy, tf, t, True));
}
NumberOfBarCloseLastPos()函数。
该函数返回最后一个位置的收盘号码或-1。要考虑的位置的选择是由外部参数定义的。
- sy- 市场工具的名称。如果设置了这个参数,函数将只考虑这个仪器的位置。默认值--NULL 表示当前的市场工具。
- tf- 时间框架。默认值0 表示当前的时间框架。
- op- 贸易操作,职位类型。有效值:OP_BUY、OP_SELL 或-1。默认值-1 意味着任何位置。
- mn- 位置标识符,MagicNumber。默认值-1 表示任何标识符。
附上一个测试NumberOfBarCloseLastPos()函数的脚本。DeleteOrders()函数。测试者版本。
函数DeleteOrders()的目的是删除挂单BuyLimit, BuyStop, SellLimit 和 SellStop。op- 交易操作的类型,挂单的类型。五个值中有一个是可能的。-1,OP_BUYLIMIT,OP_BUYSTOP,OP_SELLLIMIT或OP_SELLSTOP。默认值为-1意味着任何顺序。
mn- MagicNumber,待定订单的识别号码。默认值-1意味着任何魔力。
你好。在第10页,该功能已被设定为应用。
我已经在我的专家顾问中应用它来删除挂单。或者说,我想用它。我把这个函数放在int start部分之外
我把它粘贴进去了。
但是在编译的时候,我得到一个错误
'clDelete' - 未定义变量 C:{程序文件/MetaTrader - Alpari/experts\0005.mq4 (1155, 40)
我怎样才能消除这个错误?
而当我使用ClosePositions()函数--以市场价格平仓 时,一切都很正常--没有错误
/ 即使我只是插入DeleteOrders函数,还不应用它--这个错误仍然可以编译
但当你编译它时,你会得到一个错误
'clDelete' - 未定义变量 C:\Program Files\MetaTrader - Alpari/experts\0005.mq4 (1155, 40)
我怎样才能消除这个错误? 这个'clDelete'是什么?
在附件的第10页,有一个文件test_DeleteOrders.mq4。
下载它并寻找其中的任何clDelete 引用。
下载了它,看了它!那么?事实证明,我所要做的只是设置关闭图标的颜色!这就是我的工作。
但现在又不尽然了。现在,这个错误已经消失了。但另一个错误出现了--在ClosePositions()函数处--以前没有出现过。
ClosePosBySelect' -函数 没有定义 C:\Program Files\MetaTrader - Alpari/experts\0005.mq4 (905, 47)
而且附近没有脚本(第14页)可以检查
你能告诉我如何解决这个错误吗?
ClosePosBySelect' - 函数没有定义 C:\Program Files\MetaTrader - Alpari/experts\0005.mq4 (905, 47)
这个错误意味着ClosePosBySelect()没有被定义。
你能告诉我如何解决这个错误吗?
很抱歉再次打扰您!我是一个很好的朋友。我把你指定的ClosePositions()函数放在ClosePosBySelect()旁边,编译后出现了六个错误我感到很生气!
我自己已经和其中的四个人打过交道。滑动,颜色,接近尝试的数量....,仍然有两个错误,-
声音文件 -
UseSound' - 未定义变量 C:\Program Files\MetaTrader - Alpari/experts\0005.mq4 (1002, 13)
NameFileSound' - 未定义变量 C:³ Files\MetaTrader - Alpari\experts\0005.mq4 (1002, 33)
我从哪里拿?我应该把它们放在哪里?
好吧,外部 bool UseSound = false;//关闭。
我将把它放在EXPERT'S PROPERTIES中,但什么是NameFileSound',我应该把它放在哪里?
**************************************************************************
找到了,并把它放在全球。
然后,编译器没有出现一个错误,而是又抛出了四个错误。
'GetNameOP' -函数 未定义
'ErrorDescription' - 函数未被定义
'else' - 意外的标记
'GetNameOP' - 函数未定义
这些错误似乎一直在无休止地出现。为了使用一个ClosePositions()函数,我不得不先创建另一个函数--ClosePosBySelect()。而另一个又需要一些声音--钟声和口哨声。而当我努力寻找这些完全不必要的铃声时,我得到了各种奇怪的错误--'其他'--意外的标记和其他错误。我甚至还没有开始使用这个功能。我只是把它放在其他的人中间!
你能告诉我怎样才能解决这些错误吗?我评论了所有这些GetNameOP。错误似乎已经消失了。但是,没有它们,功能会很好地工作吗?
而在这里,编译器没有抛出一个错误,而是抛出了4个。
'GetNameOP' - 函数未定义
在附件testrSetOrder.mq4的第一页中
ErrorDescription' - 函数没有定义
在你的EA的代码中插入以下一行
#include <stdlib.mqh>.
'else' - 意外的令牌
NumberOfBarOpenLastPos()函数。
该函数返回最后打开的位置的条数或-1。要考虑的位置的选择是由外部参数指定的。
- sy- 市场工具的名称。如果设置了这个参数,函数将只考虑指定仪器的位置。默认值--NULL 表示当前的市场工具。
- tf- 时间框架。默认值0 表示当前的时间框架。
- op- 贸易操作,职位类型。有效值:OP_BUY、OP_SELL 或-1。默认值-1 意味着任何位置。
- mn- 位置标识符,MagicNumber。默认值-1 表示任何标识符。
HH. 附上一个测试NumberOfBarOpenLastPos()函数的脚本。