Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1535

 
Artyom Trishkin:

А правильный вариант ну очень простой...

Так какой?

 
Andrey Sokolov:

Так какой?

Так простой :)

Если нет данных - выход до следующего тика.

 
Добрый день, возможно ли зарегестрировать сигнал в МТ4 с дэмо счета? Спасибо.
 
Artyom Trishkin:

Так простой :)

Если нет данных - выход до следующего тика.

Нет, писал что расчеты и отображения по ним нужны сразу. 

Если с имеющимся решением будут проблемы, то думаю, как вариант можно написать функцию расчета боллинжера, вроде не сложная. Но пока и то что есть работает.

 
Здравсвуйте! как у графического обьекта  OBJ_TREND узнать цену в будущем? к примеру имеем луч  вправо и нужно знать на каждом новом баре значение этого луча. спасибо!
 
MakarFX:

Такая структура должна быть

Зделал так, всё получилось. Спасибо

 
Andrey Sokolov:

Нет, писал что расчеты и отображения по ним нужны сразу. 

Если с имеющимся решением будут проблемы, то думаю, как вариант можно написать функцию расчета боллинжера, вроде не сложная. Но пока и то что есть работает.

Индикатор, если правильно сделан, всегда сначала просчитывает всю историю. Что у вас?

 
Artyom Trishkin:

Что у вас?

Не понял вопроса

 
Ребята, помогите сделать алерт к индикатору. Хочу потестить комбинацию разных индикаторов но нужна функция алерта. Нужно что бы алерт показывался только 1 раз по появлению стрелки. Если вам не тяжело то помогите написать такую функцию, а то у меня не получаеться, выскакивает алерт целую минуту или все время, аж мт4 зависает.
//+------------------------------------------------------------------+
//| 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[])
  {
//---

    int limit=rates_total-prev_calculated-2;
   if(limit<1) return(0);
   for(int i=limit;i>=0;i--)
     {
     
      // Снимем показания индикатора
     double in1b = iCustom(NULL,0,"in1",1,i); // индикатор 1 стрелка вверх
     double in1s = iCustom(NULL,0,"in1",0,i); // индикатор 1 стрелка вниз
      
     
     
     double in2b = iCustom(NULL,0,"in2",0,i); // индикатор 2 стрелка вверх
     double in2s = iCustom(NULL,0,"in2",1,i); // индикатор 2 стрелка вниз
    
    Comment("in1v = "+DoubleToString(in1b)+"\n" +"in1n = "+DoubleToString(in1s)+"\n"
    +"in2v = "+DoubleToString(in2b)+"\n" +"in2n = "+DoubleToString(in2s));
     
    if(in1b > 2147483647 && in2b > 2147483647) // индикатор стрелка вверх
           {
           Sell[i]=low[i];
                      
          
          // Alert(Symbol()+"BUY";
              
           
           
           
         
           }
   
     if(in1s > 2147483647 && in2s > 2147483647) // индикатор стрелка вниз
           {
            Buy[i]=high[i];
            
              // Alert(Symbol()+"SELL М"+Period());
              
              
           
           }
         
   
     }
   
     
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
 
jarikn:
Ребята, помогите сделать алерт к индикатору. Хочу потестить комбинацию разных индикаторов но нужна функция алерта. Нужно что бы алерт показывался только 1 раз по появлению стрелки. Если вам не тяжело то помогите написать такую функцию, а то у меня не получаеться, выскакивает алерт целую минуту или все время, аж мт4 зависает.

Попробуй так, вроде должно работать

//+------------------------------------------------------------------+
//| 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[])
  {
//---
   datetime show_alert=time[1];
   int limit=rates_total-prev_calculated-2;
   if(limit<1) return(0);
   for(int i=limit;i>=0;i--)
     {
     
      // Снимем показания индикатора
      double in1b = iCustom(NULL,0,"in1",1,i); // индикатор 1 стрелка вверх
      double in1s = iCustom(NULL,0,"in1",0,i); // индикатор 1 стрелка вниз
      
      double in2b = iCustom(NULL,0,"in2",0,i); // индикатор 2 стрелка вверх
      double in2s = iCustom(NULL,0,"in2",1,i); // индикатор 2 стрелка вниз
    
      Comment("in1v = "+DoubleToString(in1b)+"\n" +"in1n = "+DoubleToString(in1s)+"\n"
      +"in2v = "+DoubleToString(in2b)+"\n" +"in2n = "+DoubleToString(in2s));
     
      if(in1b > 2147483647 && in2b > 2147483647) // индикатор стрелка вверх
        {
         Sell[i]=low[i];
         if(show_alert!=time[i])
           {
            Alert(Symbol()+"BUY М"+Period()); show_alert=time[i];
           }
        }
   
      if(in1s > 2147483647 && in2s > 2147483647) // индикатор стрелка вниз
        {
         Buy[i]=high[i];
         if(show_alert!=time[i])
           {
            Alert(Symbol()+"SELL М"+Period()); show_alert=time[i];
           }
        }
     }
     
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
Причина обращения: