Помогите пожалуйста найти скрипт - страница 2

 
new-rena:

Масштаб можно изменять, в этом проблем нет.

Горизонтальные линии примагничиваются к ближайшей цене, промахнуться очень сложно.

А как быть с десятками графиков? 
 
Gregory Kovalenko:
А как быть с десятками графиков? 

А Вы все равно будете кидать скрипт в нужную свечу, открывая при этом нужный график... В чем состоит выигрыш?

Промахнетесь, как будете удалять линии?

 
new-rena:

Масштаб можно изменять, в этом проблем нет.

Горизонтальные линии примагничиваются к ближайшей цене, промахнуться очень сложно.

попробовал, горизонтальная линия не примагнитилась, в настройках стоит примагничивание 10 пикселей, кидал максимум + 5
 
new-rena:

А Вы все равно будете кидать скрипт в нужную свечу... В чем состоит выигрыш?

Промахнетесь, как будете удалять линии?

Первое, не промахнусь, поверьте. Второе, в скрипте не проблема прописать что бы линии выделялись. 

 

Вопрос в том, что если не автоматизировать время, на такие мелочи растрачиваешь 20-30 минут (я не имею ввиду только линии).

А это время можно потратить с пользой 

 
Gregory Kovalenko:

Первое, не промахнусь, поверьте. Второе, в скрипте не проблема прописать что бы линии выделялись. 

Вы уже просите написать скрипт, то есть выполнить работу, я правильно понимаю?

Фриланс здесь есть, познакомьтесь.

 
new-rena:
Вы уже просите написать скрипт, то есть выполнить работу, я правильно понимаю?

Нет. Думаю что Вы не понимаете, если у Вас есть чем помочь - благодарю, если Вам хочется заработать лишних пару тысяч на новичке, Вам в другую тему.

Год назад тут люди как то по доброжелательнее были, а теперь помощь сводится к деньгам ) При том что я не ТС попросил подсказать.

 

Спасибо всем за ответы. 

,

P.S. Я просил порекомендовать скрипт, возможно если Вы им пользуетесь. Если нет - зачем писать что то не по теме. 

 
Gregory Kovalenko:

Нет. Думаю что Вы не понимаете, если у Вас есть чем помочь - благодарю, если Вам хочется заработать лишних пару тысяч на новичке, Вам в другую тему.

Год назад тут люди как то по доброжелательнее были, а теперь помощь сводится к деньгам ) При том что я не ТС попросил подсказать.

 

Спасибо всем за ответы. 

Я не фрилансер, но написать такое казалось бы простое ПО будет не просто.

По любому - появятся условия, по которым Вы выбираете свечу, иначе - смысла нет писать.

Затем скорее всего Вам понадобится как то реагировать на такие линии и т.д. и т.п.

А если Вы уже сэкономили 20-30 минут, то остальное время Вам же тоже захочется сэкономить, ведь так???

 
Gregory Kovalenko:

На самом деле в МТ не очень удобно строить линию точно по максимум и минимум свеч, при любом масштабе. Мне приходится смотреть значение свечи, а потом менять свойства у горизонтальной линии. Вот к примеру в Trading Station очень удобно сделано. Там есть тип горизонтальной линии, которая строится только по максимум и минимум.

 Karputov Vladimir, как работает приведённый код? В какую переменную попадает цена и какая, low или high ?

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

А вот этот код, ниже, позволяет определять номер бара (самый правы бар на графике будет иметь индекс "0") и время этого бара:

//+------------------------------------------------------------------+
//|                                                         Test.mq5 |
//|                              Copyright © 2016, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2016, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.000"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- возвращает временную координату, соответствующую точке, в которой брошен мышкой данный эксперт или скрипт
   datetime t=ChartTimeOnDropped();
//--- объявление переменной для найденного времени
   datetime found_t=0;
   int bar=SearchingNearestBar(Symbol(),Period(),t,found_t);
   if(bar!=-1)
      Print("Бар номер ",bar,", время бара ",found_t);
  }
//+------------------------------------------------------------------+
//| Поиск ближайшего бара                                            |
//+------------------------------------------------------------------+
int SearchingNearestBar(string symbol,
                        ENUM_TIMEFRAMES time_frame,
                        datetime find_time,
                        datetime &found_time)
  {
//+------------------------------------------------------------------+
//| symbol - символ                                                  |
//| time_frame - период                                              |
//| find_time - искомое время                                        |
//| found_time - время открытия ближайшего бара                      |
//| если функция возвратила "-1", значит переменная "found_time"     |
//|     содержит неопределёное значение                              |
//+------------------------------------------------------------------+
   if(find_time<0)
      return(-1);
   datetime arr_time[];
   datetime time_left=0;
   datetime time_right=0;
//--- обращение по начальной позиции "0" и количеству требуемых элементов "1"
   CopyTime(symbol,time_frame,0,1,arr_time);
//--- получаем время открытия бара "0" (самого правого бара на графике)
   datetime time0=arr_time[0];
//--- освобождаем буфер динамического массива "arr_time" и устанавливаем размер нулевого измерения в 0
   ArrayFree(arr_time);
//--- обращение по начальной дате "find_time" и количеству требуемых элементов "1"
   if(CopyTime(symbol,time_frame,find_time,1,arr_time)>0)
     {
      time_left=arr_time[0];
      //--- если time0==time_left, значит искомое время находится правее бара с индексом "0"
      if(time0==time_left)
        {
         found_time=time0;
         return(0);
        }
      else
         ArrayFree(arr_time); // освобождаем буфер динамического массива "arr_time" и устанавливаем размер нулевого измерения в 0
      //--- обращение по начальной "time_left" и конечной "time0" датам требуемого интервала времени
      int count=CopyTime(symbol,time_frame,time_left,time0,arr_time);
      if(count>0)
        {
         //--- в массиве arr_time[] элемент с индексом "0", на графике, будет левее элемента "count-1"
         //Print("между ",time_left," и ",time0," ",count," баров. Бар [",0,"] ",arr_time[0]);
         time_left=arr_time[0];
         time_right=arr_time[1];
         //--- объяснение, какие бары имееют какое время
         //Print("левый бар имеет время ",time_left,", искомое время ",find_time,", правый бар имеет время ",time_right);
         //--- среднее время между time_left и time_right
         datetime middle_time=(time_left+time_right)/2;
         if(find_time<middle_time)
           {
            //--- обращение по начальной "time_left" и конечной "time0" датам требуемого интервала времени
            int count_bar=CopyTime(symbol,time_frame,time_left,time0,arr_time);
            if(count_bar!=-1)
              {
               //Print(time_left);
               found_time=time_left;
               return (count_bar-1);
              }
           }
         else
           {
            //--- обращение по начальной "time_right" и конечной "time0" датам требуемого интервала времени
            int count_bar=CopyTime(symbol,time_frame,time_right,time0,arr_time);
            if(count_bar!=-1)
              {
               //Print(time_right);
               found_time=time_right;
               return (count_bar-1);
              }
           }
        }
      else
         return(-1);
     }
   return(-1);
  }
//+------------------------------------------------------------------+

 

А зная индекс бара, дальше нужно просто получить для этого бара, при помощи CopyHigh, получить значение High и построить (нарисовать) линию.

Файлы:
Причина обращения: