[存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. - 页 484

 
buxs:

不管是白天还是晚上都很好!有一个问题要问mt4的开发者和其他所有人。

MT客户端的最低系统要求是什么?

我想在我的旧硬件上运行它:Athlon 800mg,512mb,XP SP3。 当我运行MT 4或5时,它在2秒后就关闭了。问题显然不在绞盘或硬件上,这个硬件运行的是带调试器的Visual Studio(我自己是个程序员),系统中没有出现异常(因为我的调试器不起作用)。我猜客户本身不喜欢某些东西,结果就关闭了。那么问题来了,什么是原因,什么是mt不喜欢的,真正的CPU频率?))

MT4从构建226开始不喜欢调试器,MT5从一开始就不喜欢。
 
buxs:

不管是白天还是晚上都很好!有一个问题要问mt4的开发者和其他所有人。

MT客户端的最低系统要求是什么?

我想在我的旧硬件上运行它:Athlon 800mg,512mb,XP SP3。 当我运行MT 4或5时,它在2秒后就关闭了。问题显然不在绞盘或硬件上,这个硬件运行的是带调试器的Visual Studio(我自己是个程序员),系统中没有出现异常(因为我的调试器不起作用)。我猜客户本身不喜欢某些东西,结果就关闭了。那么问题来了,什么是原因,什么是mt不喜欢的,真正的CPU频率?))

符合运行MetaTrader 4最低要求的处理器
 


谢谢你的链接。现在明白了,MT使用的是SSE3,但那个小工具没有这个指令集,现在我明白了那些没有日志的崩溃:)

很遗憾,我也想让这个老家伙为自动交易工作......

 

你好。

我有一个关于iCustom函数的问题:我有一个普通的箭头指示器,包含两个缓冲区--一个向下箭头和一个向上箭头。我用这个指标做了一个专家顾问,但我没有开单,而是规定了警报 "向下箭头 "和"向上箭头"进行测试,结果这两条信息都出现在每一个刻度上,这发生在整个测试期间。两个缓冲区的数值都显示为Alert,并且在每个tick上两个缓冲区都有相同的数值--214783647。

我不知道哪里出了问题,需要在专家顾问中应用什么条件才能使我的交易在箭头到达时打开,而不是在每个刻度上打开。

P.S. 我尝试了另一个指标(在一个单独的窗口中绘制直方图),在一些刻度中给出了当前价格值与数字214783647 的混合,即它们在每个刻度中一个接一个,然后只有214783647

指标代码。

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 LimeGreen
#property indicator_color2 Red

double CrossUp[];
double CrossDown[];
extern int FasterEMA = 5;
extern int SlowerEMA = 8;
extern bool SoundON=true;
double alertTag;
 double control=2147483647;
 
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0, DRAW_ARROW, EMPTY,1);
   SetIndexArrow(0, 233);
   SetIndexBuffer(0, CrossUp);
   SetIndexStyle(1, DRAW_ARROW, EMPTY,1);
   SetIndexArrow(1, 234);
   SetIndexBuffer(1, CrossDown);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start() {
   int limit, i, counter;
   double fasterEMAnow, slowerEMAnow, fasterEMAprevious, slowerEMAprevious, fasterEMAafter, slowerEMAafter;
   double Range, AvgRange;
   int counted_bars=IndicatorCounted();
//---- check for possible errors
   if(counted_bars<0) return(-1);
//---- last counted bar will be recounted
   if(counted_bars>0) counted_bars--;

   limit=Bars-counted_bars;
   
   for(i = 0; i <= limit; i++) {
   
      counter=i;
      Range=0;
      AvgRange=0;
      for (counter=i ;counter<=i+9;counter++)
      {
         AvgRange=AvgRange+MathAbs(High[counter]-Low[counter]);
      }
      Range=AvgRange/10;
       
      fasterEMAnow = iMA(NULL, 0, FasterEMA, 0, MODE_EMA, PRICE_CLOSE, i);
      fasterEMAprevious = iMA(NULL, 0, FasterEMA, 0, MODE_EMA, PRICE_CLOSE, i+1);
      fasterEMAafter = iMA(NULL, 0, FasterEMA, 0, MODE_EMA, PRICE_CLOSE, i-1);

      slowerEMAnow = iMA(NULL, 0, SlowerEMA, 0, MODE_EMA, PRICE_CLOSE, i);
      slowerEMAprevious = iMA(NULL, 0, SlowerEMA, 0, MODE_EMA, PRICE_CLOSE, i+1);
      slowerEMAafter = iMA(NULL, 0, SlowerEMA, 0, MODE_EMA, PRICE_CLOSE, i-1);
      
      if ((fasterEMAnow > slowerEMAnow) && (fasterEMAprevious < slowerEMAprevious) && (fasterEMAafter > slowerEMAafter)) {
         CrossUp[i] = Low[i] - Range*0.5;
      }
      else if ((fasterEMAnow < slowerEMAnow) && (fasterEMAprevious > slowerEMAprevious) && (fasterEMAafter < slowerEMAafter)) {
          CrossDown[i] = High[i] + Range*0.5;
      }
        
  }
   return(0);
}
В советнике сделал следующее:
double ind1up0 = iCustom(NULL,0,"FXind-1",5,8,0,0);    //Стрелка вверх, на покупку на текущем баре
double ind1down0=iCustom(NULL,0,"FXind-1",5,8,1,0);    //Стрелка вниз, на продажу на текущем баре

if(ind1up0>0)Buy=true;
if(ind1down0>0)Sell=true;
 
if(ind1up0!=EMPTY)Buy=true;
if(ind1down0!=EMPTY)Sell=true;
 
midorum:
谢谢你!结果是很容易的。
 
midorum:

我们还应该增加一个对EMPTY_VALUE 的检查
 
midorum:

啊,不!无论是否有箭头,这两个缓冲区在每个刻度 上都被填满214783647

这到底是否正常?

 
Vinin:

我们还应该增加一个对EMPTY_VALUE的检查
对不起,是EMPTY_VALUE,不是EMPTY
 
Experto:

啊,不!无论是否有箭头,这两个缓冲区在每个刻度上都被填满214783647

这到底是否正常?

https://docs.mql4.com/ru/constants/special