初学者的问题 MQL5 MT5 MetaTrader 5 - 页 877

 
有可能Upper[i]在某些条形上没有被填满(等于0)
 
Sergey Savinkin:
有可能Upper[i]在某些条上没有被填满(等于0)

我想我已经找到了一些解决问题的线索:当在运行代码前对照当前价格状态写下条件时,日志输出如下。

重要的一点是--这些参数与之前已经产生的 价格相吻合。

要澄清的是。

这时,日志的最后一行表明,价格超过了上行线。唯一的问题是它为什么这样做?我有一个版本,在从开始到现在重新计算指标的过程中,代码登记了这些事件,并在最后一个事件中停止 - 它解释了价格和当前日志数据之间的差异,但没有解释其他的东西 - 我需要代码在逻辑上做一个简单的比较,"价格超过了上线 - 给出警报,但没有发生"。

还检查了价格低于上线时的代码条件--它根本没有在日志中记录事件,这是在上面的截图中--我在最后停止了对它的理解,如果它完全有效的话。

 

朋友们,我是MQL5的新手,所以如果我在这里写的问题是我自己的错,请不要过多地踢我。

我想做一个多币种的猫头鹰,但在策略测试器中遇到了一些奇怪的事情,这些事情 在测试多币种的时候出现。我得到一些奇怪的时间序列符号的移动,而不是主图表符号。我做了一个简单的猫头鹰,在每个柱子的开头用两个符号获得零点和第一个柱子的开放时间。由于某些原因,第二个符号的时间序列在1个小节后开始移动。出现在任何符号和任何时间框架上。我一直在测试欧元兑美元,第二个符号是英镑兑美元。我试过反过来,我试过在其他对上,错误总是出现。这是在М15上测试后的日记图片。

在H1上测试后的日志图片。

战略测试仪的设置。

以下是用于测试的代码。

#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
input string SecondSymbol="GBPUSD";

int OnInit()
  {
   SymbolSelect(SecondSymbol,true);//выбираем второй символ в MarketWatch(для тестера)
//---
   return(INIT_SUCCEEDED);
  }

void OnDeinit(const int reason)
  {
//---

  }

void OnTick()
  {
   static datetime BarTime;//время начала бара
   int per=PeriodSeconds(PERIOD_CURRENT);

   datetime time_curr=TimeCurrent()/per*per;
   if(time_curr!=BarTime)
     {
      BarTime=time_curr;

      datetime Time_One[],Time_Two[];
      bool yes=ArraySetAsSeries(Time_One,true);
      yes=ArraySetAsSeries(Time_Two,true);

      int i=CopyTime(NULL,PERIOD_CURRENT,0,2,Time_One);    //текущий символ
      i=CopyTime(SecondSymbol,PERIOD_CURRENT,0,2,Time_Two);//второй символ
      
      Print("ВремяНачалаБара по ",Symbol(),":",Time_One[0]," ВремяНачалаБара по ",SecondSymbol,":",Time_Two[0]);
     }
  }

希望得到任何帮助。

 
stroganow:

朋友们,我是MQL5的新手,所以如果我在这里写的问题是我自己的错,请不要过多地踢我。

我想做一个多币种的猫头鹰,但在策略测试器中遇到了一些奇怪的事情,这些事情 在测试多币种的时候出现。我得到一些奇怪的时间序列符号的移动,而不是主图表符号。我做了一个简单的猫头鹰,在每个柱子的开头用两个符号获得零点和第一个柱子的开放时间。由于某些原因,第二个符号的时间序列在1个小节后开始移位。出现在任何符号和任何时间框架上。我一直在测试欧元兑美元,第二个符号是英镑兑美元。我试过反过来,我试过在其他对上,错误总是出现。这是在М15上测试后的日记图片。

在H1上测试后的日志图片。

战略测试仪的设置。

用于测试的代码。

希望得到任何帮助。

测试仪工作正常。程序逻辑中存在一个错误:两个符号就像不同人的两个生命(这里的 "人 "类似于 "符号")。而第二个人不一定要和第一个人同时醒来("醒来 "类似于"新出现的酒吧")。

所以你必须等待一个新的条形图出现,并且在第一个符号上和第二个符号上。


新增: 文章"新酒吧 "事件处理程序

 

你能告诉我,这是一张看涨针形条的图片,识别它的条件的原则代码应该是什么样子?

if(low[i] <= open[i] && high[i] > close[i] && open[i] >= close[i] && close[i] <= Base[i]) // верно ли это утверждение?
 
clickaider:

你能告诉我,这是一张看涨针形条的图片,识别它的条件的原则代码应该是什么样子?

这是一个看跌的针形柱。蜡烛的方向并不重要。长影的位置很重要:向上是看跌,向下是看涨。而且需要有水平指标的确认。
 
Artyom Trishkin:
这是一个看跌的针形柱。蜡烛的方向并不重要。长影的位置很重要:向上是看跌,向下是看涨。而我们需要从水平指标中得到确认。
我们可以通过一个代码结构来显示吗?只是不大清楚代码应该是什么样子的
 
clickaider:
是否有可能通过代码结构来显示这一点?只是不太清楚代码应该是什么样子的
我不能用我的手机给你写代码。一目了然。
你需要从高低点看蜡烛的大小,蜡烛主体的大小,主体占整个蜡烛大小的百分比,短影的大小不应超过某个阈值(这样它就没有了,或者相对于主体来说是很小的),以及顶部/底部主体相对于整个蜡烛大小的位置。
类似这样的事情...
 
Artyom Trishkin:
我不能用我的手机给你写代码。一目了然。
你需要从高低点看蜡烛的大小,蜡烛主体的大小,主体占整个蜡烛大小的百分比,短影的大小不应超过某个阈值(这样它就没有了,或者相对于主体来说是很小的),以及顶部/底部主体相对于整个蜡烛大小的位置。
类似这样的事情...

从图形上看,它看起来像这样。

 
clickaider:

从图形上看,它看起来像这样。

现在用文字描述你所描述的图形。使用高、低、开、关。
一旦你用语言描述它,你就已经为自己写好了ToR :)
剩下的就是用代码取代单词结构。