Функция ExistPositions().
Предназначена для проверки наличия открытых покупок или продаж. Аналогична функции ExistOrders. По умолчанию осматривает все позиции: текущего и других инструментов. Конкретизировать отбор можно комбинацией фильтров - параметров функции:
- sy - Накладывает ограничение на наименование инструмента. По умолчанию параметр равен "" - отсутствие ограничений, то есть любой инструмент. Если передать NULL, то отбор позиций будет ограничен текущим инструментом.
- op - Накладывает ограничение на тип позиции (Buy/Sell). По умолчанию ограничение отсутствует, то есть проверяется наличие позиции любого типа. Допустимые значения параметра -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() для online.
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. 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 предназначена для изменения одного или нескольких ценовых уровней одного предварительно выбранного ордера. Здесь под ордером понимается как отложенный ордер Limit или Stop, так и рыночный ордер Buy или Sell, то есть позиция. У позиции с помощью функции 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 - означает любой магик.
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. 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 - любой магик.
- 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 - любой магик.
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. 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 - любой магик.
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. 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 - любой магик.
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. 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); }

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Все функции взяты из этой ветки - http://forum.mql4.com/ru/11287, в ветке есть подробное описание каждой функции и примеры их использования
Страница №2Содержание
NumberOfOrders - Возвращает количество ордеров.
ClosePosBySelect - Закрывает одну предварительно выбранную позицию.
ClosePosBySizeProfitInCurrency - Закрытие тех позиций, у которых профит в валюте депозита некоторое значение
ClosePosBySizeLossInCurrency - Закрытие тех позиций, у которых убыток в валюте депозита превысил некоторое значение
ClosePositions - Закрытие позиций по рыночной цене
ClosePosFirstProfit - Закрытие позиций по рыночной цене сначала прибыльных
ClosePosWithMaxProfitInCurrency - Закрытие одной позиции с максимальным положительным профитом валюте депозита
DistMarketAndPos - Возвращает расстояние в пунктах между рынком и ближайшей позицией
ExistOPNearMarket - Возвращает флаг существования позиции или ордера около рынка
ExistPosByPrice - Возвращает флаг существования позиций по цене открытия
GetAmountLotFromOpenPos - Возвращает сумму лотов открытых позиций
Страница №3
GetIndexByTicket - Возвращает индекс ордера или позиции по тикету.
Correlation - Возвращает корреляцию двух рядов.
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 - Возвращает номер бара экстремума ЗигЗага по его номеру.
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 - Уравнение прямой. Вычисляет значение Y для X в точке пересечения с прямой.
GetArrowInterval - Возвращает интервал установки сигнальных указателей
GetArrowInterval - Возвращает интервал установки сигнальных указателей
FindNearFractal - Поиск ближайшего фрактала. Возвращает ценовой уровень.
GetExtremumZZBar - Возвращает номер бара экстремума ЗигЗага по его номеру.
GetExtremumZZPrice - Возвращает экстремум ЗигЗага по его номеру.
GetFractalBar - Возвращает номер бара фрактала по его номеру.
GetNearestDownFractal - Возвращает ценовой уровень ближайшего нижнего фрактала
GetNearestUpFractal - Возвращает ближайший верхний фрактал
Страница №7
CorrectTF - Корректирует таймфрейм под ближайший поддерживаемый МТ4.
DateBeginQuarter - Возвращает дату начала квартала
DateOfMonday - Возвращает дату понедельника по номеру недели
Fibonacci - Возвращает элемент ряда Фибоначчи по его порядковому номеру.
GetNameMA - Возвращает наименование метода МА.
GetPriceDiffInPoint - Возвращает ценовую разницу в пунктах между двумя барами.
GetTypePrice - Возвращает наименование типа цены.
ArrayLR - Формирует массив значений линейной регрессии.
ArrayMo - Возвращает Моду - максимум кривой плотности распределения.
ExistOrdersByPrice - Возвращает флаг существования ордеров по цене установки
ClosePosBySelect - Закрытие одной предварительно выбранной позиции
CountOrders - Рассчитывает количество ордеров по типам.
ModifyOrder - Модификация ордера. Версия функции для тестов на истории.
IIFc - Возвращает одно из двух значений в зависимости от условия.
IIFd - Возвращает одно из двух значений в зависимости от условия.
IIFi - Возвращает одно из двух значений взависимости от условия.
IIFs - Возвращает одно из двух значений взависимости от условия.
ExistInHistoryCloseBetween - Возвращает флаг существования в истории позиции или ордера, закрытой (удалённого) между датами.
ExistInHistoryOpenBetween - Возвращает флаг существования в истории позиции или ордера, открытой (установленного) между датами.
ExistInHistoryToDay - Возвращает флаг наличия ордера или позиции в истории за сегодня
TakeProfitLastPos - Возвращает цену TakeProfit последней открытой позиций или -1.
Страница №8
TakeProfitLastClosePos - Возвращает цену TakeProfit последней закрытой позиций или -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 - Добавляет к строке S столько лидирующих нулей "0", чтобы длина строки S стала равна K.
toTime - Преобразует два/три целых числа в строку в формате времени
Страница №9
StringLower - Возвращает строку в нижнем регистре
StringUpper - Возвращает строку в ВЕРХНЕМ регистре
StringToArrayDouble - Перенос вещественных чисел из строки в массив
StringToArrayInt - Перенос целочисленных значений из строки в массив
StrSplit - Разбиение строки на массив элементов
StrTran - Замена подстроки
MovingInWL - Перенос уровня стопа в безубыток
isTradeTimeString - Возвращает флаг разрешения торговли по времени.
isTradeTimeInt - Возвращает флаг разрешения торговли по времени.
Дополнительно:
Все функции в одном архиве.
Все функции в виде подключаемых библиотек.
Функция ExistOrders().
Возвращает флаг существования ордера. Ответит на вопрос, установлен ордер или нет. С помощью этой функции можно запросить как любой ордер, так и более конкретный. Фильтра запроса настраивается с помощью параметров функции: