Группа "Стол заказов MQL"

Рейтинг 2087



РЕКОМЕНДУЮ



Индикатор Bar Check-list

Добрый день!

Прошу написать индикатор под МТ4, отображающий в верхнем правом углу наглядно (в виде таблички) следующие характеристики бара:
1. Кол-во касаний цены Bid до High/Low бара (зачет только при абсолютном равенстве).
2. Кол-во сдвигов вверх/вниз High/Low ценой Bid (вверх для High и вниз для Low)
3. Время в мс и тиках нахождения цены в каждой из третей бара (суммарное, в первой половине ТФ и второй — чтобы видеть динамику).

Заранее благодарю!
  • 0
  • Просмотров: 3853
  • 16 ноября 2016, 23:01
  • vit-fx
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Создание советника
15 ноября 2016
19 ноября 2016

Комментарии (20)

+
0
Начну сейчас делать.
avatar

  34  AM2 Сообщений: 15880 - Андрей

  • 17 ноября 2016, 00:48
+
0
avatar

  34  AM2 Сообщений: 15880 - Андрей

  • 17 ноября 2016, 01:26
+
0
Андрей, добрый день!

Отлично работает, только последние 6 строк выводят суммарные значения, а нужны еще и в первой половине ТФ и во второй, чтобы можно было видеть изменение тенденции.
avatar

  4  vit-fx Автор Сообщений: 76

  • 17 ноября 2016, 11:13
+
0
Добавлю вечером.
avatar

  34  AM2 Сообщений: 15880 - Андрей

  • 17 ноября 2016, 12:18
+
0
avatar

  34  AM2 Сообщений: 15880 - Андрей

  • 17 ноября 2016, 18:38
+
0
значение Shift High меняется даже при нахождении цены в нижней части бара
avatar

  4  vit-fx Автор Сообщений: 76

  • 17 ноября 2016, 20:09
+
0
значение Shift High меняется даже при нахождении цены в нижней части бара

Этот момент корректно работает, смотрю дальше.
avatar

  34  AM2 Сообщений: 15880 - Андрей

  • 18 ноября 2016, 14:11
+
0
значения Time подвисают — цена Bid меняется, меняется тиковый объем, а значения Time стоят на месте.
Редактирован: 17 ноября 2016, 20:11
avatar

  4  vit-fx Автор Сообщений: 76

  • 17 ноября 2016, 20:11
+
0
Tick Count тоже начинают отсчет и замирают, хотя цена скачет
avatar

  4  vit-fx Автор Сообщений: 76

  • 17 ноября 2016, 20:13
+
0
Кстати, в расчетах Time ошибка.

Видимо я не корректно объяснил — требуется увидеть поведение цены внутри бара в первой и второй половине времени отдельно, например:

Имеем график цены с периодом m15, значит 2 интервала по 7,5 минут.
Часто получается так, что цена стоит минут 10, например, внизу бара, почти не двигаясь, а потом, в последние минуты до закрытия уходит в противоположную часть бара и начинает активно биться, часто еще и гнать High/Low на новые значения. Получаем что в первые 7,5 минут цена хоть и находилась в нижней части бара больше чем в верхней, но была там не активной, почти не двигалась, торги были вялые. А в последние минуты ушла наверх и начала активно торговаться. Если все это сопровождается еще и ростом кол-ва обновлений High, мы четко понимаем, что с большОй долей вероятности на следующем баре цена так же продолжит свое движение вверх.

Предлагаю все упростить и смотреть вертикально не 3, а 2 диапазона — выше и ниже центра бара.
avatar

  4  vit-fx Автор Сообщений: 76

  • 17 ноября 2016, 20:45
+
0
В половинах по времени сделал:




//+------------------------------------------------------------------+
//|                                                     TickInfo.mq4 |
//|                                              Copyright 2016, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict
#property indicator_chart_window

datetime t=0;
double LastHigh=0,LastLow=0,LastBid=0;
uint tTime=0,ttTime=0,stTime=0,sttTime=0;
int th=0,tl=0,sh=0,sl=0,TickCount=0,tTick=0,ttTick=0,tttTick=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   ObjectsDeleteAll();
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutLabel(string name,int x,int y,string text)
  {
   ObjectDelete(0,name);
//--- создадим текстовую метку
   ObjectCreate(0,name,OBJ_LABEL,0,0,0);
//--- установим координаты метки
   ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);
//--- установим угол графика, относительно которого будут определяться координаты точки
   ObjectSetInteger(0,name,OBJPROP_CORNER,1);
//--- установим текст
   ObjectSetString(0,name,OBJPROP_TEXT,text);
//--- установим шрифт текста
   ObjectSetString(0,name,OBJPROP_FONT,"Arial");
//--- установим размер шрифта
   ObjectSetInteger(0,name,OBJPROP_FONTSIZE,8);
//--- установим цвет
   ObjectSetInteger(0,name,OBJPROP_COLOR,Red);
//--- скроем (true) или отобразим (false) имя графического объекта в списке объектов
   ObjectSetInteger(0,name,OBJPROP_HIDDEN,false);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   if(LastBid!=Bid)
     {
      TickCount++;
      if(TimeCurrent()>time[0] && TimeCurrent()<time[0]+PeriodSeconds()/2)
        {
         tTick++;
         tTime+=(GetTickCount()-stTime);
        }
      if(TimeCurrent()>time[0]+PeriodSeconds()/2 && TimeCurrent()<time[0]+PeriodSeconds())
        {
         ttTick++;
         ttTime+=(GetTickCount()-sttTime);
        }
     }
   LastBid=Bid;

   if(t!=Time[0])
     {
      th=0;
      tl=0;
      sh=0;
      sl=0;
      t=Time[0];
      TickCount=0;
      tTick=0;
      ttTick=0;
      tTime=0;
      ttTime=0;
     }

   if(Bid>LastHigh) sh++;
   if(Bid<LastLow) sl++;

   if(Bid==high[0])
     {
      th++;
      LastHigh=high[0];
     }

   if(Bid==low[0])
     {
      tl++;
      LastLow=low[0];
     }

   PutLabel("L1",160,10,"Touch High: "+(string)th);
   PutLabel("L2",160,30,"Touch Low: "+(string)tl);

   PutLabel("L3",160,50,"Shift High: "+(string)sh);
   PutLabel("L4",160,70,"Shift Low: "+(string)sl);

   PutLabel("L5",160,90,"Tick Count: "+(string)TickCount);

   PutLabel("L6",160,110,"1/2 Tick Count: "+(string)tTick);
   PutLabel("L7",160,130,"2/2 Tick Count: "+(string)ttTick);

   PutLabel("L8",160,150,"1/2 Time: "+(string)tTime);
   PutLabel("L9",160,170,"2/2 Time: "+(string)ttTime);

//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+


Редактирован: 18 ноября 2016, 15:14
avatar

  34  AM2 Сообщений: 15880 - Андрей

  • 18 ноября 2016, 14:19
+
0
Спасибо, жду с нетерпением ;-)
avatar

  4  vit-fx Автор Сообщений: 76

  • 18 ноября 2016, 14:55
+
0
Скинул в базу исправленный вариант: www.opentraders.ru/downloads/1389/
avatar

  34  AM2 Сообщений: 15880 - Андрей

  • 19 ноября 2016, 19:28
+
0
Андрей, проверил работу.
Вы можете «развернуть» показания последних 4х строк, чтобы они не просто кол-во тиков и время показывали в 2-ух периодах времени, а с указанием где была цена в эти периоды — выше или ниже центра бара (так же по тикам и времени).
Редактирован: 21 ноября 2016, 11:43
avatar

  4  vit-fx Автор Сообщений: 76

  • 21 ноября 2016, 11:42
+
0
avatar

  4  vit-fx Автор Сообщений: 76

  • 21 ноября 2016, 12:00
+
0
Получится так?
avatar

  4  vit-fx Автор Сообщений: 76

  • 23 ноября 2016, 16:15
+
0
Андрей, добрый вечер!

Хотел напомнить про заказ.
avatar

  4  vit-fx Автор Сообщений: 76

  • 1 декабря 2016, 22:36
+
0
Минимальный объем работы делаю.
avatar

  34  AM2 Сообщений: 15880 - Андрей

  • 1 декабря 2016, 22:58
+
0
Согласен и не спорю.
Просто я ведь не прошу делать что-то сверх. Это п.3 ТЗ:
3. Время в мс и тиках нахождения цены в каждой из третей бара (суммарное, в первой половине ТФ и второй — чтобы видеть динамику).


Иначе вообще в нем смысла нет.
Задача этого индюка была в помощи трейдеру при ручной торговле, чтобы не смотреть весь день в моник, а подходить перед закрытием свечи и смотреть — изменился ли тренд или нет.

Очень часть видим такую вещь: цена 90% времени топчется и очень трудно толкает цену сторону этой части, зато в противоположной части бара хоть и была 10% времени, зато вела себя очень иннертно, легко двигала High/Low и в той же части и закрылась. Значит пробой первой части (если будет) — будет сильным, будет разворот, а если цена так и продолжит двигаться в сторону закрытия предыдущего бара — получаем продолжение тенденции.

Вот для этого и нужно.
avatar

  4  vit-fx Автор Сообщений: 76

  • 2 декабря 2016, 08:56
+
0
Можете попробовать разместить доработку новым топиком, но доберусь до заказа не раньше вторника.
avatar

  34  AM2 Сообщений: 15880 - Андрей

  • 2 декабря 2016, 11:53

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий
Начать торговлю с Альпари