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

 
41ckm39fi:
我删除了与PrevSignal有关的一切,但信息没有显示出来。

我没有看到房间里的大象......

做一个缓冲区初始化,因为它是一个指标...

#property indicator_chart_window

int init(){

IndicatorBuffers(2)。

SetIndexBuffer(0,DeMarker_buffer0)。

SetIndexBuffer(1,MA_buffer1)。

SetIndexStyle(0,DRAW_NONE)。

SetIndexStyle(1,DRAW_NONE)。

}

移除ArraySetAsSeries调用...并在

DeMarker_buffer0[i]=iDeMarker(NULL,0,14,1);

把最后一个参数代替1 i

 
keekkenen:

我没有看到房间里的大象......

做一个缓冲区初始化,因为它是一个指标...

#property indicator_chart_window

int init(){

IndicatorBuffers(2)。

SetIndexBuffer(0,DeMarker_buffer0)。

SetIndexBuffer(1,MA_buffer1)。

SetIndexStyle(0,DRAW_NONE)。

SetIndexStyle(1,DRAW_NONE)。

}

移除ArraySetAsSeries调用...并在

把最后一个参数代替1 i


以下是你得到的东西。

#property  indicator_level1 0.3
#property  indicator_level2 0.7
#property indicator_chart_window
//---- 
extern int        period_MA            = 5,
                  period_DeMarker      = 14;
//---- 
double            DeMarker_buffer0[],
                  MA_buffer1[],
                  Signal_Buffer2[];       
#define SIGNAL_BAR 1
 //+------------------------------------------------------------------+
int init()
{

IndicatorBuffers(2);

SetIndexBuffer(0,DeMarker_buffer0);

SetIndexBuffer(1,MA_buffer1);

SetIndexStyle(0,DRAW_NONE);

SetIndexStyle(1,DRAW_NONE);

return(0);
  }
  //+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//|   
//+------------------------------------------------------------------+
int start()
  {
  int    i,limit=ArraySize(DeMarker_buffer0);
        
  int    counted_bars=IndicatorCounted();
//----
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
//----
  for(i=limit; i>=0; i--)
  DeMarker_buffer0[i]=iDeMarker(NULL,0,14,i);
//---- 
  for(i=limit; i>=0; i--)
  
  MA_buffer1[i]=iMAOnArray(DeMarker_buffer0,limit,5,0,MODE_LWMA,i);
//----  
                if(MA_buffer1[SIGNAL_BAR] - 0.3 > 0 && 0.3 - MA_buffer1[SIGNAL_BAR+1] >= 0)  
//---- 
                                Alert( "sMA(", Symbol(), ", ", Period(), ")  -  BUY!!!" );
//----
                if(0.7 - MA_buffer1[SIGNAL_BAR] > 0 && MA_buffer1[SIGNAL_BAR+1] - 0.7 >= 0)
//----               
                                Alert("sMA(", Symbol(), ", ", Period(), ")  -  SELL!!!");
                        
   return(0);
  }

但我对这句话感到困惑

MA_buffer1[i]=iMAOnArray(DeMarker_buffer0,limit,5,0,MODE_LWMA,i);

其他组成指标拼出了Bars而不是limit。

 
41ckm39fi:


这就是出来的东西。

但我对这句话感到困惑

其他组成指标拼出了Bars而不是limit。




我也很困惑......这个iMAOnArray()函数,我不确定如果第二个参数不是0,它能正确计算平均数,即在整个DeMarker_buffer0 阵列上计算,最好把0...
 
keekkenen:
我也很困惑......这个iMAOnArray()函数,我不确定如果第二个参数与0不同,它能正确计算平均数,即在整个DeMarker_buffer0阵列上计算,最好把0...
我把 "Bars "代替了 "limit",程序就开始发出信息了!!!。它似乎按照我想要的方式工作。只有信息走了很多遍,直到信号栏关闭。
 
下午好。下载了EA,保存了它,编译了它,重新加载了终端。你能告诉我为什么添加到MT4的EA没有附在图表上吗?我做错了什么吗?
 
41ckm39fi:

我开的是Bars,而不是...

只有信息走了很多遍,直到信号栏关闭。

0仍然是正确的...

并把时间控制带回来...

static int  PrevTime = Time[0];
//---- 
if(PrevTime >= Time[0] ) return(0);
//---- 
PrevTime = Time[0];

// а здесь проверяйте условия на алерт
 

我忘了说,这句话

int    i,limit=ArraySize(DeMarker_buffer0);

我由

int    i,limit;

并在
行中用Bars代替limit。

MA_buffer1[i]=iMAOnArray(DeMarker_buffer0,Bars,5,0,MODE_LWMA,i);

现在我将尝试像你说的那样返回PrevTime,并将第二个参数Bars 替换为0。

 

例如,我有一个运行在mql4上的专家顾问。

当我通过外部变量 运行它时,我设置了一些值。

问题:我可以在任何时候改变吗?

在专家顾问的操作过程中(例如,从键盘),一些变量,在这种情况下,它不会引起专家顾问的重新启动?

 
Jazzz:

例如,我有一个运行在mql4上的专家顾问。

当我通过外部变量运行它时,我设置了一些值。

问题:我可以在任何时候改变吗?

在专家顾问的操作过程中(例如,从键盘),一些变量,在这种情况下,它不会引起专家顾问的重新启动?


如果你使用全局级别的变量,你可以。要在不关闭EA的情况下从键盘上改变它们的值,请在终端上按F3。
 
谢谢你!
原因: