Скрипт. Получение значение индикатора - страница 2

 
nkaretnikov:

Действительно! Ракетные технологии, например, стали по факту бизнесом, но государством по-прежнему считаются военными. И если нужен кто-то, то чуть ли не президенту ходят решать вопросы. 

Коллеги, я сам стихи люблю. Но может быть кто-то подскажет, как отладить код в MQL5 на текущем графике, а не в новом окне? Мне нужны объекты с графика

Про стихи - это видно, т.к. вопрос туманен, как стихи поэта *********
 
Vladimir Karputov:

Запустите тестер стратегий в режиме визуализации. После окончания теста сохраните шаблон графика. Потом этот шаблон примените к графику в терминале - все объекты будут.


Спасибо! А если обратная ситуация. Т.е. на графике в торговом терминале есть 10 объектов. Скрипт я пишу для изменения свойств некоторых из них. Поэтому хотелось бы запустить скрипт именно на моем графике. 

 
nkaretnikov:

Спасибо! А если обратная ситуация. Т.е. на графике в торговом терминале есть 10 объектов. Скрипт я пишу для изменения свойств некоторых из них. Поэтому хотелось бы запустить скрипт именно на моем графике. 

Ничего не понял. Вы точно не путаете понятия "скрипт" и "эксперт"?
 
Vladimir Karputov:
Ничего не понял. Вы точно не путаете понятия "скрипт" и "эксперт"?

Точно не путаю ))

http://joxi.ru/E2pzQMZu9vxK5r 


Если запустить скрипт в MetatEditor, то он выполняется на новом графике.

http://joxi.ru/bmoxjBKSxOjNM2

http://joxi.ru/V2VDjG7uxBaEdr  

Я хотел бы добиться того, чтобы он выполнялся на графике из терминала, т.к. в этом окне уже есть необходимые объекты

  http://joxi.ru/nAynRe1fY9bO6r 

 
nkaretnikov:

Точно не путаю ))

http://joxi.ru/E2pzQMZu9vxK5r 

Если запустить скрипт в MetatEditor, то он выполняется на новом графике. Я хотел бы добиться того, чтобы он выполнялся на графике из терминала, т.к. в этом окне уже есть необходимые объекты

 http://joxi.ru/nAynRe1fY9bO6r 

Форум: как вставить картинку.

В режиме визуализации тестирование ВСЕГДА открывается на новом графике. Но есть и приятное: когда скрипт запускается из редактора в режиме отладки, то к новому окну графика будет применён шаблон default.tpl. Также нужно настроить сам редактор - вкладка "Отладка", где указать нужный символ и таймфрейм.

Теперь порядок действий:

  1. Нужно настроить сам редактор - вкладка "Отладка", где указать нужный символ и таймфрейм.
  2. Создавайте разные объекты на графике и сохраните шаблон графика под именем "default.tpl"
  3. Запустите скрипт из редактора на отладку.

 
Vladimir Karputov:

Форум: как вставить картинку.

В режиме визуализации тестирование ВСЕГДА открывается на новом графике. Но есть и приятное: когда скрипт запускается из редактора в режиме отладки, то к новому окну графика будет применён шаблон default.tpl. Также нужно настроить сам редактор - вкладка "Отладка", где указать нужный символ и таймфрейм.

Теперь порядок действий:

  1. Нужно настроить сам редактор - вкладка "Отладка", где указать нужный символ и таймфрейм.
  2. Создавайте разные объекты на графике и сохраните шаблон графика под именем "default.tpl"
  3. Запустите скрипт из редактора на отладку.

Отлично! Спасибо!
 
nkaretnikov:
Отлично! Спасибо!

Еще вопрос. 

Продолжаю портирование скрипта

 В MQL4 


if(ObjectFind("1HRange")<0) {MessageBox( "1HRange not found"); return(0);}

      double lRangeLimit = 0.2;

      double lHiLo = l1H - l1L;

      ObjectSet("1HRange",OBJPROP_PRICE1,l1H+lHiLo*lRangeLimit);

      ObjectSet("1HRange",OBJPROP_PRICE2,l1H-lHiLo*lRangeLimit);


 В MQL5

if(ObjectFind(0, "1HRange")<0) {MessageBox( "1HRange not found"); return;}
      double lRangeLimit = 0.2;
      double lHiLo = l1H - l1L;
      ObjectSetDouble("1HRange",OBJPROP_PRICE1,l1H+lHiLo*lRangeLimit);
      ObjectSetDouble("1HRange",OBJPROP_PRICE2,l1H-lHiLo*lRangeLimit);

Получаю

 

Как у прямоугольника теперь называются эти свойства?

 

 




 

 
nkaretnikov:

Еще вопрос. 

Продолжаю портирование скрипта

 В MQL4 


if(ObjectFind("1HRange")<0) {MessageBox( "1HRange not found"); return(0);}

      double lRangeLimit = 0.2;

      double lHiLo = l1H - l1L;

      ObjectSet("1HRange",OBJPROP_PRICE1,l1H+lHiLo*lRangeLimit);

      ObjectSet("1HRange",OBJPROP_PRICE2,l1H-lHiLo*lRangeLimit);


 В MQL5

if(ObjectFind(0, "1HRange")<0) {MessageBox( "1HRange not found"); return;}
      double lRangeLimit = 0.2;
      double lHiLo = l1H - l1L;
      ObjectSetDouble("1HRange",OBJPROP_PRICE1,l1H+lHiLo*lRangeLimit);
      ObjectSetDouble("1HRange",OBJPROP_PRICE2,l1H-lHiLo*lRangeLimit);

Получаю

 

Как у прямоугольника теперь называются эти свойства?


  • OBJ_RECTANGLE - здесь же пример, как работать со свойствами графического объекта "Прямоугольник".
 
Vladimir Karputov:
  • OBJ_RECTANGLE - здесь же пример, как работать со свойствами графического объекта "Прямоугольник".

Спасибо, но там нет моего сценария. Объект уже создан, нужно поменять 2 цены.

Опытным путем выяснилось, что нужно использовать модификатор

if(ObjectFind(0, "1HRange")<0) {MessageBox( "1HRange not found"); return;}
      double lRangeLimit = 0.2;
      double lHiLo = l1H - l1L;
      ObjectSetDouble(0, "1HRange",OBJPROP_PRICE, 1, 57000);// l1H+lHiLo*lRangeLimit);
      ObjectSetDouble(0, "1HRange",OBJPROP_PRICE, 0, 58000);//l1H-lHiLo*lRangeLimit);

В справке о нем говорится, но не дюже внятно

 

====================================================== 

prop_modifier

[in]  Модификатор указанного свойства. Означает номер уровня в инструментах Фибоначчи и в графическом объекте Вилы Эндрюса. Нумерация уровней начинается с нуля.

 ======================================================

Может быть так?

 ====================================================== 

prop_modifier

[in]  Модификатор указанного свойства. Означает номер уровня в инструментах Фибоначчи, в графическом объекте Вилы Эндрюса и других объектах, где по смыслу необходимо несколько ценовых уровней (прямоугольник, эллипс и проч.). Нумерация уровней начинается с нуля.

 ======================================================

 
//+------------------------------------------------------------------+
//| Перемещает точку привязки прямоугольника                         |
//+------------------------------------------------------------------+
bool RectanglePointChange(const long   chart_ID=0,       // ID графика
                          const string name="Rectangle", // имя прямоугольника
                          const int    point_index=0,    // номер точки привязки
                          datetime     time=0,           // координата времени точки привязки
                          double       price=0)          // координата цены точки привязки
  {
//--- если координаты точки не заданы, то перемещаем ее на текущий бар с ценой Bid
   if(!time)
      time=TimeCurrent();
   if(!price)
      price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
//--- сбросим значение ошибки
   ResetLastError();
//--- переместим точку привязки
   if(!ObjectMove(chart_ID,name,point_index,time,price))
     {
      Print(__FUNCTION__,
            ": не удалось переместить точку привязки! Код ошибки = ",GetLastError());
      return(false);
     }
//--- успешное выполнение
   return(true);
  }
Сначала перемещаем одну точку, затем вторую - то есть делаем два вызова этой функции.
Причина обращения: