Полезные функции от KimIV - страница 48

 

Т.е. добавление константы не влияет на результат

Хотел по быстрому индикатор сделать не получилось, что то (

 
Prival писал (а) >>

Это хорошее правило - недоверие. Проверте в любом математическом пакете. Результаты выложим. Я счас это сделаю в MathCade.

Хорошее, но проверять надо перед тем, как высказывать недоверие. Прошу прощения.

 
TheXpert писал (а) >>

Хорошее, но проверять надо перед тем, как высказывать недоверие. Прошу прощения.

Да вы что если есть сомнения, высказывайте и обязательно. Ведь создав функции к ним уже нехочеться возвращаться, искать ошибки. Нужна уверенность что все правильно сделано. Но все равно гарантий нет http://www.citforum.ru/programming/digest/scofdebug/

 

Добрый день! Получилось так, что функции по фракталам оказались разобщенными по всей ветке.

Таковых обнаружилось две:

одна возвращает число баров между последними фракталами (BarsBetweenLastFractals(string sy="", int tf=0)),

другая, - ценовый уровень последнего фрактала (стр.37).

Чтобы гармонично "закрыть" фрактальную тему необходима ещё одна фунция. Возвращающая номер бара вершины последнего фрактала!

Игорь! Если вам не оч. трудно. Не могли бы вы изготовить и выставить такую функцию ?

 

Функция ExistOrdersByPrice().

Возвращает флаг существования ордера по заданной цене установки. True - ордер существует (установлен), False - ордер отсутствует (не установлен). Ограничить перечень проверяемых ордеров можно параметрами функции:

  • sy - Наименование рыночного инструмента. Если задать этот параметр, то функция проверит ордера только заданного инструмента. NULL означает текущий инструмент, а "" (по умолчанию) - любой инструмент.
  • op - Тип торговой операции, тип отложенного ордера. Допустимые значения: OP_BUYLIMIT, OP_BUYSTOP, OP_SELLLIMIT, OP_SELLSTOP или -1. Значение по умолчанию -1 - означает любой тип ордера.
  • mn - Идентификатор ордера (MagicNumber). Значение по умолчанию -1 - любой магик.
  • pp - Ценовой уровень установки ордера. Значение по умолчанию -1 - любая цена.
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 30.07.2008                                                     |
//|  Описание : Возвращает флаг существования ордеров по цене установки        |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//|    pp - цена                       (-1   - любая цена)                     |
//+----------------------------------------------------------------------------+
bool ExistOrdersByPrice(string sy="", int op=-1, int mn=-1, double pp=-1) {
  int d, 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=="") && (op<0 || OrderType()==op)) {
        if (OrderType()>1 && OrderType()<6) {
          d=MarketInfo(OrderSymbol(), MODE_DIGITS);
          pp=NormalizeDouble(pp, d);
          if (pp<0 || pp==NormalizeDouble(OrderOpenPrice(), d)) {
            if (mn<0 || OrderMagicNumber()==mn) return(True);
          }
        }
      }
    }
  }
  return(False);
}
 

Примеры использования функции ExistOrdersByPrice().

  • Проверить наличие любого ордера по цене установки 1.4
    Message(IIFs(ExistOrdersByPrice("", -1, -1, 1.4), "Есть", "Нет"));
  • Проверить наличие любого ордера по цене установки 1.5 по инструменту текущего графика
    Message(IIFs(ExistOrdersByPrice(NULL, -1, -1, 1.5), "Есть", "Нет"));
  • Проверить наличие ордера BuyLimit по цене установки 1.5 по любому инструменту
    Message(IIFs(ExistOrdersByPrice("", OP_BUYLIMIT, -1, 1.5), "Есть", "Нет"));
  • Проверить наличие ордера SellStop по цене установки 1.4 с магиком 123456 по EURUSD
    Message(IIFs(ExistOrdersByPrice("EURUSD", OP_SELLSTOP, 123456, 1.4), "Есть", "Нет"));
  • Проверить наличие любого ордера по цене установки 106 с магиком 987 по USDJPY
    Message(IIFs(ExistOrdersByPrice("USDJPY", -1, 987, 106), "Есть", "Нет"));

P.S. Во вложении скрипт для тестирования функции ExistOrdersByPrice().

Файлы:
 
rid писал (а) >>
Чтобы гармонично "закрыть" фрактальную тему необходима ещё одна фунция. Возвращающая номер бара вершины последнего фрактала!

13-го августа 2008 года я выкладывал функцию GetFractalBar(стр.41).

 

Выложена библиотека b-Orders.

 
KimIV писал (а) >>

13-го августа 2008 года я выкладывал функцию GetFractalBar(стр.41).

Да, действительно! Благодарю!

 
KimIV писал (а) >>

Выложена библиотека b-Orders.

Оч. полезная библиотека! 0т имени всех присутствующих "обьявляется благодарность!"

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