错误、漏洞、问题 - 页 1290

 
Tapochun:
谢谢你,我理解OnTrade() 和OnTradeTransaction()无论如何不能使用?
你的理解是正确的。你不能。
 

1.为什么当我在一个终端上改变语言时,在重新启动它们之后,其他所有的终端都会改变?

详细地说:我有10个MT4/765终端在运行,将其中一个终端的语言从俄语改为英语,并重新启动。重新启动其他终端后,它们的语言也发生了变化!

2.为什么当我改变档案--指标、专家顾问、图表的设置 时,不会自动记住它?

具体来说:昨天我配置了一个配置文件,在上面进行了交易,今天它被拉黑了,当我重新启动终端时,没有任何变化被保存,只有我在变化前的变化被下载。
最好是在一定时间后自动记住配置文件,例如每10分钟或每1小时。

 
Novikov:

2.为什么在对配置文件进行修改时,不能自动记住它--指标设置、专家顾问、图表?

当你正常关闭应用程序时,配置文件将被保存。
如果你需要保存它,关闭终端并重新打开它,那么你就会很高兴 :)
 
fyords:
当你正常关闭应用程序时,配置文件将被保存。
如果你需要保存它,关闭终端并重新打开它,那么你就会很高兴 :)

"没有你我该怎么办":)

3.报价到哪里去了?

当我下载m1报价建立RENCO图表时,在终端错误关闭后(停电),报价必须重新加载!这是不可能的。

 
为什么当你用安卓手机访问另一个人的资料时,没有写信息的按钮?在信息中,你必须输入新联系人的用户名 ....这是很不方便的...
 
Novikov:

"没有你我该怎么办":)

3.报价到哪里去了?

我下载m1报价来建立RENCO图表,但在终端错误地终止后(停电),报价必须重新加载!这就是为什么我的报价不正确。

你会被告知,所有的改变都被保存了,并有正确的关机....。包括下载的报价
 

我理解结构成员 不能被用作指标缓冲区,例如像这样。

struct Buffers
{
    double buffer [];
};

但是,如果你需要几十个缓冲区,又不能像这样工作,该怎么办呢?

struct Buffers
{
    double buffer [];
};

Buffers IndBuff;

void Func()
{
  IndBuff[0].buffer[0]=3.1415926;
}
 
paladin800:
是的,我也偶然发现了这个功能。我不知道如何使外部参数中的一个变量为凌晨4点,另一个为下午5点,然后将TimeGMT()的结果与它们进行比较。

有一段时间没看了。

凌晨4点是4点
5点是17:00

 
joo:

我的理解是,结构成员 不能被用作指标缓冲区,比如说

可以
 
joo:

我理解结构成员 不能被用作指标缓冲区,例如像这样。

但是,如果你需要几十个缓冲区,而它并不像这样工作,该怎么办呢?

我发现这样的例子来自不知名的作者。)

//+------------------------------------------------------------------+
//|                                                  EMA_Rainbow.mq5 |
//|                                       Copyright 2012, MetaDriver |
//|                                            MetaDriver@rambler.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaDriver"
#property link      "MetaDriver@rambler.ru"
#property version   "1.00"
//---
#define  CountLine  50
//---
#property indicator_chart_window
#property indicator_buffers CountLine
#property indicator_plots   CountLine

//--- Внешние параметры
input int   FastPeriod   =5;
input int   PeriodStep   =5;
input color FastColor    =clrAqua;
input color MiddleColor  =clrDodgerBlue;
input color SlowColor    =clrBlue;
input color LFastColor   =clrYellow;
input color LMiddleColor =clrOrange;
input color LSlowColor   =clrOrangeRed;
//--- 
struct SBuffer
  {
   double            B[];
  };
//--- indicator buffers
SBuffer       EmaBuffer[CountLine];
//---
color Colors[CountLine];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   InitColors();
//---
   for(int i=0; i<CountLine; i++)
      InitBuffers(i);
//---
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int    rates_total,
                const int    prev_calculated,
                const int    begin,
                const double &price[])
  {
//---
   int limit=rates_total-prev_calculated;
//---
   if(limit==1)
      limit++;
//---
   if(prev_calculated==0)
     {
      limit-=begin+1;
      for(int i=0; i<CountLine; i++)
         EmaBuffer[i].B[limit]=price[limit];
     }
//---
   if(limit!=0)
     {
      for(int i=0; i<CountLine; i++)
        {
         double p=2./(FastPeriod+PeriodStep*(CountLine-i)+1);
         //---
         for(int j=limit-1; j>=0; j--)
            EmaBuffer[i].B[j]=price[j]*p+EmaBuffer[i].B[j+1]*(1.-p);
        }
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
//| Инициализация цветных буферов                                    |
//+------------------------------------------------------------------+
void InitColors()
  {
   int Half=CountLine/2;
//---
   for(int i=0; i<Half; i++)
     {
      if(i%4==3)
         Colors[i]=MixColor(LSlowColor,LMiddleColor,i*1.0/Half);
      else
         Colors[i]=MixColor(SlowColor,MiddleColor,i*1.0/Half);
     }
//---
   for(int i=Half; i<CountLine; i++)
     {
      if(i%4==3)
         Colors[i]=MixColor(LMiddleColor,LFastColor,(i-Half)*1.0/Half);
      else
         Colors[i]=MixColor(MiddleColor,FastColor,(i-Half)*1.0/Half);
     }
  }
//+------------------------------------------------------------------+
//| Определение цвета                                                |
//+------------------------------------------------------------------+
color MixColor(color A,color B,double mix)
  {
   int r = (int)MathRound((B     & 0xFF) * mix + (A     & 0xFF) * (1. - mix));
   int g = (int)MathRound((B>>8  & 0xFF) * mix + (A>>8  & 0xFF) * (1. - mix));
   int b = (int)MathRound((B>>16 & 0xFF) * mix + (A>>16 & 0xFF) * (1. - mix));
   return color(r|g<<8|b<<16);
  }
//+------------------------------------------------------------------+
//| Инициализация индикаторных буферов                               |
//+------------------------------------------------------------------+
void InitBuffers(int index)
  {
   SetIndexBuffer(index,EmaBuffer[index].B,INDICATOR_DATA);
   PlotIndexSetInteger(index,PLOT_DRAW_TYPE,DRAW_LINE);
   PlotIndexSetInteger(index,PLOT_LINE_COLOR,Colors[index]);
   PlotIndexSetDouble(index,PLOT_EMPTY_VALUE,EMPTY_VALUE);
//---
   if(index%8==7) PlotIndexSetInteger(index,PLOT_LINE_WIDTH,1);
  }
//+------------------------------------------------------------------+