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

 
Aleksey Vyazmikin:

请帮助我解决这个问题。

假设我有一个当前的时间框架M1,我需要知道任何上层TF的给定条N的时间,这个小时可能不是60分钟,而是45或其他时间,此外还有周末,我需要知道当前TF的最后一个条的日期,从任何TF。

我如何做到这一点呢?

你指定条形图编号、符号名称 和所需的时间框架。

//+------------------------------------------------------------------+ 
//| Get Time for specified bar index                                 | 
//+------------------------------------------------------------------+ 
datetime iTime(const int index,string symbol=NULL,ENUM_TIMEFRAMES timeframe=PERIOD_CURRENT)
  {
   if(symbol==NULL)
      symbol=Symbol();
   if(timeframe==0)
      timeframe=Period();
   datetime Time[1];
   datetime time=0; // datetime "0" -> D'1970.01.01 00:00:00'
   int copied=CopyTime(symbol,timeframe,index,1,Time);
   if(copied>0)
      time=Time[0];
   return(time);
  }

检查(以防万一)--如果函数返回时间D'1970.01.01 00:00:00' --那么就有错误。

 

我遇到了一个问题,卖出的订单 没有被下达

2018.05.23 12:07:55.002 Trades  '50250084': market sell 0.01 EURUSD tp: 1.17397
2018.05.23 12:07:55.112 Trades  '50250084': accepted market sell 0.01 EURUSD tp: 1.17397
2018.05.23 12:07:55.113 Trades  '50250084': market sell 0.01 EURUSD tp: 1.17397 placed for execution
2018.05.23 12:07:55.114 Trades  '50250084': rejected market sell 0.01 EURUSD tp: 1.17397 (rejected)

我的理解是否正确,经纪人接受了该订单,然后又拒绝了它?

那么有什么理由,为什么不呢?日志中不再有错误。在这个错误之前,有超过50个订单没有错误。在这个错误之后,我们也没有登记任何错误。

有可能摆脱这个问题吗?

 
Vladimir Karputov:

指定条形图编号、符号名称 和所需的时间框架。

检查(以防万一)--如果函数返回时间D'1970.01.01 00:00:00'--则有错误。

我使用这个功能,它比你建议的那个功能更差吗?

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
datetime iTime(string symbol,int tf,int index)
  {
   if(index < 0) return(-1);
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   datetime Arr[];
   if(CopyTime(symbol,timeframe,index,1,Arr)>0)
      return(Arr[0]);
   else return(-1);
  }

问题是,如果当前的时间框架是1分钟,我想知道当前时间框架的最后一个条形图在所选时间框架中的编号,但已经过去了很多时间(由于周末或由于晚上的会议在23-50关闭,而下一个会议在10-00才打开,所以有差距),那么我返回09:59而不是23:49:00,我要求的时间如此

datetime         StopDt=iTime(Symbol(),TF_iDeltaP,_Shift-1)-60;

这就是为什么我问,如何用任何TF的组合获得最后一棒的这个时间?

 
Aleksey Vyazmikin:

...

问题是,如果我有一个1分钟的当前时间框架,我想知道当前时间框架的最后一个柱子在所选时间框架中的数量, ...

听到这个突出的短语,我的大脑爆炸了。

 
Vladimir Karputov:

听到这个突出的短语,我的大脑爆炸了。

这里有一个错字,我需要的是当前时间框架的最后一个柱子的日期,它指的是上层时间框架的选定柱子。

清楚了吗?
 
Aleksey Vyazmikin:

这里有一个错字,我需要的是当前时间框架的最后一个柱子的日期,它指的是上层时间框架的选定柱子。

清楚了吗?

不,这并不清楚。我的大脑一直在冒泡和爆炸:)。一个条形图只属于它自己的时间框架。

 
Aleksey Vyazmikin:

这里有一个错字,我需要的是当前时间框架的最后一个柱子的日期,它指的是上层时间框架的选定柱子。

这清楚吗?

如果我对你的要求理解正确,那么。

1.确定上层时间框架内所需条形的收盘时间。

2.计算低位TF的柱子与高位TF的柱子一起收盘的时间。

3.在这个时间框架内,要求获得较年轻的TF的条形图(要求并不严格)--获得时间轴上最接近左边的条形图--你需要的那个。

4.如果有必要的话,检查这个柱子是否在上层TF的柱子内(当下层TF的柱子由于某种原因没有出现在上层TF的柱子内时,排除这种变体)。

 
Vladimir Karputov:

不,它没有。脑子里不停地冒泡和爆炸:)。一个条形图只属于其时间框架。

好了,接下来就是思想的可视化了 :)

我用白色显示了我们提出请求的地方,用黄色显示了我们应该得到的条形时间。

是不是更清楚了?如果没有,请提出问题。

 
Aleksey Vyazmikin:

好了,接下来就是思想的可视化了 :)

白色表示我们在哪里提出请求,黄色表示我们应该得到的酒吧时间。

这是否更清楚?如果没有,请提出问题加以澄清。

1.图片太小了--下次放2米乘2米 :)

2.我再次不明白你的意思:你给我看了某个时间框架的图表。在这个时间范围内,申请N号栏的问题是什么?

 
Vladimir Karputov:

1.

2.我又不明白这个想法了--你在某个时间框架上展示了一个图表。在这个时间框架上要求一个条形数字N有什么问题?

1.我可以做得更多--没问题;)

2.左上角 显示的时间框架是M5。我不能问N个小节,因为我不知道如何准确地知道它,特别是如果转变不是上TF的1个小节,而是更多的小节。

我将尝试在以下算法中实现一栏的转变。

1.找出从当前上层TF的开始到现在已经过去了多少个柱子。

2.将得到的数字移位1巴,用iTime函数找出时间。