新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1535

 
Artyom Trishkin:

而正确的选择是,嗯,非常简单......。

那么它是什么呢?

 
Andrey Sokolov:

那么是哪一个呢?

如此简单 :)

如果没有数据,则退出,直到下一个tick。

 
下午好,是否可以用模拟账户在MT4中注册一个信号?谢谢你。
 
Artyom Trishkin:

如此简单 :)

如果没有数据,则退出,直到下一个tick。

不,我写的是,计算和对它们的显示是需要同时进行的。

如果现有的解决方案会有问题,我想,作为一个替代方案,可以写一个布林计算的函数,这似乎并不困难。但就目前而言,我们拥有的东西是有效的。

 
你好!我怎样才能知道图形对象OBJ_TREND 的未来价格? 例如,我们有一条向右的射线,需要知道在每个新的条形图的价值。 谢谢你
 
MakarFX:

这个结构应该是

我做了,很成功。谢谢你

 
Andrey Sokolov:

不,我写的是立即需要计算和显示。

如果现有的解决方案会有问题,那么我想,作为一种选择,你可以写一个函数来计算布林,这似乎并不复杂。但目前,现有的那一个还能用。

该指标如果实施得当,总是先计算整个历史。你有什么?

 
Artyom Trishkin:

你有什么?

我不明白这个问题。

 
伙计们,帮我为一个指标做一个警报。我想测试不同指标的组合,但我需要一个警报功能。我需要在箭头出现时只显示一次警报。如果你不难,请帮我写这个功能,我做不到,提醒弹出整整一分钟或所有时间,甚至mt4挂起。
//+------------------------------------------------------------------+
//| 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:
伙计们,帮我为一个指标制作一个警报。我想测试不同指标的组合,但我需要一个警报功能。我需要在箭头出现时只显示一次警报。如果你不难,请帮我写这个功能,我做不到,提醒弹出整整一分钟或所有的时间,甚至mt4冻结。

试试这个,似乎很有效

//+------------------------------------------------------------------+
//| 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);
  }
//+------------------------------------------------------------------+