Скачать MetaTrader 5

Можно ли получить значение горизонтальной линии?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Опубликуй статью. Получи вознаграждение!
PuzanZero
23
PuzanZero 2013.03.16 14:14 

Здравствуйте. Скажите можно ли программно записать в переменную значение вертикальной или горизонтальной линии (маркера)?

Допустим, я хочу сделать скрипт, который должен совершить покупку по текущей цене со стоп-лосом на отметке жёлтого маркера (1.30420) см. рисунок. Можно ли сделать такой скрипт?

 

o_o
Модератор
23690
o_o 2013.03.16 14:38  
PuzanZero:

Здравствуйте. Скажите можно ли программно записать в переменную значение вертикальной или горизонтальной линии (маркера)?

функция ObjectGet  с нужной OBJPROP_

PuzanZero
23
PuzanZero 2013.03.16 15:09  

Я вот написал такой скрипт, но он предполагает, что имя этой линии обязательно Horizontal Line 34161.

Скажите, а можно ли сделать так, чтобы программа определяла имя линии автоматически ?

#property show_inputs
extern double  Lot=0.01;

int start()
  {

double SL = ObjectGet("Horizontal Line 34161", OBJPROP_PRICE1 );
int Order = OrderSend(Symbol(),OP_BUY,Lot,Ask,0,SL,0,NULL,0,0,CLR_NONE);

if (Order == -1)
Alert("Ошибка ",GetLastError());

  return(0);
  }
o_o
Модератор
23690
o_o 2013.03.16 15:17  
PuzanZero:

Я вот написал такой скрипт, но он предполагает, что имя этой линии обязательно Horizontal Line 34161.

Скажите, а можно ли сделать так, чтобы программа определяла имя линии автоматически ?

Можно выполнить перебор всех объектов на чарте и найти нужные горизонтальные линии.

Откройте справку по объектам и просмотрите все доступные вам функции.

keekkenen
1135
keekkenen 2013.03.17 05:47  
может проще задавать линии определенное имя, чтобы скрипт по ней отрабатывал ?
TarasBY
1739
TarasBY 2013.03.17 08:16  
keekkenen:
может проще задавать линии определенное имя, чтобы скрипт по ней отрабатывал ?
Ресурсов компу хватит и на первый вариант, НО изящнее второй (задавать имя)!!! :)))
Виктор
Модератор
6559
Виктор 2013.03.17 08:57  
TarasBY:
Ресурсов компу хватит и на первый вариант, НО изящнее второй (задавать имя)!!! :)))
А если автор будет всерьез заниматься темой, то имеет смысл определить для себя иерархическую систему именования объектов.
Например, начать с префикса, за который можно взять имя скрипта, а далее добавлять классификацию типа объекта.
Тогда поиск нужного объекта значительно упростится.
TarasBY
1739
TarasBY 2013.03.17 09:36  
granit77:
А если автор будет всерьез заниматься темой, то имеет смысл определить для себя иерархическую систему именования объектов.
Например, начать с префикса, за который можно взять имя скрипта, а далее добавлять классификацию типа объекта.
Тогда поиск нужного объекта значительно упростится.

Это Вы уже, сударь, "не про жизнь"... - подавляющее большинство авторов (кодов из кодабазы) удаляют объекты (если вообще это делают) при деинициализации очень простым методом:

void deinit()
{
    ObjectsDeleteAll();
}

 - а это следствие того, что никаких префиксов они не используют... Глупо утверждать, что так делают все, но очень редко встретишь автора, уважающего других авторов, возможно "рисующих" на том же графике свои объекты... :(((

keekkenen
1135
keekkenen 2013.03.17 17:48  
TarasBY:
Ресурсов компу хватит и на первый вариант, НО изящнее второй (задавать имя)!!! :)))

дело не в ресурсах ПК, а в том что если линий более одной, то код никак не сможет определить какую из них выбрать..
Alexander
2441
Alexander 2013.03.17 19:34  
keekkenen:

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


Если Вы визуально можете определить эту линию на графике, то и советник сможет.
Fedor
2763
Fedor 2013.03.17 20:30  
"за признак" можно брать как визуальные, так и НЕ визуальные свойства объектов. а для "иерархической системы" для постоянного количества "местознака" использовать пересчёт объектов не с нуля, а с "100", "1000", "10000"... в зависимости от выбранного количества "местознака". тогда общее количество символов в строке имени будет постоянным. тогда все префиксы  будут иметь постоянное местонахождение в строке
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий