Остановить бомбометание сеточника.

 

Добрый день. Написал советника, который ставит статичную сетку стоп ордеров по круглым ценам для удобства восприятия и расчета, пока только на бай. При движении цены вверх или вниз выставляется ордер BuyStop, если на ближайшем уровне нет ордера BuyStop или Buy. Т.к. не нашел открытого советника, есть SHE_Baluev_Pro, но он во флете натягивает ордера друг на друга и переделать его не удалось.

Проблема в том что периодически сбоит и бомбит ордера на одном уровне без остановки. Уже убил вчера пол дня и сегодня утром думал на свежую голову разберусь, но нет. Посмотрите, пожалуйста, где ошибка.

Файлы:
 
panzernik:

Добрый день. Написал советника, который ставит статичную сетку стоп ордеров по круглым ценам для удобства восприятия и расчета, пока только на бай. При движении цены вверх или вниз выставляется ордер BuyStop, если на ближайшем уровне нет ордера BuyStop или Buy. Т.к. не нашел открытого советника, есть SHE_Baluev_Pro, но он во флете натягивает ордера друг на друга и переделать его не удалось.

Проблема в том что периодически сбоит и бомбит ордера на одном уровне без остановки. Уже убил вчера пол дня и сегодня утром думал на свежую голову разберусь, но нет. Посмотрите, пожалуйста, где ошибка.

По-моему, вот здесь вместо "> 1" должно быть "> 0":

   uporder = FindOrder(upprice); // поиск ордера по цене upprice
   if(uporder > 1) // если ордер есть, то ничего не делаю

 

Методом вывода сообщений выяснил, что не находит ордера. Но и кимовская функция тоже не находит, тупик.

Ставлю ExistPosByPrice(Symbol(), -1, -1, upprice); и в алерт выводит ноль. HELP!!! Внизу последняя версия. Глаза болят жуть.

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает флаг существования позиций по цене открытия         |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - торговая операция          (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//|    pp - цена                       ( 0   - любая цена)                     |
//+----------------------------------------------------------------------------+
bool ExistPosByPrice(string sy="", int op=-1, int mn=-1, double pp=0) {
Файлы:
 

Ура работает

if (OrderType()==OP_BUY || OrderType()==OP_BUYSTOP) { - тут поправил и считает правильно. 

Причина обращения: