[АРХИВ]Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 5. - страница 223

 
solnce600:

Господа!Добрый вечер!

Скажите пожалуйста - почему компилятор считает что в нижеприведенном коде

переменная  int Ticket  не определена.

Он выдает одну ошибку

'Ticket' - variable not defined    C:\Program Files\Alpari NZ MT4(2)\experts\hhhh.mq4 (18, 6)

Хотя в нижеприведенном коде переменная Ticket так же определена в операторе присвоения и код компилируется успешно

Переменная int Ticket - локальная и на следующем тике она обнулится.
 
Vinin:


Наверно просто скобок в одном месте не хватает

 

Проблему решил.Большое спасибо.
 
TarasBY:
Переменная int Ticket - локальная и на следующем тике она обнулится.
Замечание учел.Большое спасибо.
 

Столкнулся с такой проблемой.

Нужно инициализировать одномерный  массив  типа double на 3000 значений цены bid  .Все значения разные и идут не по порядку.

Вручную забивать через запятую  каждое значение - не реально.

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

Подскажите пожалуйста оптимальный вариант.


 

 Написал я простой эксперт, который возвращает 3 переменные и передаёт их в start().

Далее на каждом тике должны эти данные (тип объекта, цена1 и цена2) возвращаться.

//+-------------------------------------------------------------------------------------+
//|                                                TradingByLine.mq4                    |
//|                                                              hoz                    |
//|                                                                                     |
//+-------------------------------------------------------------------------------------+
#property copyright "hoz"
#property link      ""

string objName;
int isObj,
    objType;
double price1,
       price2;

//+-------------------------------------------------------------------------------------+
//| Функция иницилизации                                                                |
//+-------------------------------------------------------------------------------------+
int init()
{

   

  return(0);
}
//+-------------------------------------------------------------------------------------+
//| Функция деиницилизации                                                              |
//+-------------------------------------------------------------------------------------+
int deinit()
{
//----
   
//----
  return(0);
}
//+-------------------------------------------------------------------------------------+
//| Блок поиска своих объектов                                                          |
//+-------------------------------------------------------------------------------------+
bool IsObjectFound(double& price1, double& price2, int& objType)
{
   for (int obj=0; obj<=ObjectsTotal()-1; obj++)
   {
      objName = ObjectName(obj);
      isObj = ObjectFind(objName);
      price1 = ObjectGet("objName", OBJPROP_PRICE1);
      price2 = ObjectGet("objName", OBJPROP_PRICE2);
      objType = ObjectType("objName");

      if (isObj != -1)
         return(true);
   }
   return(false);
}
//+-------------------------------------------------------------------------------------+
//| Функция start                                                                       |
//+-------------------------------------------------------------------------------------+
int start()
{
   if (!IsObjectFound(price1, price2, objType))
      return(0);
   Print("objType = ", objType);
   Print("price1 = ", price1, ", price2 = ", price2);

  return(0);
}

 Далее я в тестере запускаю этот эксперт в режиме визуализации и рисую рукой линию в на графике. Цены отрисовки и тип объекты, который я получил в функции IsObjectFound() не возвращаются верные. Вот вывод журнала:

2013.03.16 20:12:46     2013.01.24 00:02  TradingByLine EURJPY,M1: objType = -1
2013.03.16 20:12:46     2013.01.24 00:02  TradingByLine EURJPY,M1: price1 = 0, price2 = 0
2013.03.16 20:12:46     2013.01.24 00:02  TradingByLine EURJPY,M1: objType = -1
2013.03.16 20:12:45     2013.01.24 00:01  TradingByLine EURJPY,M1: price1 = 0, price2 = 0
2013.03.16 20:12:45     2013.01.24 00:01  TradingByLine EURJPY,M1: objType = -1
2013.03.16 20:12:45     2013.01.24 00:01  TradingByLine EURJPY,M1: price1 = 0, price2 = 0
2013.03.16 20:12:45     2013.01.24 00:01  TradingByLine EURJPY,M1: objType = -1
2013.03.16 20:12:44     2013.01.24 00:01  TradingByLine EURJPY,M1: price1 = 0, price2 = 0

 Линия то нарисована рукой, а значит у неё есть тип и другие параметры:

Линия 

 Почему не возвращаются требуемые параметры?

 
solnce600:

Столкнулся с такой проблемой.

Нужно инициализировать одномерный  массив  типа double на 3000 значений цены bid  .Все значения разные и идут не по порядку.

Вручную забивать через запятую  каждое значение - не реально.

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

Подскажите пожалуйста оптимальный вариант.


Эксель может прочитать, покажите подробнее как делали
 
hoz:

 Написал я простой эксперт, который возвращает 3 переменные и передаёт их в start().

Далее на каждом тике должны эти данные (тип объекта, цена1 и цена2) возвращаться.

 Далее я в тестере запускаю этот эксперт в режиме визуализации и рисую рукой линию в на графике. Цены отрисовки и тип объекты, который я получил в функции IsObjectFound() не возвращаются верные. Вот вывод журнала:

 Линия то нарисована рукой, а значит у неё есть тип и другие параметры:

 

 Почему не возвращаются требуемые параметры?

Надо

price1 = ObjectGet("objName", OBJPROP_PRICE1);
      price2 = ObjectGet("objName", OBJPROP_PRICE2);
      objType = ObjectType("objName");

objName без кавычек. Это имя переменной (идентификатор в тексте программы), в которой содержится имя объекта (строка)

 
alsu:

Надо

objName без кавычек. Это имя переменной (идентификатор в тексте программы), в которой содержится имя объекта (строка)



Кстати, а документация думает иначе. Вот я и попал в заблуждение.

косяк в документации 

 
alsu:

Эксель может прочитать, покажите подробнее как делали

В строке 100 значений с  запятой после первого знака(т.е. цена)

Выделяю строку

Главная - найти и заменить

Меняю все запятые на точки - успешно.

Теперь между значениями нужно поставить запятые

Выбираю формат ячеек

Все форматы

В активном поле в котором отображается формат чисел моей строки - в конце ставлю запятую

Эксель говорит,что не в состоянии обработать введенный  мною формат.

 
hoz:


Кстати, а документация думает иначе. Вот я и попал в заблуждение. 

В кавычках ЗНАЧЕНИЕ строковой переменной, а не сама переменная!!!
Причина обращения: