vikas
Алексей

 
Уровень 9

  Торгую в компаниях:


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

Рейтинг 2146



РЕКОМЕНДУЮ



Индикатор спреда для М1

Здравствуйте Андрей. Просьба сделать индикатор для минутного
графика, который показывал бы и фиксировал максимальное значе-
ние спреда по прошествии 35 сек. от начала минутного бара, длина
которого превысила 15 пунктов. Показывать значение вверху над
бычьей свечкой и внизу под медвежьей. Значение должно оставаться
на время указанное в меню.(п.2)
В меню:
1. время и длина бара после которых начинается определение макс.
спреда
2. колличество баров на истории (из расчёта суток)
  • 0
  • Просмотров: 3207
  • 18 июля 2016, 20:17
  • vikas
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

Брокер для ваших роботов, 15 лет на рынке

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

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

  35  AM2 Сообщений: 16285 - Андрей

  • 18 июля 2016, 20:28
+
0
Посмотрите как работает:




//+------------------------------------------------------------------+
//|                                                    BarSpread.mq4 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_chart_window

input int Second=35;
input int Points=15;

double MaxSpread=0;
datetime t=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Put Text Function                                                |
//+------------------------------------------------------------------+
void Text(string name,string text,double price,datetime time,color clr)
  {
   ObjectDelete(0,name);
//--- create a "Text" object 
   ObjectCreate(0,name,OBJ_TEXT,0,time,price);
//--- set the text
   ObjectSetString(0,name,OBJPROP_TEXT,text);
//--- set the font of the text
   ObjectSetString(0,name,OBJPROP_FONT,"Arial");
//--- set the font size
   ObjectSetInteger(0,name,OBJPROP_FONTSIZE,9);
//--- set the method binding
   ObjectSetInteger(0,name,OBJPROP_ANCHOR,ANCHOR_CENTER);
//--- set the color
   ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
  }
//+------------------------------------------------------------------+
//| 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[])
  {
//---
   double ask=MarketInfo(NULL,MODE_ASK);
   double bid=MarketInfo(NULL,MODE_BID);
   double point=MarketInfo(NULL,MODE_POINT);
   double spr=MarketInfo(NULL,MODE_SPREAD);

   int BarTime=(int)(TimeCurrent()-time[0]);
   double points=NormalizeDouble(MathAbs(open[0]-close[0])/Point,0);

   if(BarTime>=Second && points>Points)
     {
      if(spr>MaxSpread) MaxSpread=spr;
      if(t!=time[0]) MaxSpread=0;
      t=time[0];

      if((open[0]-close[0])>0) Text("Spread"+(string)time[0],(string)MaxSpread,low[0],time[0],Red);
      if((open[0]-close[0])<0) Text("Spread"+(string)time[0],(string)MaxSpread,high[0],time[0],Blue);
     }
     
   Comment("\n Bar Points: ",points,
           "\n Bar Time: ",BarTime,
           "\n Bar Spread: ",spr,
           "\n Max Spread: ",MaxSpread);

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

avatar

  35  AM2 Сообщений: 16285 - Андрей

  • 18 июля 2016, 21:39
+
0
Да, всё отлично работает. Оперативно. Спасибо большое.
avatar

  9  vikas Автор Сообщений: 113 - Алексей

  • 18 июля 2016, 21:58
+
0
Добавил удаление лишнего текста: www.opentraders.ru/downloads/1258/
Удалит все что больше:
input int BCount=5; // количество баров для удаления текста 


avatar

  35  AM2 Сообщений: 16285 - Андрей

  • 19 июля 2016, 04:25
+
0
Спасибо.
avatar

  9  vikas Автор Сообщений: 113 - Алексей

  • 19 июля 2016, 12:34

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