任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 318

 
muzzletop:
下午。我有一个EA,它在策略测试器中运行良好(它打开订单和一切)。但当我只是把它放在一个图表上时,什么也没有发生。该EA不起作用。我还注意到图表上EA的名字旁边有一个十字。如何解决这个问题?


当你把EA放在图表上时,会打开一个带有参数的窗口,有不同的标签--在第一个标签 "常规 "中,你必须在"允许EA交易"前面打上勾。

如果该EA已经出现在图表上,并且显示为十字形--在工具栏上,点击 "EA "按钮(黄色立方体的帽子上有一个红色的圆圈,圆圈内有一个白色的正方形)。

 

下午好。帮助我处理一个奇怪的问题。

重点是:我正在编写一个多时段指标,即一个指标,它在任何时候打开,都会计算并给出所有其他时间的信号。

该指标的基础是RSI。

在init()中,当切换时间框架时,一个单独的数组被放在指标线 的对应位置。对于每个人来说,当你在这个或那个时间,线都会被显示出来,但其他时间的计算却没有进行(函数iRSI在计算中愚蠢地追寻零)。也就是说,当前时间被计算出来了,但其他时间却没有。

我正在粘贴代码。

#property indicator_separate_window
#property indicator_minimum 20
#property indicator_maximum 80

#property indicator_level1 20          // уровень RSI
#property indicator_level2 42          // уровень RSI
#property indicator_level3 50          // уровень RSI
#property indicator_level4 58          // уровень RSI
#property indicator_level5 80          // уровень RSI

#property indicator_levelcolor White   // цвет уровней 

#property indicator_buffers 1
#property indicator_color1 Red
#property indicator_width1 2           // толщина RSI

//--- buffers
double   RSI_M1[];               // буферы под RSI
double   RSI_M5[];
double   RSI_M15[];
double   RSI_M30[];
double   RSI_H1[];
double   RSI_H4[];
double   RSI_D1[];
double   RSI_W1[];
double   RSI_MN[];

int         RSI_per           = 12;                // период RSI
int         RSIPriceType      =  PRICE_CLOSE;      // покакой цене считать RSI
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init() {
//---- indicators
   IndicatorShortName("test");
   
   switch(Period()) {
      case PERIOD_M1:
          SetIndexBuffer(0, RSI_M1);
          break;
      case PERIOD_M5:
          SetIndexBuffer(0, RSI_M5);
          break;
      case PERIOD_M15:
          SetIndexBuffer(0, RSI_M15);
          break;
      case PERIOD_M30:
          SetIndexBuffer(0, RSI_M30);
          break;
      case PERIOD_H1:
          SetIndexBuffer(0, RSI_H1);
          break;
      case PERIOD_H4:
          SetIndexBuffer(0, RSI_H4);
          break;
      case PERIOD_D1:
          SetIndexBuffer(0, RSI_D1);
          break;
      case PERIOD_W1:
          SetIndexBuffer(0, RSI_W1);
          break;
      case PERIOD_MN1:
          SetIndexBuffer(0, RSI_MN);
          break;
   }   
   
   SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 2);
   SetIndexLabel(0,"RSI(" + RSI_per + ")");
//----
   return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit() {
   return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int   shift, _Bars;
   static int  _counted_bars_W1 = 0,
               _counted_bars_D1 = 0;
   //--------------------------------------------------------------------
   _Bars = iBars(NULL, PERIOD_W1);
   shift = _Bars - _counted_bars_W1 - 1;   // Индекс первого непосчитанного
   _counted_bars_W1 = _Bars - 1;
   
   while(shift >= 0) {                // Цикл по непосчитанным барам
      RSI_W1[shift]       = iRSI(NULL, PERIOD_W1, RSI_per, RSIPriceType, shift);
      Print(RSI_W1[shift]);
      shift--;
   }
   //------------------------------------------
   _Bars = iBars(NULL, PERIOD_D1);
   shift = _Bars - _counted_bars_D1 - 1;   // Индекс первого непосчитанного
   _counted_bars_D1 = _Bars - 1;
   
   while(shift >= 0) {                // Цикл по непосчитанным барам
      RSI_D1[shift]       = iRSI(NULL, PERIOD_D1, RSI_per, RSIPriceType, shift);
      shift--;
   }
   //------------------------------------------   
   return(0);
  }
//+------------------------------------------------------------------+

有趣的是,如果我们只为指标线留下一个数组,并在任何时候只计算W1,那么在任何(!)时候都能正确计算和绘制。
有什么诀窍?在初始化过程中,不可能根据时间的不同,为指标线采取不同的数组?

 
satorifx:

下午好。帮助我处理一个奇怪的问题。

重点是:我正在编写一个多时段指标,即一个指标,它在任何时候打开,都会计算并给出所有其他时间的信号。

该指标的基础是RSI。

在init()中,当切换时间框架时,一个单独的数组被放在指标线的对应位置。对于每个人来说,当你在这个或那个时间,线都会被显示出来,但其他时间的计算却没有进行(函数iRSI在计算中愚蠢地追寻零)。也就是说,当前时间被计算出来了,但其他时间却没有。

我正在粘贴代码。

有趣的是,如果我们只为指标线留下一个数组,并在任何时候只计算W1,那么在任何(!)时候都能正确计算和绘制。
有什么诀窍?在初始化过程中,不可能根据时间的不同,为指标线采取不同的数组?

只有W1和D1被读取!你想要什么?为其他人完成它!
 
borilunad:
只有W1和D1被读取!你想要什么?为其他人完成它!

这不是问题的关键。我只给出了D1和W1的计算结果,这样代码就不会太长。注意:在每个时间框架的每一个刻度 上,W1的计算值都会被打印出来。因此,如果除W1以外的任何时间被打开,就会打印出零。如果它对W1有效,对其他人也会有效。
 
satorifx:

这不是问题的关键。我只给出了D1和W1的计算结果,以便不使代码太长。请注意:在任何时间框架上的每一个刻度,W1的计算值都会被打印出来。因此,如果除W1以外的任何时间被打开,就会打印出零。如果它对W1有效,就会对其他所有的人有效。
对了!我们必须打开周线图才能在其他图表上显示出来!
 
borilunad:
正确的!要在其他图表上显示,你必须同时打开周线图!


说实话,我并不理解这种说法。
而且没有必要展示其他东西。如果你运行代码,你会看到它已经显示了我想要的东西:在D1显示图表RSI D1,在W1--图表RSI W1,但同时,如果D1是开放的,那么W1的RSI都是零,如果W1是开放的,那么D1的计算是零。问题是为什么会出现这种情况,以及如何解决这个问题。

 

问题是,索引数组 初始化和调整自己的大小是正确的。
所以当我打开D1 - RSI_D1[]成为索引,一切都很好,但其他数组仍然处于胚胎状态。
我是这样试的:我这样声明所有的数组。

double   RSI_W1[]    =  {0};
我把init()中的开关改成了这样:
      case PERIOD_D1:
          SetIndexBuffer(0, RSI_D1);
          ArrayResize(RSI_W1, iBars(NULL, PERIOD_W1));
          break;

然而,在ArrayResize上GetLastError给出了一个错误。

EURUSD,日线:无法调整数组大小

EURUSD,Daily: Some array error

总之,谁能告诉我如何解决这个问题?

 
satorifx:

问题是,索引数组初始化和调整自己的大小是正确的。
所以当我打开D1 - RSI_D1[]成为索引,一切都很好,但其他数组仍然处于胚胎状态。
我是这样试的:我这样声明所有的数组。

我把init()中的开关改成了这样:

然而,在ArrayResize上GetLastError给出了一个错误。

EURUSD,日线:无法调整数组大小

EURUSD,Daily: Some array error

总之,谁能告诉我如何解决这个问题?

如果数组是动态的,确保当你向其中写入数值时,你会增加数组的大小 以容纳新的数据。阵列调整大小()
 
artmedia70:
如果数组是动态的,在向其写入数值时,一定要增加数组的大小以容纳新的数据。ArrayResize()

我在上面写到:
但ArrayResizeGetLastError 给出了一个错误:

EURUSD,Daily: 不能调整数组大小

EURUSD,Daily: 一些数组错误
 
satorifx:
这就是我上面写到的。
然而在ArrayResize上GetLastError给出了一个错误。

EURUSD,日线:无法调整数组大小

欧元兑美元,日线:一些阵列错误
satorifx:


说实话,我并不理解这句话。
而且没有必要展示其他东西。如果你运行我的代码,你会看到一切都已经显示出来了:RSI D1显示在D1上,RSI W1显示在W1上,但同时,如果D1打开,那么W1的RSI都是空的,如果W1打开,那么D1的RSI都是空的。问题是为什么会出现这种情况,以及如何解决这个问题。

因为缓冲区是单独的,并在你的电话中逐一显示出来!

#property indicator_buffers 1
你真的认为我除了下载你的 "代码 "并测试它们之外没有其他更好的事情可做吗?我在帮你提供建议。如果有什么不对,都在上面等着你呢!还是懒惰比你更早出生?