Просмотр тиков внутри свечи - страница 3

 

Скрипт "SearchingNearestBar.mq5" - поиск ближайшего бара:

//+------------------------------------------------------------------+
//|                                          SearchingNearestBar.mq5 |
//|                              Copyright © 2016, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2016, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.001"
//+------------------------------------------------------------------+
//| 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);
  }
//+------------------------------------------------------------------+

Данный скрипт определяет место, куда его бросили мышкой и ищет ближайший бар к месту "десантирования". Поиск ближайшего бара строится на концепции границ баров:

Границы баров 


Файлы:
 
Karputov Vladimir:

Скрипт "SearchingNearestBar.mq5" - поиск ближайшего бара:

Данный скрипт определяет место, куда его бросили мышкой и ищет ближайший бар к месту "десантирования". Поиск ближайшего бара строится на концепции границ баров:

это iBarShift что ли такой перекрученный?
 
o_O:
это iBarShift что ли такой перекрученный?

Какой такой "iBarShift"?

Добавлено. Мне понадобилось и я написал для себя. 

 
Karputov Vladimir:
Зачем записывать? Тиковая история качается сразу через CopyTicks().

И я также подумал. 

В чем смысл создавать такой плеер?

Может быть достаточно будет выделить свечу, а внизу как отклик на такое действие в окне индикатора отобразить более подробную историю котировки?

Такое наверно(?, не факт) будет полезным.

 
new-rena:

И я также подумал. 

В чем смысл создавать такой плеер?

Может быть достаточно будет выделить свечу, а внизу как отклик на такое действие в окне индикатора отобразить более подробную историю котировки?

Такое наверно(?, не факт) будет полезным.

Индикатор, в котором сдвигаются данные в буфере через определённый интервал времени - вот Вам и плеер. Что вроде тикового индикатора, только заполняется индикатор тиками, которые скачаны с по дату.
 
o_O:

глупость.
Кто-то купил - это значит кто-то ему продал. И неважно направление. Всё определяется наличием и типом выставленных ордеров в стакане

   т.е. "перевес рынка" ( соотношение)  одной из сторон ничего не значит ? ведь тиковая история это "контур" объёма .  Покупателей больше - продавцов меньше и " неважно направление" , есть вариант ,   что актив будет падать?!.

 Выставленные ордера в стакане  это ширина рынка и не факт , что они проявятся в тиковой истории , (могут показывать защитный объём на уровне , а потом убрать  ордера). 

 
Veniamin Skrepkov:

   т.е. "перевес рынка" ( соотношение)  одной из сторон ничего не значит ?

в тике этой информации нет
 
o_O:
в тике этой информации нет
Согласен , "мешки с деньгами" (тики)  в моменте могут быть разными , но за неимением  невидимых данных можно использовать принцип гравитации и "отклонения" рынка интерпретировать как прохождение " крупных планет".  
 

Очень хотелось посмотреть, что же там такого было на GBPUSD в момент эпического падения...

GBPUSDM5 

 

Добавлено:

Версия 1.001 ещё превью, не судите строго. 

Файлы:
Tick_Chart.mq5  10 kb
 
Вот что показывает другой тиковый индикатор (на форуме нарыл) в той ситуации на робо

Хорошо видно, что первые 30 секунд падение было практически без изменения спреда. Т.е. внизу можно было делать BUY!

На Metaquotes-Demo, вообще, страшилище! А у некоторых брокеров сработала защита, которую, видимо, поставили после швейцарского франка. Там фидер выключился автоматом и клиенты мало потеряли на ТЕХНИЧЕСКОЙ шпиле. Так что смотреть именно этот случай в каждом брокере бестолку - будут совсем разные картины.

Индикатор хорошо бы выложить в кодобазу.

Причина обращения: