ExistPositions()函数。
旨在检查未完成的购买或销售。类似于ExistOrders 函数。默认情况下,它检查所有位置:当前和其他工具。你可以用过滤器的组合来细化选择--功能参数。
- sy- 对文书的名称施加限制。默认参数是"" - 不受限制,即任何乐器。如果你通过NULL,位置选择将被限制在当前仪器上。
- op- 对头寸类型(买入/卖出)进行限制。默认情况下,没有任何约束,也就是说,任何位置类型都可以检查。这个参数的有效值是-1,OP_BUY和OP_SELL。
- mn- 对职位的识别("魔法")号码施加限制。默认情况下,没有任何约束,也就是说,具有任何神奇数字的位置都被检查。
- ot- 对职位开放时间 进行限制。它检查仓位的打开时间是否会晚于这个参数的值。默认情况下,没有任何约束,也就是说,有任何开放时间的职位都被选中。
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 06.03.2008 | //| Описание : Возвращает флаг существования позиций | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента ("" - любой символ, | //| NULL - текущий символ) | //| op - операция (-1 - любая позиция) | //| mn - MagicNumber (-1 - любой магик) | //| ot - время открытия ( 0 - любое время открытия) | //+----------------------------------------------------------------------------+ bool ExistPositions(string sy="", int op=-1, int mn=-1, datetime ot=0) { int i, k=OrdersTotal(); if (sy=="0") sy=Symbol(); for (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==sy || sy=="") { if (OrderType()==OP_BUY || OrderType()==OP_SELL) { if (op<0 || OrderType()==op) { if (mn<0 || OrderMagicNumber()==mn) { if (ot<=OrderOpenTime()) return(True); } } } } } } return(False); }
测试器的OpenPosition()函数。
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 13.06.2007 | //| Описание : Открытие позиции. Версия функции для тестов на истории. | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента ("" - текущий символ) | //| op - операция | //| ll - лот | //| sl - уровень стоп | //| tp - уровень тейк | //| mn - MagicNumber | //+----------------------------------------------------------------------------+ void OpenPosition(string sy, int op, double ll, double sl=0, double tp=0, int mn=0) { color clOpen; double pp; int err, ticket; if (sy=="") sy=Symbol(); if (op==OP_BUY) { pp=MarketInfo(sy, MODE_ASK); clOpen=clOpenBuy; } else { pp=MarketInfo(sy, MODE_BID); clOpen=clOpenSell; } ticket=OrderSend(sy, op, ll, pp, Slippage, sl, tp, "", mn, 0, clOpen); if (ticket<0) { err=GetLastError(); Print("Error(",err,") open ",GetNameOP(op),": ",ErrorDescription(err)); Print("Ask=",Ask," Bid=",Bid," sy=",sy," ll=",ll, " pp=",pp," sl=",sl," tp=",tp," mn=",mn); } }
OpenPosition()函数用于在线。
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 21.03.2008 | //| Описание : Открывает позицию и возвращает её тикет. | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента (NULL или "" - текущий символ) | //| op - операция | //| ll - лот | //| sl - уровень стоп | //| tp - уровень тейк | //| mn - MagicNumber | //+----------------------------------------------------------------------------+ int OpenPosition(string sy, int op, double ll, double sl=0, double tp=0, int mn=0) { color clOpen; datetime ot; double pp, pa, pb; int dg, err, it, ticket=0; string lsComm=WindowExpertName()+" "+GetNameTF(Period()); if (sy=="" || sy=="0") sy=Symbol(); if (op==OP_BUY) clOpen=clOpenBuy; else clOpen=clOpenSell; for (it=1; it<=NumberOfTry; it++) { if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) { Print("OpenPosition(): Остановка работы функции"); break; } while (!IsTradeAllowed()) Sleep(5000); RefreshRates(); dg=MarketInfo(sy, MODE_DIGITS); pa=MarketInfo(sy, MODE_ASK); pb=MarketInfo(sy, MODE_BID); if (op==OP_BUY) pp=pa; else pp=pb; pp=NormalizeDouble(pp, dg); ot=TimeCurrent(); ticket=OrderSend(sy, op, ll, pp, Slippage, sl, tp, lsComm, mn, 0, clOpen); if (ticket>0) { if (UseSound) PlaySound(NameFileSound); break; } else { err=GetLastError(); if (pa==0 && pb==0) Message("Проверьте в Обзоре рынка наличие символа "+sy); // Вывод сообщения об ошибке Print("Error(",err,") opening position: ",ErrorDescription(err),", try ",it); Print("Ask=",pa," Bid=",pb," sy=",sy," ll=",ll," op=",GetNameOP(op), " pp=",pp," sl=",sl," tp=",tp," mn=",mn); // Блокировка работы советника if (err==2 || err==64 || err==65 || err==133) { gbDisabled=True; break; } // Длительная пауза if (err==4 || err==131 || err==132) { Sleep(1000*300); break; } if (err==128 || err==142 || err==143) { Sleep(1000*66.666); if (ExistPositions(sy, op, mn, ot)) { if (UseSound) PlaySound(NameFileSound); break; } } if (err==140 || err==148 || err==4110 || err==4111) break; if (err==141) Sleep(1000*100); if (err==145) Sleep(1000*17); if (err==146) while (IsTradeContextBusy()) Sleep(1000*11); if (err!=135) Sleep(1000*7.7); } } return(ticket); }
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 01.09.2005 | //| Описание : Вывод сообщения в коммент и в журнал | //+----------------------------------------------------------------------------+ //| Параметры: | //| m - текст сообщения | //+----------------------------------------------------------------------------+ void Message(string m) { Comment(m); if (StringLen(m)>0) Print(m); }
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 01.09.2005 | //| Описание : Возвращает наименование таймфрейма | //+----------------------------------------------------------------------------+ //| Параметры: | //| TimeFrame - таймфрейм (количество секунд) (0 - текущий ТФ) | //+----------------------------------------------------------------------------+ string GetNameTF(int TimeFrame=0) { if (TimeFrame==0) TimeFrame=Period(); switch (TimeFrame) { case PERIOD_M1: return("M1"); case PERIOD_M5: return("M5"); case PERIOD_M15: return("M15"); case PERIOD_M30: return("M30"); case PERIOD_H1: return("H1"); case PERIOD_H4: return("H4"); case PERIOD_D1: return("Daily"); case PERIOD_W1: return("Weekly"); case PERIOD_MN1: return("Monthly"); default: return("UnknownPeriod"); } }
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 01.09.2005 | //| Описание : Возвращает наименование торговой операции | //+----------------------------------------------------------------------------+ //| Параметры: | //| op - идентификатор торговой операции | //+----------------------------------------------------------------------------+ string GetNameOP(int op) { switch (op) { case OP_BUY : return("Buy"); case OP_SELL : return("Sell"); case OP_BUYLIMIT : return("Buy Limit"); case OP_SELLLIMIT: return("Sell Limit"); case OP_BUYSTOP : return("Buy Stop"); case OP_SELLSTOP : return("Sell Stop"); default : return("Unknown Operation"); } }
ModifyOrder()函数。
ModifyOrder 函数是为了改变一个预选订单的一个或多个价格水平。在这里,挂单 被理解为限价 单 或止损 单,以及市场买入 或卖出 单,即一个头寸。使用ModifyOrder 函数,你可以修改仓位的StopLoss 和TakeProfit 两个价位,而对于挂单,OpenPrice 的设置价格也可以被改变。修改后的价格水平被作为参数传递给ModifyOrder 函数。如果任何一个参数为负数,相应的价格水平将不会被改变。
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 28.11.2006 | //| Описание : Модификация одного предварительно выбранного ордера. | //+----------------------------------------------------------------------------+ //| Параметры: | //| pp - цена установки ордера | //| sl - ценовой уровень стопа | //| tp - ценовой уровень тейка | //| cl - цвет значка модификации | //+----------------------------------------------------------------------------+ void ModifyOrder(double pp=-1, double sl=0, double tp=0, color cl=CLR_NONE) { bool fm; double op, pa, pb, os, ot; int dg=MarketInfo(OrderSymbol(), MODE_DIGITS), er, it; if (pp<=0) pp=OrderOpenPrice(); if (sl<0 ) sl=OrderStopLoss(); if (tp<0 ) tp=OrderTakeProfit(); pp=NormalizeDouble(pp, dg); sl=NormalizeDouble(sl, dg); tp=NormalizeDouble(tp, dg); op=NormalizeDouble(OrderOpenPrice() , dg); os=NormalizeDouble(OrderStopLoss() , dg); ot=NormalizeDouble(OrderTakeProfit(), dg); if (pp!=op || sl!=os || tp!=ot) { for (it=1; it<=NumberOfTry; it++) { if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) break; while (!IsTradeAllowed()) Sleep(5000); RefreshRates(); fm=OrderModify(OrderTicket(), pp, sl, tp, 0, cl); if (fm) { if (UseSound) PlaySound(NameFileSound); break; } else { er=GetLastError(); pa=MarketInfo(OrderSymbol(), MODE_ASK); pb=MarketInfo(OrderSymbol(), MODE_BID); Print("Error(",er,") modifying order: ",ErrorDescription(er),", try ",it); Print("Ask=",pa," Bid=",pb," sy=",OrderSymbol(), " op="+GetNameOP(OrderType())," pp=",pp," sl=",sl," tp=",tp); Sleep(1000*10); } } } }
DeleteOrders()函数。测试者版本。
函数DeleteOrders()旨在删除挂单 BuyLimit, BuyStop, SellLimit 和 SellStop。DeleteOrders()函数是通用的,即它可以用来删除所有存在的挂单,以及符合函数参数设置的选择条件的特定挂单。
sy- 仪器的名称。由于只有当前的符号可以在策略测试器中进行交易,这个参数与策略测试器版本无关,只是为了与本功能的在线版本兼容而需要。在测试器中最好使用""或NULL的值。默认值""表示任何符号。
op- 交易操作的类型,挂单的类型。五个值中有一个是可能的。-1,OP_BUYLIMIT,OP_BUYSTOP,OP_SELLLIMIT或OP_SELLSTOP。默认值为-1意味着任何顺序。
mn- MagicNumber,待定订单的识别号码。默认值-1表示任何MagicNumber。
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 13.06.2007 | //| Описание : Удаление ордеров. Версия функции для тестов на истории. | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента (NULL - текущий символ) | //| op - операция ( -1 - любой ордер) | //| mn - MagicNumber ( -1 - любой магик) | //+----------------------------------------------------------------------------+ void DeleteOrders(string sy="", int op=-1, int mn=-1) { int i, k=OrdersTotal(), ot; if (sy=="" || sy=="0") sy=Symbol(); for (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { ot=OrderType(); if (ot==OP_BUYLIMIT || ot==OP_BUYSTOP || ot==OP_SELLLIMIT || ot==OP_SELLSTOP) { if (OrderSymbol()==sy && (op<0 || ot==op)) { if (mn<0 || OrderMagicNumber()==mn) { OrderDelete(OrderTicket(), clDelete); } } } } } }
DeleteOrders()函数。在线版本。
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 28.11.2006 | //| Описание : Удаление ордеров | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента ( "" - любой символ, | //| NULL - текущий символ) | //| op - операция ( -1 - любой ордер) | //| mn - MagicNumber ( -1 - любой магик) | //+----------------------------------------------------------------------------+ void DeleteOrders(string sy="", int op=-1, int mn=-1) { bool fd; int err, i, it, k=OrdersTotal(), ot; if (sy=="0") sy=Symbol(); for (i=k-1; i>=0; i--) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { ot=OrderType(); if (ot>1 && ot<6) { if ((OrderSymbol()==sy || sy=="") && (op<0 || ot==op)) { if (mn<0 || OrderMagicNumber()==mn) { for (it=1; it<=NumberOfTry; it++) { if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) break; while (!IsTradeAllowed()) Sleep(5000); fd=OrderDelete(OrderTicket(), clDelete); if (fd) { if (UseSound) PlaySound(NameFileSound); break; } else { err=GetLastError(); Print("Error(",err,") delete order ",GetNameOP(ot), ": ",ErrorDescription(err),", try ",it); Sleep(1000*5); } } } } } } } }
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 07.10.2006 | //| Описание : Поиск ближайшего фрактала. | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента (NULL - текущий символ) | //| tf - таймфрейм ( 0 - текущий ТФ) | //| mode - тип фрактала (MODE_LOWER|MODE_UPPER) | //+----------------------------------------------------------------------------+ double FindNearFractal(string sy="0", int tf=0, int mode=MODE_LOWER) { if (sy=="" || sy=="0") sy=Symbol(); double f=0; int d=MarketInfo(sy, MODE_DIGITS), s; if (d==0) if (StringFind(sy, "JPY")<0) d=4; else d=2; for (s=2; s<100; s++) { f=iFractals(sy, tf, mode, s); if (f!=0) return(NormalizeDouble(f, d)); } Print("FindNearFractal(): Фрактал не найден"); return(0); }
函数ExistOrdersByLot()。
返回一个标志,表明存在一个具有指定手数的订单。True- 秩序存在(已设定),False- 秩序不存在(未设定)。你可以用函数参数限制要检查的订单列表。
- sy- 仪器的名称。如果你设置了这个参数,函数将只检查指定工具的订单。NULL 表示当前的仪器,而""(默认)表示任何仪器。
- op- 操作,待定订单 的类型。有效值:OP_BUYLIMIT、OP_BUYSTOP、OP_SELLLIMIT、OP_SELLSTOP 或-1。默认值为-1 表示任何订单类型。
- mn- 订单标识符(MagicNumber)。默认值为-1 意味着任何MagicNumber。
- lo- 地段的大小,精确度为小数点后两位。默认值是0- 任何批次的大小。
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 28.11.2006 | //| Описание : Возвращает флаг существования ордера по размеру лота. | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента ("" - любой символ, | //| NULL - текущий символ) | //| op - операция (-1 - любой ордер) | //| mn - MagicNumber (-1 - любой магик) | //| lo - лот ( 0 - любой лот) | //+----------------------------------------------------------------------------+ bool ExistOrdersByLot(string sy="", int op=-1, int mn=-1, double lo=0) { int i, k=OrdersTotal(), ot; lo=NormalizeDouble(lo, 2); if (sy=="0") sy=Symbol(); for (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { ot=OrderType(); if (ot>1 && ot<6) { if ((OrderSymbol()==sy || sy=="") && (op<0 || ot==op)) { if (mn<0 || OrderMagicNumber()==mn) { if (lo<=0 || NormalizeDouble(OrderLots(), 2)==lo) return(True); } } } } } return(False); }
GetLotLastOrder()函数。
返回最后下单的手数或-1。你可以用函数参数限制要检查的订单列表。
- sy- 仪器的名称。如果给出这个参数,函数将只检查指定工具的订单。NULL 表示当前的仪器,""(默认)表示任何仪器。
- op- 操作,待定订单 的类型。有效值:OP_BUYLIMIT、OP_BUYSTOP、OP_SELLLIMIT、OP_SELLSTOP 或-1。默认值为-1 意味着任何顺序。
- mn- 订单标识符(MagicNumber)。默认值-1 表示任何MagicNumber。
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 28.11.2006 | //| Описание : Возвращает размер лота последнего выставленного ордера или -1 | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента ("" - любой символ, | //| NULL - текущий символ) | //| op - операция (-1 - любая позиция) | //| mn - MagicNumber (-1 - любой магик) | //+----------------------------------------------------------------------------+ double GetLotLastOrder(string sy="", int op=-1, int mn=-1) { datetime o; double l=-1; int i, k=OrdersTotal(); if (sy=="0") sy=Symbol(); for (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==sy || sy=="") { if (OrderType()>1 && OrderType()<6) { if (op<0 || OrderType()==op) { if (mn<0 || OrderMagicNumber()==mn) { if (o<OrderOpenTime()) { o=OrderOpenTime(); l=OrderLots(); } } } } } } } return(l); }
GetOrderOpenPrice()函数。
返回最后打开的订单的设置价格或0。你可以用函数参数限制要检查的订单列表。
- sy- 仪器的名称。如果给出这个参数,函数将只检查指定工具的订单。NULL 表示当前的仪器,""(默认)表示任何仪器。
- op- 操作,待定订单 的类型。有效值:OP_BUYLIMIT、OP_BUYSTOP、OP_SELLLIMIT、OP_SELLSTOP 或-1。默认值为-1 表示任何顺序。
- mn- 订单标识符(MagicNumber)。默认值-1 表示任何MagicNumber。
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 28.11.2006 | //| Описание : Возвращает цену установки последнего ордера или 0. | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента ("" - любой символ, | //| NULL - текущий символ) | //| op - операция (-1 - любая позиция) | //| mn - MagicNumber (-1 - любой магик) | //+----------------------------------------------------------------------------+ double GetOrderOpenPrice(string sy="", int op=-1, int mn=-1) { datetime t; double r=0; int i, k=OrdersTotal(); if (sy=="0") sy=Symbol(); for (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==sy || sy=="") { if (OrderType()>1 && OrderType()<6) { if (op<0 || OrderType()==op) { if (mn<0 || OrderMagicNumber()==mn) { if (t<OrderOpenTime()) { t=OrderOpenTime(); r=OrderOpenPrice(); } } } } } } } return(r); }
IndexByTicket()函数。
返回票据上的订单或头寸的索引(在已设订单或未结头寸的总列表中的序号)。如果IndexByTicket() 不能找到一个具有所需票据的订单或头寸,它将返回-1。我们可以用函数参数限制要检查的订单或头寸的列表。
- sy- 仪器的名称。如果你指定这个参数,函数将只检查指定工具的订单和头寸。NULL 表示当前的仪器,""(默认)表示任何仪器。
- op-交易操作,挂单或头寸的类型。有效值:OP_BUY,OP_BUYLIMIT,OP_BUYSTOP,OP_SELL,OP_SELLLIMIT,OP_SELLSTOP 或-1。默认值为-1,表示任何顺序或位置。
- mn- 一个订单或头寸的标识符(MagicNumber)。默认值-1 表示任何MagicNumber。
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 20.04.2007 | //| Описание : Возвращает индекс ордера или позиции по тикету | //+----------------------------------------------------------------------------+ //| Параметры: | //| ti - тикет ордера, позиции | //| sy - наименование инструмента ("" - любой символ, | //| NULL - текущий символ) | //| op - операция (-1 - любая позиция) | //| mn - MagicNumber (-1 - любой магик) | //+----------------------------------------------------------------------------+ int IndexByTicket(int ti, string sy="", int op=-1, int mn=-1) { int i, k=OrdersTotal(); if (sy=="0") sy=Symbol(); for (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) { if ((mn<0 || OrderMagicNumber()==mn) && OrderTicket()==ti) return(i); } } } return(-1); }
所有函数均取自该线程-h ttp://forum.mql4.com/ru/11287 ,该线程包含每个函数的详细描述及其使用示例
第2页内容
NumberOfOrders - 返回订单数量。
ClosePosBySelect - 关闭一个预先选定的仓位。
ClosePosBySizeProfitInCurrency - 关闭那些以一定价值的存款货币获利的头寸
ClosePosBySizeLossInCurrency - 关闭那些存款货币损失超过一定值的头寸
ClosePositions - 以市场价格平仓
ClosePosFirstProfit - 以市场价格平仓首先获利
ClosePosWithMaxProfitInCurrency - 以存款货币的最大正利润平仓
DistMarketAndPos- 返回市场与最近头寸之间的距离(以点为单位)
ExistOPNearMarket - 返回市场附近是否存在仓位或订单的标志
ExistPosByPrice - 返回以开盘价存在头寸的标志
GetAmountLotFromOpenPos - 返回未平仓头寸的手数
第 3 页
GetIndexByTicket - 按单据返回订单或仓位的索引。
相关性 - 返回两个系列的相关性。
GetIndexLastPos - 返回最后一个未平仓头寸的索引或 -1
GetLotLastPos - 返回最后一个未平仓头寸的手数或 -1
GetMaxLotFromOpenPos - 返回未平仓头寸的最大手数
GetMinLotFromOpenPos - 返回未平仓头寸的最小手数
NumberOfPositions - 返回位置数。
GetProfitFromDateInCurrency - 返回自特定日期以来平仓的存款货币的总利润
GetProfitOpenPosInCurrency - 以存款货币返回未平仓头寸的总利润
GetProfitOpenPosInPoint - 返回未平仓头寸的总利润(以点为单位)
GetTicketLastPos - 返回最后一个开仓的票或 -1
第 4 页
GetTypeLastClosePos - 返回最后平仓的类型或 -1
GetTypeLastOpenPos - 返回最后开仓的类型或 -1
isCloseLastPosByStop - 返回通过停止关闭最后一个头寸的标志
isCloseLastPosByTake - 返回最后一个持仓平仓的标志。
isLossLastPos - 返回最后一个位置的损失标志。
isTradeToDay - 返回今天的交易标志
NumberOfBarCloseLastPos - 返回最后一个位置的收盘柱数或 -1。
NumberOfBarOpenLastPos - 返回最后一个开仓柱的编号或 -1。
NumberOfLossPosToday - 返回今天平仓的亏损头寸数量。
PriceCloseLastPos - 返回最后平仓的收盘价。
第 5 页
PriceOpenLastPos - 返回最后一个未平仓头寸的开盘价。
PriceOpenLastClosePos - 返回最后平仓的开盘价。
PriceOpenNearPos - 返回最近头寸的开盘价。
TicketNearPos - 以开盘价返回离市场最近仓位的票。
TypeNearPos - 返回最接近市场的仓位类型,或 -1。
TimeOpenLastPos - 返回最后一个开仓的开仓时间。
BubbleSort - 对数组元素执行冒泡排序。
BarsBetweenLastFractals - 返回最后两个分形之间的柱数。
SecondsAfterCloseLastPos - 返回最后一个头寸关闭后的秒数。
SecondsAfterOpenLastPos - 返回上一个仓位开仓后的秒数。
DeleteOppositeOrders - 删除相反的订单位置
ArraySearchDouble - 按值搜索数组中的元素并返回找到的元素的索引,或 -1
ArraySearchInt - 按值搜索数组中的元素并返回找到的元素的索引,或 -1。
ArraySearchString - 按值搜索数组元素并返回找到的元素的索引,或 -1
GetLotLastClosePos - 返回最后平仓的手数或 -1
ArrayMax - 返回数组中最大元素的值。
第 6 页
ArrayMin - 返回数组中最小元素的值
GetExtremumZZBar - 按其编号返回 ZigZag 极值柱数。
ArrayAvg - 返回数组元素的算术平均值。
ArrayAvGeom - 返回数组元素的几何平均值。
SetHLine - 将 OBJ_HLINE 对象设置为水平线
SetVLine - 将 OBJ_VLINE 对象设置为垂直线
SetTLine - 将 OBJ_TREND 对象设置为趋势线
SetTLineByAngle - 按角度设置趋势线的 OBJ_TRENDBYANGLE 对象
SetArrow - 设置图表上的图标,OBJ_ARROW 对象。
SetLabel - 设置一个文本标签,一个 OBJ_LABEL 对象。
CrossPointOfLines - 计算两条线的交点坐标。每条线由其点的一对坐标给出。
SetRegression - 将 OBJ_REGRESSION 对象设置为线性回归通道。
EquationDirect - 直线方程。计算 X 在与线的交点处的 Y 值。
GetArrowInterval - 返回设置信号指针的间隔
GetArrowInterval - 返回设置信号指针的间隔
FindNearFractal - 寻找最近的分形。返回价格水平。
GetExtremumZZBar - 按其编号返回 ZigZag 极值柱数。
GetExtremumZZPrice - 按其数量返回 ZigZag 极值。
GetFractalBar - 按其编号返回分形柱编号。
GetNearestDownFractal - 返回最近的向下分形的价格水平
GetNearestUpFractal - 返回最近的向上分形
第 7 页
CorrectTF - 将时间范围更正到最接近的受支持的 MT4。
DateBeginQuarter - 返回季度的开始日期
DateOfMonday - 按周数返回星期一的日期
斐波那契 - 按其序数返回斐波那契数列的元素。
GetNameMA - 返回 MA 方法的名称。
GetPriceDiffInPoint - 返回两个柱之间的价格差。
GetTypePrice - 返回价格类型名称。
ArrayLR - 生成线性回归值数组。
ArrayMo - 返回模式 - 分布密度曲线的最大值。
ExistOrdersByPrice - 返回以设定价格存在订单的标志
ClosePosBySelect - 关闭一个预先选择的仓位
CountOrders - 按类型计算订单数量。
ModifyOrder - 订单修改。回测的函数版本。
IIFc - 根据条件返回两个值之一。
IIFd - 根据条件返回两个值之一。
IIFi - 根据条件返回两个值之一。
IIFs - 根据条件返回两个值之一。
ExistInHistoryCloseBetween - 返回在日期之间关闭(删除)的仓位或订单历史记录中的存在标志。
ExistInHistoryOpenBetween - 返回在日期之间打开(设置)的仓位或订单历史中存在的标志。
ExistInHistoryToDay - 返回今天历史记录中存在订单或头寸的标志
TakeProfitLastPos - 返回最后一个未平仓头寸的止盈价格或 -1。
第 8 页
TakeProfitLastClosePos - 返回最后平仓的获利价格或 -1。
MovingInWL - 将止损位移动到盈亏平衡点
SimpleTrailing - 使用简单的拖网跟踪位置
ArrayZ - 返回数字系列的 Z 分数。
ArrayDeleteInt - 删除给定索引处的数组元素。返回新数组的大小,如果不能删除任何内容,则返回 -1。
ArrayDeleteDouble - 删除给定索引处的数组元素。返回新数组的大小,如果不能删除任何内容,则返回 -1。
ArrayDeleteString - 删除给定索引处的数组元素。返回新数组的大小,或 -1, 如果什么都不能被删除。
ArrayInsertDouble - 在给定索引处插入一个数组元素。返回新数组的大小。
BubbleSort2 - 对二维数组的元素执行冒泡排序。
GetTypeLastDeleted - 返回最后删除订单的类型或 -1
iBarLargest - 返回最大柱的索引,或 -1。
iBarOfDayCalc - 返回从当天开始计算的柱数。条形编号从 1(一)开始
iBarOfDayReal - 返回一天开始时柱的实数。
NameDayOfWeek - 返回星期几的名称
NormalizeLot - 返回交易手数的标准化值。
NormalizePrice - 返回标准化为刻度大小的价格值。
WeekOfMonth - 返回给定日期的月份的周数
ClosePosBySortLots - 按手数按排序顺序平仓。
AddLeadingZero - 将足够多的前导零“0”添加到字符串 S 以使字符串 S 等于长度 K。
toTime - 将两个/三个整数转换为时间格式的字符串
第 9 页
StringLower - 返回一个小写字符串
StringUpper - 以大写形式返回字符串
StringToArrayDouble - 将实数从字符串传输到数组
StringToArrayInt - 将整数值从字符串传输到数组
StrSplit - 将字符串拆分为元素数组
StrTran - 子串替换
MovingInWL - 将止损位移动到盈亏平衡点
isTradeTimeString - 返回时间交易启用标志。
isTradeTimeInt - 返回时间交易许可标志。
此外:
一个档案中的所有功能。
所有函数都采用链接库的形式。
ExistOrders() 函数。
返回订单存在标志。它将回答是否设置了订单的问题。使用此功能,您可以请求任何订单,以及更具体的订单。请求过滤器使用函数参数配置: