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

 

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

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

 

 
PuzanZero:

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

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

 

Я вот написал такой скрипт, но он предполагает, что имя этой линии обязательно 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);
  }
 
PuzanZero:

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

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

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

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

 
может проще задавать линии определенное имя, чтобы скрипт по ней отрабатывал ?
 
keekkenen:
может проще задавать линии определенное имя, чтобы скрипт по ней отрабатывал ?
Ресурсов компу хватит и на первый вариант, НО изящнее второй (задавать имя)!!! :)))
 
TarasBY:
Ресурсов компу хватит и на первый вариант, НО изящнее второй (задавать имя)!!! :)))
А если автор будет всерьез заниматься темой, то имеет смысл определить для себя иерархическую систему именования объектов.
Например, начать с префикса, за который можно взять имя скрипта, а далее добавлять классификацию типа объекта.
Тогда поиск нужного объекта значительно упростится.
 
granit77:
А если автор будет всерьез заниматься темой, то имеет смысл определить для себя иерархическую систему именования объектов.
Например, начать с префикса, за который можно взять имя скрипта, а далее добавлять классификацию типа объекта.
Тогда поиск нужного объекта значительно упростится.

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

void deinit()
{
    ObjectsDeleteAll();
}

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

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

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

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


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