新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 338

 

谁能告诉我,为什么我的指标在测试中显示,并在测试结束后停留在指标窗口中,但如果我在专家顾问中通过iCustom调用它,该指标就不显示了?

//+------------------------------------------------------------------+
//|                                             Tiscks_Window_49.mq4 |
#property version   "1.00"
#property strict

#property indicator_separate_window
#property indicator_buffers 1
#property  indicator_color1 clrLawnGreen

double ExtMapBuffer1[];
int Draw_Bars;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   IndicatorShortName("Ask");
   IndicatorDigits(5);
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexLabel(0,"Ask");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   ExtMapBuffer1[0]=MarketInfo(Symbol(),MODE_ASK);
   for(int i=Bars-2; i>=0; i --)
     {
      ExtMapBuffer1[i+1]=ExtMapBuffer1[i];
     }
   return(rates_total);
  }
//+------------------------------------------------------------------+


也许我没有在iCustom中正确调用它?

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   double sep_window=iCustom(Symbol(),PERIOD_CURRENT,"Tiscks_Window_49",0,0);
   Print(" sep_window= ",sep_window);
  }
//+------------------------------------------------------------------+
 
Nauris Zukas:

谁能告诉我,为什么我的指标在测试中显示,并在测试结束后停留在指标窗口中,但如果我在专家顾问中通过iCustom调用它,该指标就不显示了?
也许我没有在iCustom中正确调用它?

你说对了。用其他指标试试--会是一样的。

 
Nauris Zukas:

谁能告诉我,为什么我的指标在测试中显示,并且在测试结束后停留在指标窗口中,但如果我在专家顾问中通过iCustom调用它,该指标就不显示了?


也许我没有在iCustom中正确调用它?

ExtMapBuffer1[0]=MarketInfo(Symbol(),MODE_ASK);

试着简单地说=问。
或者,检查close[0]。

而在这里,为什么要移动整个历史?前100-300条就够了

for(int i=Bars-2; i>=0; i --)
 
LRA:

这一切都很好。用其他指标试试--它将是相同的...

试过RSI,一切正常。某处有一个细微的差别,我还不知道在哪里。


 
Taras Slobodyanik:

试试就=Ask。
或检查close[0]。

而在这里,你为什么要把整个故事搬出来?前100-300条就够了。

改变了它,但也没有用。

 
Nauris Zukas:

谁能告诉我,为什么我的指标在测试中显示,并在测试结束后停留在指标窗口中,但如果我在专家顾问中通过iCustom调用它,该指标就不显示了?


也许我没有在iCustom中正确调用它?

也许,这是因为该指标是 这样写的。当被专家顾问调用时,它没有足够的时间重新计算所有的条形图,这种可能性有多大?

试着只重新计算一次所有的条形图,然后只用专家顾问的新调用。
 
Alexey Viktorov:

当我从专家顾问中调用它时,它没有时间重新计算所有的条形图,这种可能性是什么?

我在专家顾问中打印,显示价格在那里,这意味着条形图已经被重新计算。

阿列克谢-维克多罗夫
试着只重新计算 一次 所有的条形图 然后只用EA的一个新的调用。

我还没有测试这个变体,我还在考虑如何做。

 

下午好,我正在走第一步,我已经读了教程等,我的问题可能是错的,但还是.....。

如果我想得到过去几年的蜱虫档案,我可能需要它在更长的时间内,在第三方应用程序中进行分析。如果我没有弄错,但是Bars只包含当前的图表数据,谢谢。

 
ijonhson:

下午好,我正在走第一步,我已经读了教程等,我的问题可能是错的,但还是.....。

如果我想得到过去几年的蜱虫档案,我可能需要它在更长的时间内,在第三方应用程序中进行分析。如果我没有弄错,但是Bars只包含当前的图表数据,谢谢。

如果你不知道如何使用这些日志,不要试图用真实的日志覆盖它们。谷歌会帮助你。

 

你好,Artiom,你能告诉我如何编写一个EA,使其在价格超过某个水平之前不开单,然后在价格回到该水平之上后继续开单?恭喜你,Andrei。

原因: