Скомпоновал функцию ErrorRU(), возвращающую краткое или подробное русскоязычное описание ошибки по её коду. Опознаются как ошибки, возвращаемые торговым сервером, так ошибки выполнения MQL-программ. Не для всех, правда, ошибок есть подробное описание с рекомендациями "Что делать", но что уж есть.
Функцию публикую в составе скрипта для её тестирования.
Если кому-то нужна вариация в виде MQH-файла, то берите с моего сайта.
Приветствую Игорь. Спасибо за данную функцию, очень нужна
Эта функция - одна из небольшого набора моих прогнозных функций. Прогнозных в том смысле, что они показывают будущее, то есть отвечают на вопрос: "Что будет, если произойдёт некое событие?". Вот эта функция, например, возвращает профит в валюте депозита, если текущие позиции будут закрыты по цене, переданной в качестве параметра.
op - Торговая операция, тип позиции. Допустимые значения: OP_BUY, OP_SELL или -1. Значение по умолчанию -1 означает любую торговую операцию.
mn - Идентификатор позиции, MagicNumber. Значение по умолчанию -1 означает любой идентификатор.
cp - Цена предполагаемого закрытия. Значение по умолчанию 0 означает текущую цену Bid.
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 29.04.2013 |//| Описание : Возвращает профит в валюте депозита, если текущие позиции |//| будут закрыты по цене, переданной в качестве параметра. |//+----------------------------------------------------------------------------+//| Параметры: |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//| cp - цена предполагаемого закрытия (Bid) ( 0 - текущая цена) |//+----------------------------------------------------------------------------+double ProfitByPrice(int op=-1, int mn=-1, double cp=0) {
double pr=0;
double po=MarketInfo(Symbol(), MODE_POINT);
double sp=MarketInfo(Symbol(), MODE_SPREAD);
double tv=MarketInfo(Symbol(), MODE_TICKVALUE);
int i, k=OrdersTotal();
RefreshRates();
if (cp<=0) cp=Bid;
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==Symbol() && (op<0 || OrderType()==op)) {
if (mn<0 || OrderMagicNumber()==mn) {
if (OrderType()==OP_BUY) {
pr+=(cp-OrderOpenPrice())/po*OrderLots()*tv;
pr+=OrderCommission()+OrderSwap();
}
if (OrderType()==OP_SELL) {
pr+=(OrderOpenPrice()-cp-Ask+Bid)/po*OrderLots()*tv;
pr+=OrderCommission()+OrderSwap();
}
}
}
}
}
return(pr);
}
ЗЫ. Во вложении традиционный скрипт для тестирования функции.
ЗЗЫ. Среди параметров нет традиционного sy, т.к. передаваемая в другом параметре цена должна иметь привязку к торговому инструменту. Я решил не заморачиваться особо и привязаться к текущему символу.
Уважаемый Игорь! Благодарен Вам за Ваши функции, облегчающие нам первые шаги в программировании! Не могли бы мне помочь, мне нужна функция закрытия одной позиции, но без обращения к другим функциям, а чтобы в ней был Селect, 3 попытки и обработка ошибок! А в старте я бы прописывал условия с проверочными функциями без Селекта, чтобы не тормозить процесс. Пока использую в старте цикл Селекта с различными проверками, вызывая функцию закрытия без Селекта, что тормозит почти вдвое! Что Вы можете мне посоветовать? Спасибо!
Нужно установить отложенный ордер по расчётной цене, при условии, если на дистанции Distanc от этой цены отсутствуют другие ордера или позиции. Кажется у вас нет такой функции: существование ордера или позиции на дистанции от заданной цены?
Нужно установить отложенный ордер по расчётной цене, при условии, если на дистанции Distanc от этой цены отсутствуют другие ордера или позиции. Кажется у вас нет такой функции: существование ордера или позиции на дистанции от заданной цены?
По аналогии с этой можете что-нибудь изобразить...
update...
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 24.06.2013 |//| Описание : Возвращает флаг существования ордера или позиции |//| около заданной цены. |//+----------------------------------------------------------------------------+//| Параметры: |//| zp - заданная цена |//| sy - наименование инструмента ("" или NULL - текущий символ) |//| op - торговая операция ( -1 - любая операция) |//| mn - MagicNumber ( -1 - любой магик) |//| ds - расстояние в пунктах от цены ( 1000000 - по умолчанию) |//+----------------------------------------------------------------------------+bool ExistOPNearPrice(double zp, string sy="", int op=-1, int mn=-1, int ds=1000000) {
int i, k=OrdersTotal(), ot;
if (sy=="" || sy=="0") sy=Symbol();
double p=MarketInfo(sy, MODE_POINT);
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
ot=OrderType();
if ((OrderSymbol()==sy) && (op<0 || ot==op)) {
if (mn<0 || OrderMagicNumber()==mn) {
if (MathAbs(OrderOpenPrice()-zp)<ds*p) return(True);
}
}
}
}
return(False);
}
Во вложении скрипт для тестирования функции ExistOPNearPrice()
borilunad: Уважаемый Игорь! Благодарен Вам за Ваши функции, облегчающие нам первые шаги в программировании! Не могли бы мне помочь, мне нужна функция закрытия одной позиции, но без обращения к другим функциям, а чтобы в ней был Селect, 3 попытки и обработка ошибок! А в старте я бы прописывал условия с проверочными функциями без Селекта, чтобы не тормозить процесс. Пока использую в старте цикл Селекта с различными проверками, вызывая функцию закрытия без Селекта, что тормозит почти вдвое! Что Вы можете мне посоветовать? Спасибо!
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
...дописать PUSH-уведомления в ВАШ советник e-SignalOfTrade ?
Скомпоновал функцию ErrorRU(), возвращающую краткое или подробное русскоязычное описание ошибки по её коду. Опознаются как ошибки, возвращаемые торговым сервером, так ошибки выполнения MQL-программ. Не для всех, правда, ошибок есть подробное описание с рекомендациями "Что делать", но что уж есть.
Функцию публикую в составе скрипта для её тестирования.
Если кому-то нужна вариация в виде MQH-файла, то берите с моего сайта.
Приветствую Игорь. Спасибо за данную функцию, очень нужна
Здравствуйте KimIV
У вас, на вашем сайте имеется замечательная функция i-Profit.mq4.
Подскажите, пожалуйста, как из нее вытянуть данные о состоянии баланса:
// 0 - текущего баланса
// 1 - баланса на начало дня
// 2 - баланса на начало недели
// 3 - баланса на начало месяца
// 4 - баланса на начало квартала
// 5 - баланса на начало года
// 6 - баланса на пользовательскую дату
Функция ProfitByPrice().
Эта функция - одна из небольшого набора моих прогнозных функций. Прогнозных в том смысле, что они показывают будущее, то есть отвечают на вопрос: "Что будет, если произойдёт некое событие?". Вот эта функция, например, возвращает профит в валюте депозита, если текущие позиции будут закрыты по цене, переданной в качестве параметра.
ЗЫ. Во вложении традиционный скрипт для тестирования функции.
ЗЗЫ. Среди параметров нет традиционного sy, т.к. передаваемая в другом параметре цена должна иметь привязку к торговому инструменту. Я решил не заморачиваться особо и привязаться к текущему символу.
KimIV:
Нужно установить отложенный ордер по расчётной цене, при условии, если на дистанции Distanc от этой цены отсутствуют другие ордера или позиции. Кажется у вас нет такой функции: существование ордера или позиции на дистанции от заданной цены?
KimIV:
Нужно установить отложенный ордер по расчётной цене, при условии, если на дистанции Distanc от этой цены отсутствуют другие ордера или позиции. Кажется у вас нет такой функции: существование ордера или позиции на дистанции от заданной цены?
По аналогии с этой можете что-нибудь изобразить...
update...
Во вложении скрипт для тестирования функции ExistOPNearPrice()
Уважаемый Игорь! Благодарен Вам за Ваши функции, облегчающие нам первые шаги в программировании! Не могли бы мне помочь, мне нужна функция закрытия одной позиции, но без обращения к другим функциям, а чтобы в ней был Селect, 3 попытки и обработка ошибок! А в старте я бы прописывал условия с проверочными функциями без Селекта, чтобы не тормозить процесс. Пока использую в старте цикл Селекта с различными проверками, вызывая функцию закрытия без Селекта, что тормозит почти вдвое! Что Вы можете мне посоветовать? Спасибо!
А разве ClosePosBySelect() не то?