[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 789

 
Hedin:

亲爱的程序员们。
请告知为什么当条件为真时,运算符不被执行,或者说它们被执行,但以随机的模式(例如,重复)。日 志中没有任何错误。


请纠正你的代码。

if ( MathAbs( ord_sl - (ord_open+First_sell_limit_SL*Point) ) < Point / 2.0 && ...

而且,永远不要对double 类型的变量进行平等比较。

 
PapaYozh:


纠正你的代码。

而且,永远不要对double 类型的变量进行平等比较。


为什么不能对double 类型的变量进行平等比较?
 
Hedin:

为什么像double 这样的变量不能进行平等比较?
搜索也不工作了?
 
Hedin:

为什么double 类型的变量不能进行平等比较?
请看这里
 
Necron:
在deinit中,写入一个全局变量,在init中,读取该变量的值,有什么问题?

我的理解是,全局变量是一个在所有函数之外声明的变量。全局变量 在特殊函数启动前被初始化一次。

也就是说,全局变量是在程序开始时在启动函数之前声明的,包括我想在下次启动时传递给程序的变量。然后,根据你的建议,在deinit中我固定这个变量的值。我理解,在程序开始时,在init函数执行之前,所有在程序开始时描述的全局变量,包括我感兴趣的变量,都将被重新初始化。而当涉及到函数init时,我之前注册的变量就会丢失。还是我错了?

 
不,他指的是GlobalVariable ,它被存储在文件中。
 
ikatsko:

我的理解是,全局变量是一个在所有函数之外声明的变量。全局变量在特殊函数启动前被初始化一次。

也就是说,全局变量是在程序开始时在启动函数之前声明的,包括我想在下次启动时传递给程序的变量。然后,根据你的建议,在deinit中我固定这个变量的值。我理解,在程序开始时,在init函数执行之前,所有在程序开始时描述的全局变量,包括我感兴趣的变量,都将被重新初始化。而当涉及到函数init时,我之前注册的变量就会丢失。还是我错了?

有两种全局变量: 你的程序的全局变量,你写的,和你的终端的全局变量,
,如果不访问的话,会和你的程序分开存储两星期,如果我没记错的话。
例如,它们被用来在同一终端上同时工作的不同EA之间传输数据,等等。
你需要的是终端的全局变量。
 
Roger:
不,他指的是GlobalVariable ,它被存储在文件中。
是的,我是指终端的全局变量。在私信中已经有这个问题,我已经回答了。
 
Necron:
是的,我是指全局终端变量。在私人信息中已经有这个问题,我已经回答了。
已经想明白了。它发生了...没有得到它的权利...抱歉 :)
 
вот, собственно код моментума стандартного из МТ4 - ии??? я не вижу тут 
double iMA(string symbol, int timeframe, int period, int ma_shift, int ma_method, int applied_price, int shift)
//+------------------------------------------------------------------+
//|                                                     Momentum.mq4 |
//|                      Copyright © 2004, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net/"

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 DodgerBlue
//---- input parameters
extern int MomPeriod=14;
 
//---- buffers
double MomBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   string short_name;
//---- indicator line
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,MomBuffer);
//---- name for DataWindow and indicator subwindow label
   short_name="Mom("+MomPeriod+")";
   IndicatorShortName(short_name);
   SetIndexLabel(0,short_name);
//----
   SetIndexDrawBegin(0,MomPeriod);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Momentum                                                         |
//+------------------------------------------------------------------+
int start()
  {
   int i,counted_bars=IndicatorCounted();
   
//----
   if(Bars<=MomPeriod) return(0);
//---- initial zero
   if(counted_bars<1)
      for(i=1;i<=MomPeriod;i++) MomBuffer[Bars-i]=0.0;
      
//----
   
   i=Bars-MomPeriod-1;
   if(counted_bars>=MomPeriod) i=Bars-counted_bars-1;
   while(i>=0)
     {
      MomBuffer[i]=Close[i]*100/Close[i+MomPeriod];
      i--;
     }
   return(0);
  }
//+------------------------------------------------------------------+
Roger:

这是个奇怪的看法。

doubleiMA(

string symbol, int timeframe, int period, int ma_shift, int ma_method, int applied_price, int shift)

第一个要素。

原因: