Существует ли такой советник?

 
Существует ли такой советник, который вычисляет расстояние до ближайшего ордера вверх или вниз и выдает его в окно Alert?
 

Скрипт

//+------------------------------------------------------------------+
//|                                                   DistMarket.mq4 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
//----
 Alert (DistMarketAndPos());  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает расстояние в пунктах между рынком и ближайшей       |
//|             позицей                                                        |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ("" или NULL - текущий символ)          |
//|    op - торговая операция          (    -1      - любая позиция)           |
//|    mn - MagicNumber                (    -1      - любой магик)             |
//+----------------------------------------------------------------------------+
int DistMarketAndPos(string sy="", int op=-1, int mn=-1) {
  double d, p;
  int i, k=OrdersTotal(), r=1000000;

  if (sy=="" || sy=="0") sy=Symbol();
  p=MarketInfo(sy, MODE_POINT);
  if (p==0) if (StringFind(sy, "JPY")<0) p=0.0001; else p=0.01;
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if ((OrderSymbol()==sy) && (op<0 || OrderType()==op)) {
        if (mn<0 || OrderMagicNumber()==mn) {
          if (OrderType()==OP_BUY) {
            d=MathAbs(MarketInfo(sy, MODE_ASK)-OrderOpenPrice())/p;
            if (r>d) r=NormalizeDouble(d, 0);
          }
          if (OrderType()==OP_SELL) {
            d=MathAbs(OrderOpenPrice()-MarketInfo(sy, MODE_BID))/p;
            if (r>d) r=NormalizeDouble(d, 0);
          }
        }
      }
    }
  }
  return(r);
}
Файлы:
 
Спасибо, а как теперь убрать алерт, чтоб компилировался?
 
qwanya:
Спасибо, а как теперь убрать алерт, чтоб компилировался?

А что Вы делали, что у Вас не получилось? Какие варианты этой строки:

Alert (DistMarketAndPos());

Вы перебрали?

Напрягите хоть один мускул мозха и придумайте 5-ть различных вариантов этой строки и каждый раз пробуйте скомпилировать код. Я почти уверен, что если получится перовое (напрячь), то получится и второе! :)))

УСПЕХОВ! (если не осилите, они Вам вряд ли светят...) ;)
 
Я много вариантов пробовал, мозХи уже кипят, здесь все такие приветливые!!! Это всего лишь часть советника, остальную часть я сделал. Пол учебника даже прочитал, чтоб дальше читать и понимать, нужно сначала все читать, что то понимаю, что здесь спрашиваю, так что Вы не серчайте :)
 
qwanya:
Я много вариантов пробовал, мозХи уже кипят, здесь все такие приветливые!!! Это всего лишь часть советника, остальную часть я сделал. Пол учебника даже прочитал, чтоб дальше читать и понимать, нужно сначала все читать, что то понимаю, что здесь спрашиваю, так что Вы не серчайте :)


Подсказка:

1 вариант  

Comment( "\n",DistMarketAndPos());
 
Спасибо, сделал, вот только на SELL теперь перевернуть не могу, чтоб вместе работало
Причина обращения: