Могу ошибаться (может это работает только в индикаторах), но попробуйте так:
int OnInit() { EventSetTimer(3600); return(INIT_SUCCEEDED); }
int deinit(){ EventKillTimer(); return(0); } //+------------------------------------------------------------------+ //| Timer function | //+------------------------------------------------------------------+ void OnTimer() { int countb = 0; for (int sum=0; sum<=OrdersTotal () -1; sum++) {if (OrderType () ==OP_BUY ) countb++; Print ("Оредеров на покупку:", countb); } }
Могу ошибаться (может это работает только в индикаторах), но попробуйте так:
Ваша проверка "void OnTimer()" не есть "Good"
Дешевле использовать функцию
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 19.02.2008 | //| Описание : Возвращает количество позиций. | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента ("" - любой символ, | //| NULL - текущий символ) | //| op - операция (-1 - любая позиция) | //| mn - MagicNumber (-1 - любой магик) | //+----------------------------------------------------------------------------+ int NumberOfPositions(string sy="", int op=-1, int mn=-1) { int i, k=OrdersTotal(), kp=0; 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) kp++; } } } } } return(kp); }
Проверка просто: Print ("Ордеров на покупку: "+NumberOfPositions(Symbol(), OP_BUY, -1)+" Ордеров на продажу: "+NumberOfPositions(Symbol(), OP_SELL, -1));
А какой смысл проверять раз в час? Пусть проверка идет нормально - с каждым тиком, это не перегружает сову.
Ваша проверка "void OnTimer()" не есть "Good"
Дешевле использовать функцию
Проверка просто: Print ("Ордеров на покупку: "+NumberOfPositions(Symbol(), OP_BUY, -1)+" Ордеров на продажу: "+NumberOfPositions(Symbol(), OP_SELL, -1));
А какой смысл проверять раз в час? Пусть проверка идет нормально - с каждым тиком, это не перегружает сову.
Ваша проверка "void OnTimer()" не есть "Good"
Дешевле использовать функцию
Проверка просто: Print ("Ордеров на покупку: "+NumberOfPositions(Symbol(), OP_BUY, -1)+" Ордеров на продажу: "+NumberOfPositions(Symbol(), OP_SELL, -1));
А какой смысл проверять раз в час? Пусть проверка идет нормально - с каждым тиком, это не перегружает сову.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Вот простенький советник который подсчитывает количество открытых ордеров на покупку:
Подскажите как сделать чтобы он проверял количество не с каждым тиком а к примеру раз в час, или с открытием нового бара)