"Полезные функции от KimIV"

 

Хотел использовать эти полезные функции в эксперте и столкнулся с тем, что

ExistOrders( NULL)

и

ExistPositions( NULL, OP_BUY)

Не видят открытых ордеров и позиций по текущему инструменту.

В чем дело?

 
Тогда тему надо было назвать "Бесполезные функции кима..."
 
TeopMex:


Хотел использовать эти полезные функции в эксперте и столкнулся с тем, что

ExistOrders( NULL)

и

ExistPositions( NULL, OP_BUY)

Не видят открытых ордеров и позиций по текущему инструменту.

В чем дело?


Судя по вызову функций Вы их переделали. Теперь это Ваши функции и только от Вас зависит правильность их работы. Если не переделывали, то вызывайте их как положено
 
Vinin:

Судя по вызову функций Вы их переделали. Теперь это Ваши функции и только от Вас зависит правильность их работы. Если не переделывали, то вызывайте их как положено

А почему вы решили что я их переделал?

Вот примеры вызовов этих функций от KimIV

ExistOrders(NULL);

ExistOrders("", OP_BUYLIMIT);
ExistPositions(NULL); 
ExistPositions("", OP_BUY);
 
TeopMex:

А почему вы решили что я их переделал?

Вот примеры вызовов этих функций от KimIV

ExistOrders(NULL);

ExistPositions("", OP_BUY);

Выложите сами функции
 
Vinin:

Выложите сами функции

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);
}


 
AlexeyVik:
Тогда тему надо было назвать "Бесполезные функции кима..."
Я ещё в этом не уверен.
 
TeopMex:




В обновленном МТ4 значение NULL изменилось вроде бы.

Используйте или Symbol() или ""

 
Как можно в кодобазе отличить функции, пригодные к новому МТ4, от старых?
 
Viteek:
Как можно в кодобазе отличить функции, пригодные к новому МТ4, от старых?

Никак. Хотя в новых используется onStart(), в старых start(). Но многие используют старый синтаксис.
 
Vinin:

Никак. Хотя в новых используется onStart(), в старых start(). Но многие используют старый синтаксис.


Vinin:


В обновленном МТ4 значение NULL изменилось вроде бы.

Используйте или Symbol() или ""

Спасибо.

Попробую. На NULL были и у меня подозрения.