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

Рейтинг 2146



РЕКОМЕНДУЮ



Доработка индикатора

Необходимо доработать индикатор для МТ-4 STC В индикаторе 2 уровня 25 и 75, при пересечении линией уровня 25 снизу вверх а 75 сверху вниз необходимо чтобы звучал алерт и выставлялся на график графический объект в виде точки или стрелки (не имеет значения) Вот и всё задание, индикатор ниже.
SchaffTrendCycle.mq4 (4 Kb)

Пример:

  • 0
  • Просмотров: 2169
  • 28 апреля 2015, 13:18
  • Optik
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

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

+
0
Хорошо, попробую добавить. Не раньше четверга.
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 28 апреля 2015, 13:48
+
0
Время терпит, главное что-бы работало как надо… Удачи...*hi* 
avatar

  2  Optik Автор Сообщений: 14

  • 28 апреля 2015, 19:07
+
0
Прогнала индикатор SchaffTrendCycle в тестере. Перерисовывает, сильно дергается.
Вот индикатор, который рисует стрелки на основе индикатора SchaffTrendCycle и показывает алерты:
//+------------------------------------------------------------------+
//|                                       Ind_bySchaffTrendCycle.mq4 |
//|                                                              Oxy |
//|                                   http://oxy.opentraders.ru/bio/ |
//+------------------------------------------------------------------+
#property copyright "Oxy"
#property link      "http://oxy.opentraders.ru/bio/"
#property version   "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 2
//---- plot Line
#property indicator_label1  "ARROW_UP"
#property indicator_color1  clrGreen

#property indicator_label2  "ARROW_DN"
#property indicator_color2  clrRed
//------- Внешние параметры -----------------------------------------+
extern string name1         = "__________SchaffTrendCycle__________"; // Параметры SchaffTrendCycle
extern int    MAShort       = 23;                                     // MAShort - SchaffTrendCycle
extern int    MALong        = 50;                                     // MALong - SchaffTrendCycle
extern int    Cycle         = 10;                                     // Cycle - SchaffTrendCycle
extern string name2         = "________параметры_индикатора________"; // Параметры индикатора
extern bool   showAlert     = true;                                   // Показывать алерт
extern int    arr_thickness = 1;                                      // Размер стрелок
extern int    otstup        = 50;                                     // Отступ для стрелки в пунктах
extern int    level1        = 25;                                     // level1 у SchaffTrendCycle
extern int    level2        = 75;                                     // level2 у SchaffTrendCycle
//------- Глобальные переменные -------------------------------------+
//--- indicator buffers
double arrow_Buffer_UP[], arrow_Buffer_DN[];
string nameInd = "SchaffTrendCycle";
string Symb    = Symbol();
datetime alertTime = -1;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   if(arr_thickness<1) arr_thickness=1;
   
   SetIndexBuffer(0, arrow_Buffer_UP);
   SetIndexStyle (0, DRAW_ARROW, STYLE_SOLID, arr_thickness);
   SetIndexArrow (0, 233);
   
   SetIndexBuffer(1, arrow_Buffer_DN);
   SetIndexStyle (1, DRAW_ARROW, STYLE_SOLID, arr_thickness);
   SetIndexArrow (1, 234);
   
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| 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(prev_calculated==0) {
     int _total = rates_total-(MALong + Cycle * 2)-2;
     for(int i=_total; i>0; i--) {
       draw_arrows (i);
     }
   }
   if(prev_calculated>0 && prev_calculated<rates_total) {
     RefreshArrows(0);
   }
   if (showAlert && alertTime!=Time[1]) {
     double _ind_0 = iCustom (Symb, 0, nameInd, MAShort, MALong, Cycle, 0, 0);
     double _ind_1 = iCustom (Symb, 0, nameInd, MAShort, MALong, Cycle, 0, 1);
     bool _alert = false;
     if (_ind_1<level1 && _ind_0>=level1) {
       alertTime=Time[1];
       Alert(Symb, ": индикатор SchaffTrendCycle level = ", level1);
       _alert = true;
     }
     if (_ind_1>level2 && _ind_0<=level2) {
       alertTime=Time[1];
       Alert(Symb, ": индикатор SchaffTrendCycle level = ", level2);
       _alert = true;
     }
     if(_alert) RefreshArrows(0);
   }
   return(rates_total);
  }
//+------------------------------------------------------------------+
void RefreshArrows (int j=0) {
  for(int i=5; i>=j; i--) {
    draw_arrows (i);
  }
}
//+------------------------------------------------------------------+
void draw_arrows (int i) {
  arrow_Buffer_UP [i] = EMPTY_VALUE;
  arrow_Buffer_DN [i] = EMPTY_VALUE;
  
  double _ind_0 = iCustom (Symb, 0, nameInd, MAShort, MALong, Cycle, 0, i);
  double _ind_1 = iCustom (Symb, 0, nameInd, MAShort, MALong, Cycle, 0, i+1);
  if (_ind_1<level1 && _ind_0>=level1) {
     arrow_Buffer_UP[i] = Low[i]-otstup*Point;  
  }
  if (_ind_1>level2 && _ind_0<=level2) {
    arrow_Buffer_DN[i] = High[i]+otstup*Point;
  }
}
//+------------------------------------------------------------------+

В MetaEditor создаете новый индикатор с названием Ind_bySchaffTrendCycle (или любым), в появившемся окне для кода заменяете все, что там есть, на код из этого комментария. И нажимаете кнопку «Компилировать».
На график кидаете этот индикатор с входными параметрами, как у индикатора SchaffTrendCycle.
Редактирован: 29 апреля 2015, 15:28
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 29 апреля 2015, 15:25
+
0
Большое спасибо, сделал всё как вы сказали, всё пучком и торчком*bravo* 
Вам респект и уважуха,*hi* 
Знания и интеллект единственная сила которую я уважаю!!!
*lalala* 
avatar

  2  Optik Автор Сообщений: 14

  • 29 апреля 2015, 20:28
+
0
если будут баги — пишите, подправим
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 29 апреля 2015, 20:29

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