Эта функция возвращает количество убыточных позиций, закрытых сегодня. Отбор учитываемых позиций задаётся внешними параметрами:
sy - Наименование рыночного инструмента. Если задать этот параметр, то функция учтёт позиции только заданного инструмента. Значение по умолчанию - "" означает любой рыночный инструмент. Значение NULL означает текущий инструмент.
op - Торговая операция, тип позиции. Допустимые значения: OP_BUY, OP_SELL или -1. Значение по умолчанию -1 означает любую позицию.
mn - Идентификатор позиции, MagicNumber. Значение по умолчанию -1 означает любой идентификатор.
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Возвращает количество убыточных позиций, закрытых сегодня. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+intNumberOfLossPosToday(stringsy="", intop=-1, intmn=-1){datetimet;
inti, k=OrdersHistoryTotal(), kp=0;
if(sy=="0")sy=Symbol();
for(i=0; i<k; i++){if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)){if(OrderSymbol()==sy || sy==""){if(OrderType()==OP_BUY || OrderType()==OP_SELL){if(op<0 || OrderType()==op){if(mn<0 || OrderMagicNumber()==mn){t=OrderCloseTime();
if(Year()==TimeYear(t) && DayOfYear()==TimeDayOfYear(t)){if(OrderProfit()<0)kp++;
}}}}}}}return(kp);
}
P.S. Во вложении скрипт для тестирования функции NumberOfLossPosToday().
Эта функция возвращает цену закрытия последней закрытой позиций. Отбор учитываемых позиций задаётся внешними параметрами:
sy - Наименование рыночного инструмента. Если задать этот параметр, то функция учтёт позиции только заданного инструмента. Значение по умолчанию - "" означает любой рыночный инструмент. Значение NULL означает текущий инструмент.
op - Торговая операция, тип позиции. Допустимые значения: OP_BUY, OP_SELL или -1. Значение по умолчанию -1 означает любую позицию.
mn - Идентификатор позиции, MagicNumber. Значение по умолчанию -1 означает любой идентификатор.
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Возвращает цену закрытия последней закрытой позиций. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+doublePriceCloseLastPos(stringsy="", intop=-1, intmn=-1){datetimet;
doubler=0;
inti, k=OrdersHistoryTotal();
if(sy=="0")sy=Symbol();
for(i=0; i<k; i++){if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)){if(OrderSymbol()==sy || sy==""){if(OrderType()==OP_BUY || OrderType()==OP_SELL){if(op<0 || OrderType()==op){if(mn<0 || OrderMagicNumber()==mn){if(t<OrderCloseTime()){t=OrderCloseTime();
r=OrderClosePrice();
}}}}}}}return(r);
}
ЗЫ. Во вложении скрипт для тестирования функции PriceCloseLastPos().
Эта функция возвращает цену открытия последней открытой позиций. Отбор учитываемых позиций задаётся внешними параметрами:
sy - Наименование рыночного инструмента. Если задать этот параметр, то функция учтёт позиции только заданного инструмента. Значение по умолчанию - "" означает любой рыночный инструмент. Значение NULL означает текущий инструмент.
op - Торговая операция, тип позиции. Допустимые значения: OP_BUY, OP_SELL или -1. Значение по умолчанию -1 означает любую позицию.
mn - Идентификатор позиции, MagicNumber. Значение по умолчанию -1 означает любой идентификатор.
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Возвращает цену открытия последней открытой позиций. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+doublePriceOpenLastPos(stringsy="", intop=-1, intmn=-1){datetimet;
doubler=0;
inti, 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(t<OrderOpenTime()){t=OrderOpenTime();
r=OrderOpenPrice();
}}}}}}}return(r);
}
ЗЫ. Во вложени скрипт для тестирования функции PriceOpenLastPos().
Эта функция возвращает цену открытия последней закрытой позиций. Отбор учитываемых позиций задаётся внешними параметрами:
sy - Наименование рыночного инструмента. Если задать этот параметр, то функция учтёт позиции только заданного инструмента. Значение по умолчанию - "" означает любой рыночный инструмент. Значение NULL означает текущий инструмент.
op - Торговая операция, тип позиции. Допустимые значения: OP_BUY, OP_SELL или -1. Значение по умолчанию -1 означает любую позицию.
mn - Идентификатор позиции, MagicNumber. Значение по умолчанию -1 означает любой идентификатор.
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 03.06.2008 |//| Описание : Возвращает цену открытия последней закрытой позиций. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+doublePriceOpenLastClosePos(stringsy="", intop=-1, intmn=-1){datetimet;
doubler=0;
inti, k=OrdersHistoryTotal();
if(sy=="0")sy=Symbol();
for(i=0; i<k; i++){if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)){if(OrderSymbol()==sy || sy==""){if(OrderType()==OP_BUY || OrderType()==OP_SELL){if(op<0 || OrderType()==op){if(mn<0 || OrderMagicNumber()==mn){if(t<OrderCloseTime()){t=OrderCloseTime();
r=OrderOpenPrice();
}}}}}}}return(r);
}
ЗЫ. Во вложении скрипт для тестирования функции PriceOpenLastClosePos().
Эта функция возвращает цену открытия ближайшей позиций. В качестве критерия "близости" позиции выступает минимум расстояния в пунктах между ценой открытия позиции и текущей рыночной ценой. Отбор учитываемых позиций задаётся внешними параметрами:
sy - Наименование рыночного инструмента. Если задать этот параметр, то функция учтёт позиции только заданного инструмента. Значение по умолчанию - "" означает любой рыночный инструмент. Значение NULL означает текущий инструмент.
op - Торговая операция, тип позиции. Допустимые значения: OP_BUY, OP_SELL или -1. Значение по умолчанию -1 означает любую позицию.
mn - Идентификатор позиции, MagicNumber. Значение по умолчанию -1 означает любой идентификатор.
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 04.06.2008 |//| Описание : Возвращает цену открытия ближайшей позиции. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+doublePriceOpenNearPos(stringsy="", intop=-1, intmn=-1){doublemi, oop=0, p;
inti, k=OrdersTotal(), pp=0;
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(OrderType()==OP_BUY || OrderType()==OP_SELL){if(mn<0 || OrderMagicNumber()==mn){if(OrderType()==OP_BUY)mi=MarketInfo(OrderSymbol(), MODE_ASK);
if(OrderType()==OP_SELL)mi=MarketInfo(OrderSymbol(), MODE_BID);
p=MarketInfo(OrderSymbol(), MODE_POINT);
if(p==0)if(StringFind(sy, "JPY")<0)p=0.0001; elsep=0.01;
if(pp==0 || pp>MathAbs(OrderOpenPrice()-mi)/p){pp=MathAbs(OrderOpenPrice()-mi)/p;
oop=OrderOpenPrice();
}}}}}}return(oop);
}
ЗЫ. Во вложении скрипт для тестирования функции PriceOpenNearPos().
Если кому-то интересно, сравните для себя функции DistMarketAndPos() и PriceOpenNearPos(). Отметьте различия.
Эта функция возвращает тикет ближайшей к рынку позиции. В качестве критерия "близости" позиции выступает минимум расстояния в пунктах между ценой открытия позиции и текущей рыночной ценой. Отбор учитываемых позиций задаётся внешними параметрами:
sy - Наименование рыночного инструмента. Если задать этот параметр, то функция учтёт позиции только заданного инструмента. Значение по умолчанию - "" означает любой рыночный инструмент. Значение NULL означает текущий инструмент.
op - Торговая операция, тип позиции. Допустимые значения: OP_BUY, OP_SELL или -1. Значение по умолчанию -1 означает любую позицию.
mn - Идентификатор позиции, MagicNumber. Значение по умолчанию -1 означает любой идентификатор.
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 05.06.2008 |//| Описание : Возвращает тикет ближайшей к рынку позиции по цене открытия. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+intTicketNearPos(stringsy="", intop=-1, intmn=-1){doublemi, p;
inti, k=OrdersTotal(), pp=0, ti=0;
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(OrderType()==OP_BUY || OrderType()==OP_SELL){if(mn<0 || OrderMagicNumber()==mn){if(OrderType()==OP_BUY)mi=MarketInfo(OrderSymbol(), MODE_ASK);
if(OrderType()==OP_SELL)mi=MarketInfo(OrderSymbol(), MODE_BID);
p=MarketInfo(OrderSymbol(), MODE_POINT);
if(p==0)if(StringFind(sy, "JPY")<0)p=0.0001; elsep=0.01;
if(pp==0 || pp>MathAbs(OrderOpenPrice()-mi)/p){pp=MathAbs(OrderOpenPrice()-mi)/p;
ti=OrderTicket();
}}}}}}return(ti);
}
ЗЫ. Во вложении скрипт для тестирования функции TicketNearPos().
Эта функция возвращает тип (0-Buy, 1-Sell) ближайшей к рынку позиции по цене открытия или -1. В качестве критерия "близости" позиции выступает минимум расстояния в пунктах между ценой открытия позиции и текущей рыночной ценой. Отбор учитываемых позиций задаётся внешними параметрами:
sy - Наименование рыночного инструмента. Если задать этот параметр, то функция учтёт позиции только заданного инструмента. Значение по умолчанию - "" означает любой рыночный инструмент. Значение NULL означает текущий инструмент.
op - Торговая операция, тип позиции. Допустимые значения: OP_BUY, OP_SELL или -1. Значение по умолчанию -1 означает любую позицию.
mn - Идентификатор позиции, MagicNumber. Значение по умолчанию -1 означает любой идентификатор.
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 07.06.2008 |//| Описание : Возвращает тип ближайшей к рынку позиции или -1. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+intTypeNearPos(stringsy="", intop=-1, intmn=-1){doublemi, p;
inti, k=OrdersTotal(), pp=0, ty=-1;
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(OrderType()==OP_BUY || OrderType()==OP_SELL){if(mn<0 || OrderMagicNumber()==mn){if(OrderType()==OP_BUY)mi=MarketInfo(OrderSymbol(), MODE_ASK);
if(OrderType()==OP_SELL)mi=MarketInfo(OrderSymbol(), MODE_BID);
p=MarketInfo(OrderSymbol(), MODE_POINT);
if(p==0)if(StringFind(sy, "JPY")<0)p=0.0001; elsep=0.01;
if(pp==0 || pp>MathAbs(OrderOpenPrice()-mi)/p){pp=MathAbs(OrderOpenPrice()-mi)/p;
ty=OrderType();
}}}}}}return(ty);
}
ЗЫ. Во вложении скрипт для тестирования функции TypeNearPos().
Функция NumberOfLossPosToday().
Эта функция возвращает количество убыточных позиций, закрытых сегодня. Отбор учитываемых позиций задаётся внешними параметрами:
- sy - Наименование рыночного инструмента. Если задать этот параметр, то функция учтёт позиции только заданного инструмента. Значение по умолчанию - "" означает любой рыночный инструмент. Значение NULL означает текущий инструмент.
- op - Торговая операция, тип позиции. Допустимые значения: OP_BUY, OP_SELL или -1. Значение по умолчанию -1 означает любую позицию.
- mn - Идентификатор позиции, MagicNumber. Значение по умолчанию -1 означает любой идентификатор.
P.S. Во вложении скрипт для тестирования функции NumberOfLossPosToday().Функция PriceCloseLastPos().
Эта функция возвращает цену закрытия последней закрытой позиций. Отбор учитываемых позиций задаётся внешними параметрами:
- sy - Наименование рыночного инструмента. Если задать этот параметр, то функция учтёт позиции только заданного инструмента. Значение по умолчанию - "" означает любой рыночный инструмент. Значение NULL означает текущий инструмент.
- op - Торговая операция, тип позиции. Допустимые значения: OP_BUY, OP_SELL или -1. Значение по умолчанию -1 означает любую позицию.
- mn - Идентификатор позиции, MagicNumber. Значение по умолчанию -1 означает любой идентификатор.
ЗЫ. Во вложении скрипт для тестирования функции PriceCloseLastPos().Поддерживаю. Можно даже сделать так. Не всю библиотеку. А несколько библиотек, и не в конце, а по мере накопления ф-й по конкретной тематике.
Например, отдельно библиотеку по открытию/закрытию (ф-и открытия просто плюс открытия по Market Watch и закрытие)
След. библиотека - с ф-ями возвращаюшими наличие позиций по тем или иным признакам.
Ну и т.далее.
Только нужно набрать здесь предложения присутствующих по комплектации библиотек.
Функция PriceOpenLastPos().
Эта функция возвращает цену открытия последней открытой позиций. Отбор учитываемых позиций задаётся внешними параметрами:
- sy - Наименование рыночного инструмента. Если задать этот параметр, то функция учтёт позиции только заданного инструмента. Значение по умолчанию - "" означает любой рыночный инструмент. Значение NULL означает текущий инструмент.
- op - Торговая операция, тип позиции. Допустимые значения: OP_BUY, OP_SELL или -1. Значение по умолчанию -1 означает любую позицию.
- mn - Идентификатор позиции, MagicNumber. Значение по умолчанию -1 означает любой идентификатор.
ЗЫ. Во вложени скрипт для тестирования функции PriceOpenLastPos().Функция PriceOpenLastClosePos().
Эта функция возвращает цену открытия последней закрытой позиций. Отбор учитываемых позиций задаётся внешними параметрами:
- sy - Наименование рыночного инструмента. Если задать этот параметр, то функция учтёт позиции только заданного инструмента. Значение по умолчанию - "" означает любой рыночный инструмент. Значение NULL означает текущий инструмент.
- op - Торговая операция, тип позиции. Допустимые значения: OP_BUY, OP_SELL или -1. Значение по умолчанию -1 означает любую позицию.
- mn - Идентификатор позиции, MagicNumber. Значение по умолчанию -1 означает любой идентификатор.
ЗЫ. Во вложении скрипт для тестирования функции PriceOpenLastClosePos().Поддерживаю. Можно даже сделать так. Не всю библиотеку. А несколько библиотек, и не в конце, а по мере накопления ф-й по конкретной тематике.
Например, отдельно библиотеку по открытию/закрытию (ф-и открытия просто плюс открытия по Market Watch и закрытие)
След. библиотека - с ф-ями возвращаюшими наличие позиций по тем или иным признакам.
Ну и т.далее.
Только нужно набрать здесь предложения присутствующих по комплектации библиотек.
Добрый день.
Уважаемый KimIV.
вы делаете очень полезное дело для начинающих экспертописателей.
Присоединяюсь к предыдушему просителю.
Если это не трудно, можете собрать в один "шаблон эксперта " основные функции.
-предварительные проверки
-Открытие позции
-установка ордера
-закрытие позиции
-удаление ордеров
-сопровождение ( модификация) ордеров и позиций.
А уже блок с обращениями к этим функциям каждый будет сочинять сам.
Сам написать эксперта с нуля не могу.
Поэтому начал с изменения чужих кодов.
Стал добавлять ваши функции блоками - получается чехарда.
После нескольких дней поправок и добавлений пробный эксперт заработал, но очень коряво..
Поэтому и возникла эта просьба, создать простой шаблон эксперта.
Шаблон Роша для меня несколько сложен в понимании и избыточен на начальном этапе - из статьи MetaEditor: Опираясь на силу шаблонов.
Функция PriceOpenNearPos().
Эта функция возвращает цену открытия ближайшей позиций. В качестве критерия "близости" позиции выступает минимум расстояния в пунктах между ценой открытия позиции и текущей рыночной ценой. Отбор учитываемых позиций задаётся внешними параметрами:
ЗЫ. Во вложении скрипт для тестирования функции PriceOpenNearPos().
Если кому-то интересно, сравните для себя функции DistMarketAndPos() и PriceOpenNearPos(). Отметьте различия.
Функция TicketNearPos().
Эта функция возвращает тикет ближайшей к рынку позиции. В качестве критерия "близости" позиции выступает минимум расстояния в пунктах между ценой открытия позиции и текущей рыночной ценой. Отбор учитываемых позиций задаётся внешними параметрами:
- sy - Наименование рыночного инструмента. Если задать этот параметр, то функция учтёт позиции только заданного инструмента. Значение по умолчанию - "" означает любой рыночный инструмент. Значение NULL означает текущий инструмент.
- op - Торговая операция, тип позиции. Допустимые значения: OP_BUY, OP_SELL или -1. Значение по умолчанию -1 означает любую позицию.
- mn - Идентификатор позиции, MagicNumber. Значение по умолчанию -1 означает любой идентификатор.
ЗЫ. Во вложении скрипт для тестирования функции TicketNearPos().Функция TypeNearPos().
Эта функция возвращает тип (0-Buy, 1-Sell) ближайшей к рынку позиции по цене открытия или -1. В качестве критерия "близости" позиции выступает минимум расстояния в пунктах между ценой открытия позиции и текущей рыночной ценой. Отбор учитываемых позиций задаётся внешними параметрами:
- sy - Наименование рыночного инструмента. Если задать этот параметр, то функция учтёт позиции только заданного инструмента. Значение по умолчанию - "" означает любой рыночный инструмент. Значение NULL означает текущий инструмент.
- op - Торговая операция, тип позиции. Допустимые значения: OP_BUY, OP_SELL или -1. Значение по умолчанию -1 означает любую позицию.
- mn - Идентификатор позиции, MagicNumber. Значение по умолчанию -1 означает любой идентификатор.
ЗЫ. Во вложении скрипт для тестирования функции TypeNearPos().