Хотел использовать эти полезные функции в эксперте и столкнулся с тем, что
ExistOrders( NULL)
и
ExistPositions( NULL, OP_BUY)
Не видят открытых ордеров и позиций по текущему инструменту.
В чем дело?
Судя по вызову функций Вы их переделали. Теперь это Ваши функции и только от Вас зависит правильность их работы. Если не переделывали, то вызывайте их как положено
Судя по вызову функций Вы их переделали. Теперь это Ваши функции и только от Вас зависит правильность их работы. Если не переделывали, то вызывайте их как положено
А почему вы решили что я их переделал?
Вот примеры вызовов этих функций от KimIV
ExistOrders(NULL);
ExistOrders("", OP_BUYLIMIT);
ExistPositions(NULL);ExistPositions("", OP_BUY);
А почему вы решили что я их переделал?
Вот примеры вызовов этих функций от KimIV
ExistOrders(NULL);
ExistPositions("", OP_BUY);Выложите сами функции
Выложите сами функции
Please...
//+----------------------------------------------------------------------------+
//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Версия : 12.03.2008 |
//| Описание : Возвращает флаг существования ордеров. |
//+----------------------------------------------------------------------------+
//| Параметры: |
//| sy - наименование инструмента ("" - любой символ, |
//| NULL - текущий символ) |
//| op - операция (-1 - любой ордер) |
//| mn - MagicNumber (-1 - любой магик) |
//| ot - время открытия ( 0 - любое время установки) |
//+----------------------------------------------------------------------------+
bool ExistOrders(string sy="", int op=-1, int mn=-1, datetime ot=0) {
int i, k=OrdersTotal(), ty;
Alert(k);
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
ty=OrderType();
if (ty>1 && ty<6) {
if ((OrderSymbol()==sy || sy=="") && (op<0 || ty==op)) {
if (mn<0 || OrderMagicNumber()==mn) {
if (ot<=OrderOpenTime()) return(True);
}
}
}
}
}
return(False);
}
//+----------------------------------------------------------------------------+
//| Автор : Ким Игорь В. 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);
}
Тогда тему надо было назвать "Бесполезные функции кима..."
Как можно в кодобазе отличить функции, пригодные к новому МТ4, от старых?
Никак. Хотя в новых используется onStart(), в старых start(). Но многие используют старый синтаксис.
Никак. Хотя в новых используется onStart(), в старых start(). Но многие используют старый синтаксис.
В обновленном МТ4 значение NULL изменилось вроде бы.
Используйте или Symbol() или ""
Спасибо.
Попробую. На NULL были и у меня подозрения.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Хотел использовать эти полезные функции в эксперте и столкнулся с тем, что
ExistOrders( NULL)
и
ExistPositions( NULL, OP_BUY)
Не видят открытых ордеров и позиций по текущему инструменту.
В чем дело?