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

Рейтинг 2081



РЕКОМЕНДУЮ



Облегчить индикатор Givonly_SnR_SnD_r2

Здравствуйте Oxy. Есть вот такой индюк Givonly_SnR_SnD_r2, при накладывание на 3-4 графика вешает терминал, после перезагрузки долго думает, пока счет откроет. При компиляции ошибок не выдает. Можно что нибудь сделать, что бы не тормозил? Givonly_SnR_SnD_r2.mq4 (8 Kb)
  • 0
  • Просмотров: 7549
  • 10 марта 2015, 08:58
  • Oleg83
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

+
0
Посмотрела индикатор. Он обрабатывает значения каждый тик, тем самым сильно загружая терминал. Попробую изменить его, скорее всего в среду или четверг.
avatar

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

  • 10 марта 2015, 17:48
+
0
Спасибо, буду ждать.
avatar

  2  Oleg83 Автор Сообщений: 26

  • 10 марта 2015, 19:43
+
0
Код индикатора. ЧАСТЬ 1
//+------------------------------------------------------------------+
//|                                              Givonly_SnR_SnD.mq4 |
//|                                                          Givonly |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Givonly"
#property link      "http://www.kgforexworld.com & http://oxy.opentraders.ru/bio/"
#property indicator_chart_window

extern bool SHOW_H1=true;
extern bool SHOW_H4=true;
extern bool SHOW_D1=true;
extern bool SHOW_W1=true;
extern int Supply_Demand_Area=10;
extern color SupportColor = DodgerBlue;
extern color ResistanceColor = Red;
extern color P60R=LightGray;
extern color P60S=LightGray;
extern color P240R=LightGray;
extern color P240S=LightGray;
extern color P1440R=LightGray;
extern color P1440S=LightGray;
extern color P10080R=LightGray;
extern color P10080S=LightGray;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//----
   if(ObjectFind("H1 RESISTANCE")==0) ObjectDelete("H1 RESISTANCE");
   if(ObjectFind("H4 RESISTANCE")==0) ObjectDelete("H4 RESISTANCE");
   if(ObjectFind("D1 RESISTANCE")==0) ObjectDelete("D1 RESISTANCE");
   if(ObjectFind("W1 RESISTANCE")==0) ObjectDelete("W1 RESISTANCE");
   if(ObjectFind("H1 SUPPORT")==0) ObjectDelete("H1 SUPPORT");
   if(ObjectFind("H4 SUPPORT")==0) ObjectDelete("H4 SUPPORT");
   if(ObjectFind("D1 SUPPORT")==0) ObjectDelete("D1 SUPPORT");
   if(ObjectFind("W1 SUPPORT")==0) ObjectDelete("W1 SUPPORT");
   if(ObjectFind("GIVONLY H1 RESISTANCE LINE")==0) ObjectDelete("GIVONLY H1 RESISTANCE LINE");
   if(ObjectFind("GIVONLY H4 RESISTANCE LINE")==0) ObjectDelete("GIVONLY H4 RESISTANCE LINE");
   if(ObjectFind("GIVONLY D1 RESISTANCE LINE")==0) ObjectDelete("GIVONLY D1 RESISTANCE LINE");
   if(ObjectFind("GIVONLY W1 RESISTANCE LINE")==0) ObjectDelete("GIVONLY W1 RESISTANCE LINE");
   if(ObjectFind("GIVONLY H1 SUPPORT LINE")==0) ObjectDelete("GIVONLY H1 SUPPORT LINE");
   if(ObjectFind("GIVONLY H4 SUPPORT LINE")==0) ObjectDelete("GIVONLY H4 SUPPORT LINE");
   if(ObjectFind("GIVONLY D1 SUPPORT LINE")==0) ObjectDelete("GIVONLY D1 SUPPORT LINE");
   if(ObjectFind("GIVONLY W1 SUPPORT LINE")==0) ObjectDelete("GIVONLY W1 SUPPORT LINE");
   if(ObjectFind("H1 SUPPLY AREA")==0) ObjectDelete("H1 SUPPLY AREA");
   if(ObjectFind("H4 SUPPLY AREA")==0) ObjectDelete("H4 SUPPLY AREA");
   if(ObjectFind("D1 SUPPLY AREA")==0) ObjectDelete("D1 SUPPLY AREA");
   if(ObjectFind("W1 SUPPLY AREA")==0) ObjectDelete("W1 SUPPLY AREA");
   if(ObjectFind("H1 DEMAND AREA")==0) ObjectDelete("H1 DEMAND AREA");
   if(ObjectFind("H4 DEMAND AREA")==0) ObjectDelete("H4 DEMAND AREA");
   if(ObjectFind("D1 DEMAND AREA")==0) ObjectDelete("D1 DEMAND AREA");
   if(ObjectFind("W1 DEMAND AREA")==0) ObjectDelete("W1 DEMAND AREA");
//----
  }
//+------------------------------------------------------------------+
//| 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 || (prev_calculated>0 && prev_calculated<rates_total)) {
      if(SHOW_H1) GAMBAR(60);
      if(SHOW_H4) GAMBAR(240);
      if(SHOW_D1) GAMBAR(1440);
      if(SHOW_W1) GAMBAR(10080);
      if(Supply_Demand_Area>0) {
        if(SHOW_H1)    SND(60);
        if(SHOW_H4)    SND(240);
        if(SHOW_D1)    SND(1440);
        if(SHOW_W1)    SND(10080);
      }
    }
    return(rates_total);
  }
//+------------------------------------------------------------------+
   void  SND(int period)
      {
         string name;
         name = StringConcatenate(TF(period)," SUPPLY AREA");
         double atas, bawah;
         atas = SNR(period,MODE_HIGH);
         bawah= atas-Supply_Demand_Area*Point;
         bool ada=false;
         if(   (SNR(period,MODE_HIGH)==SNR(60,MODE_HIGH) && period>60 && SHOW_H1)
            || (SNR(period,MODE_HIGH)==SNR(240,MODE_HIGH) && period>240 && SHOW_H4)
            || (SNR(period,MODE_HIGH)==SNR(1440,MODE_HIGH) && period>1440 && SHOW_D1)
            || (SNR(period,MODE_HIGH)==SNR(10080,MODE_HIGH) && period>10080 && SHOW_W1)
           )   ada=true;
         if(!ada) {
            ObjectCreate(name,OBJ_RECTANGLE,0,0,0);
            ObjectSet(name,OBJPROP_TIME1,Time[0]);
            ObjectSet(name,OBJPROP_TIME2,Time[Bars-1]);
            ObjectSet(name,OBJPROP_COLOR,ResistanceColor);
            ObjectSet(name,OBJPROP_PRICE1,atas);
            ObjectSet(name,OBJPROP_PRICE2,bawah);
            ObjectMove(name,0,Time[0],atas);
            ObjectMove(name,1,Time[Bars-1],bawah);
            }
         name = StringConcatenate(TF(period)," DEMAND AREA");
         bawah= SNR(period,MODE_LOW);
         atas = bawah+Supply_Demand_Area*Point;
         ada=false;
         if(   (SNR(period,MODE_LOW)==SNR(60,MODE_LOW) && period>60 && SHOW_H1)
            || (SNR(period,MODE_LOW)==SNR(240,MODE_LOW) && period>240 && SHOW_H4)
            || (SNR(period,MODE_LOW)==SNR(1440,MODE_LOW) && period>1440 && SHOW_D1)
            || (SNR(period,MODE_LOW)==SNR(10080,MODE_LOW) && period>10080 && SHOW_W1)
           )   ada=true;
         if(!ada) {
            ObjectCreate(name,OBJ_RECTANGLE,0,0,0);
            ObjectSet(name,OBJPROP_TIME1,Time[0]);
            ObjectSet(name,OBJPROP_TIME2,Time[Bars-1]);
            ObjectSet(name,OBJPROP_COLOR, SupportColor);
            ObjectSet(name,OBJPROP_PRICE1,bawah);
            ObjectSet(name,OBJPROP_PRICE2,atas);
            ObjectMove(name,0,Time[0],bawah);
            ObjectMove(name,1,Time[Bars-1],atas);
            }
      }
avatar

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

  • 11 марта 2015, 17:28
+
0
ЧАСТЬ 2
//+------------------------------------------------------------------+
   void  GAMBAR(int period)
   {
      double ResistanceValue=SNR(period,MODE_HIGH);
      double SupportValue=SNR(period,MODE_LOW);

      color warna1, warna2;
      if(period==60)    {warna1=P60R;   warna2=P60S;}
      if(period==240)    {warna1=P240R;   warna2=P240S;}
      if(period==1440)    {warna1=P1440R;   warna2=P1440S;}
      if(period==10080)    {warna1=P10080R;   warna2=P10080S;}

      string name;
      name = StringConcatenate("GIVONLY ",TF(period)," RESISTANCE LINE");
      GARIS(name, ResistanceValue, warna1);
      name = StringConcatenate(TF(period)," RESISTANCE");
      TULIS(name, ResistanceValue, warna1);
   
      name = StringConcatenate("GIVONLY ",TF(period)," SUPPORT LINE");
      GARIS(name, SupportValue, warna2);
      name = StringConcatenate(TF(period)," SUPPORT");
      TULIS(name, SupportValue, warna2);
   }
//+------------------------------------------------------------------+
   double SNR(int period, int mode)
   {
      bool FindLow=false, FindHigh=false;
      double snr, PassedLow=999, PassedHigh=0, HIGHEST, LOWEST;
      int i=1;
      while(!FindLow || !FindHigh)
         {
            if(HIGH(period,i)>PassedHigh) PassedHigh = HIGH(period,i);
            if(LOW(period,i)<PassedLow)   PassedLow = LOW(period,i);
            PassedHigh = MathMax(PassedHigh, HIGH(period,0));
            PassedLow  = MathMin(PassedLow, LOW(period,0));

            if(!FindHigh && HIGH(period,i)>=HIGH(period,i-1) && HIGH(period,i)>=HIGH(period,i+1) && HIGH(period,i)>=PassedHigh)
               {
                  HIGHEST = HIGH(period,i);
                  FindHigh=true;
               }   
            if(!FindLow && LOW(period,i)<=LOW(period,i-1) && LOW(period,i)<=LOW(period,i+1) && LOW(period,i)<=PassedLow)
               {
                  LOWEST = LOW(period,i);
                  FindLow=true;
               }   
            i++;
         }
      if(mode==MODE_HIGH)  snr=HIGHEST;
      if(mode==MODE_LOW)   snr=LOWEST;
      return(snr);
   }
//+------------------------------------------------------------------+
   string TF(int period)
      {
         string tf;
         if(period==60)      tf="H1";
         if(period==240)     tf="H4";
         if(period==1440)    tf="D1";
         if(period==10080)   tf="W1";
         return(tf);
      }
//+------------------------------------------------------------------+
   double HIGH(int period, int shift)
      {
         double hi=iHigh(Symbol(), period, shift);
         return(hi);
      }   
//+------------------------------------------------------------------+
   double LOW(int period, int shift)
      {
         double lo=iLow(Symbol(), period, shift);
         return(lo);
      }   
//+------------------------------------------------------------------+
   void TULIS(string NamaTeks, double value, color warna)
      {
         string ValueTeks = StringConcatenate(NamaTeks," ",DoubleToStr(value,Digits));
         double Value=value;
         if(value<Bid)  Value=value+Supply_Demand_Area*Point;
         ObjectCreate(NamaTeks, OBJ_TEXT, 0, Time[35], Value);
         ObjectSetText(NamaTeks, StringSubstr(NamaTeks,0,4), 10, "Tahoma", warna);
         ObjectMove(NamaTeks, 0,  Time[35], Value);
      }
//+------------------------------------------------------------------+
   void GARIS(string name, double value, color warna)
      {
         ObjectCreate(name, OBJ_HLINE, 0,  Time[0], value);
         ObjectSet(name, OBJPROP_STYLE, STYLE_DOT);
         ObjectSet(name, OBJPROP_COLOR, warna);
         ObjectMove(name, 0,  Time[0], value);
      }

Надо код в индикаторе заменить полностью на этот код из 2 частей по порядку и скомпилировать файл.
Индикатор будет считать значения не на каждом тике, а на каждой новой свече.
avatar

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

  • 11 марта 2015, 17:29
+
0
Спасибо. Вставил код, не знаю правильно или нет вроде работает. Уж извините за наглость, можете еще и алерт добавить? С показаниями инструмента и включением отключение.
avatar

  2  Oleg83 Автор Сообщений: 26

  • 11 марта 2015, 18:47
+
0
Алерт чего именно? Я особо в коде не копалась, просто перенесла его в другое место. Вы видели, что там какие-то линии иногда друг на друге так, что текст плохо читается?
avatar

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

  • 12 марта 2015, 00:04
+
0
Да видел, нумерация уровней друга на друга накладываеться. Не очень конечно удобно. Иногда какие то уровни, вроде должны быть, он их не показывает. Алерт включеных уровней, тех которые на графике лежат. Или если можно, каждый уровень в отдельности.
Редактирован: 12 марта 2015, 01:53
avatar

  2  Oleg83 Автор Сообщений: 26

  • 12 марта 2015, 01:43
+
0
звук нужен? или только алерт?
avatar

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

  • 12 марта 2015, 03:58
+
0
Да, звук нужен.И алерт.
Редактирован: 12 марта 2015, 05:39
avatar

  2  Oleg83 Автор Сообщений: 26

  • 12 марта 2015, 05:37
+
0
С этим индикатором у меня не получается сделать алерт, чтобы работал корректно. *???* 
Редактирован: 13 марта 2015, 15:19
avatar

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

  • 13 марта 2015, 15:19
+
0
Oxy Вы наверное про меня забыли?:) 
avatar

  2  Oleg83 Автор Сообщений: 26

  • 13 марта 2015, 15:11
+
0
в этой группе про всех помню
avatar

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

  • 13 марта 2015, 15:19
+
0
avatar

  1  flider Сообщений: 1

  • 24 февраля 2016, 16:21
+
0
все нормально у тебя?
avatar

  45  Bishop Сообщений: 5719 - АЛЬФАХАМЕЦ-Машковод

  • 24 февраля 2016, 20:07
+
0
Вставил код, увы, не работает, Просьба, Givonly_SnR_SnD_r2 MQL(Oxy)(передаленный, работающий на свечи)опубликовать или отправить ко мне на почту...xazar17@gmail.com
С уважением ...xazar17
avatar

  1  xazar17 Сообщений: 5 - xazar17

  • 21 мая 2016, 16:16
+
0
Делайте внимательнее и всё получится:
Надо код в индикаторе заменить полностью на этот код из 2 частей по порядку и скомпилировать файл.
avatar

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

  • 21 мая 2016, 16:38
+
0
… для Оху… для Оху… Однажды Ширваншах отправил одного соотечестенного в Индию на учебу доктора.Проходить несколько лет молодой парень возвращается в родину.Шаху об этом докладывает, и естеественно Шах приглашает молодого доктора к себе.При беседе выясняется что, этот парень сталь доктором, но докторам по слонам.Шах удивленно смотрел, смотрел и приказывает.Что делать у нас нет слона, но из-за этого мы, такого грамотного доктора по слонам голодным не оставим.живи в дворце и получай докторскую зарплату.Молодой гений начинает проживат и живат во дворце.Одинь день Индейский король делает подарок Шаху, подарок слон.При осмотре выясняется что слон болень Шах радостно приказывает, достанте доктора., у нас же есть доктор по слонам… Доктора доставляет… Доктор(наш знакомый молодой гений) задумчиво смотрит слона, поварачиваетчя к Шаху… Ваше здоровье, вы можете подсказать мне, где тут хвость, а где голова…

Дорогая и Милая, можете подсказать, тут где первый часть, а где второй часть, куда копироват и куда вставит… и тп.(если я зналь, не просиль же готовый MQL4)
avatar

  1  xazar17 Сообщений: 5 - xazar17

  • 21 мая 2016, 21:56
+
0
Oxy, кажется получился, Спасибо… Оху
С уважением…
avatar

  1  xazar17 Сообщений: 5 - xazar17

  • 23 мая 2016, 08:35
+
0
Кто может код индикатора givonly_snr_snd_r2, переделать чтобы его в советник вставить?
avatar

  0  yrik735 Сообщений: 6

  • 15 сентября 2017, 16:40
+
0
Альтернатива есть этому коду? Для советника
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[])
avatar

  0  yrik735 Сообщений: 6

  • 24 сентября 2017, 20:04

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