指标杂项问题 - 页 8

 
Marco vd Heijden:

一天中的第一条应该是TimeHour()开始计数后的第一条。
当然,这将是M1、M5、M15等的第一条,它们都是新条的开始。

我很快就会尝试,我也在努力解决这个问题。

非常感谢。

 

我仍然在看论坛和研究,我可以找到类似的论坛,但不能准确找到我想要的东西。(也许我不了解他们的代码风格或......)
我做了一个快速截图,我希望这能帮助你清楚地了解我。

拳拳之心

提前感谢。

 
datetime open;

open=iOpen(Symbol(),PERIOD_D1,0);

// put in ontick

if(iOpen(Symbol(),PERIOD_D1,0)!=open)
{
  if(TimeHour(open)==0)
   {
    Alert("New Day !!");
   }
  open=iOpen(Symbol(),PERIOD_D1,0); // assign new value every hour
}

我喝了几杯啤酒,所以我希望你能明白我的想法,我确信它在所有可能的方面都是错误的。

我认为开放必须被时间所取代。

iTime(

或者,你甚至可以这样做。

if(TimeHour(TimeCurrent())==0)
{
  Alert("NEw DAy m8");
}
ps:另一个主题怎么了,都快40页了?
 
Marco vd Heijden:

我喝了几杯啤酒,所以我希望你能明白我的想法,我相信它在所有可能的方面都是错误的。
或者,你甚至可以这样做。

ps. 另一个主题怎么了?
威廉先生--(我尊重你和你的评论)我面对的是你写的这句话的几倍。这里没有读心人。
现在我想,如果我不能把我的问题写得更清楚,人们怎么能清楚地理解我?

---

马可先生--非常感谢您的评论。我已经知道了,我也在我的指标中使用了类似的代码。

(我试图在代码源部分解释我的问题)

iTime( Symbol(), PERIOD_D1, 0 )
// this code gives me Hour 00:00 - but actually D1 time should show Hour 01:00 | this mean my broker shows absolutely wrong Hour for period PERIOD_D1
// But I need to write code to get first H1 bar Time of the day ( e.g: if first H1 bar 00:00 or 01:00 or ... ) instead of PERIOD_D1
// But I really struggle to write code for get today first H1 time

---

P.S

你是否认为我为什么不开放子主题?
我还在努力。我可以在论坛上找到解决方案。现在进展不错,但也有点慢。

另外。
当我开始写贸易面板 的EA时,我认为我需要写4个功能脚本 卖出、买入、关闭所有订单、退出(删除)EA。
在我工作的时候,我得到了很多想法......现在,EA已经超过3千行。
如果我决定了所有的功能,我还应该再写10个有用的功能。

另外,也许当我完成我的贸易面板EA后,我会写一个小故事,讲述我如何开始为我的贸易面板EA写脚本。(即使我没有完成它--我真的相信谁会看到它,大多数人都会说。哇,太棒了!)嘿嘿:)

---

谢谢马可先生

谢谢大家(回复我的评论),谢谢你们的帮助。

 
#property strict
#property show_inputs
#define HOUR 3600
#define DAY 86400
extern int local_offset = 1; // local time offset from broker (hours)

void OnStart()
  {
   local_offset*=HOUR;

   int D1_shift = (TimeCurrent()%DAY > local_offset) ? 0 : 1;

   datetime broker_midnight = iTime(_Symbol,PERIOD_D1,D1_shift);
   datetime local_midnight  = broker_midnight + local_offset;

   int      M5_shift = iBarShift(_Symbol,PERIOD_M5,local_midnight);
   datetime M5_time  = iTime(_Symbol,PERIOD_M5,M5_shift);
   double   M5_open  = iOpen(_Symbol,PERIOD_M5,M5_shift);

   printf("M5_time: %s M5_open: %f", TimeToString(M5_time),M5_open);
  }
 
honest_knave:

谢谢你的好例子。
如果我有时间的话,我明天会尝试用视频/图片来解释。

我对这个问题的研究非常努力。

(我也在谷歌seo中搜索这样的关键词(到目前为止在seo中没有有用的评论): site:mql4.com | site:mql5.com 一天的第一条)

 

你是否在寻找一种方法来自动检测 当地>经纪商的时间偏移? 例如:+1小时

如果你要手动 设置(这更好,因为有时你不想使用本地时间,而是完全使用另一个时区),你要遵循的步骤就像我上面的脚本。

1.获取经纪人时间的午夜(使用iTime或通过计算)。

2.2. 使用你的偏移量设置将其转换为当地的午夜时分

3.3.通过iBarShift将当地的午夜时间放到你选择的时间框架上,以获得正确的条形。

 
honest_knave:

你是否在寻找一种方法来自动检测 本地>经纪商时间的偏移?例如:+1小时
如果你要手动 设置(这更好,因为有时你不想使用本地时间,而是完全使用另一个时区),你要遵循的步骤就像我上面的脚本一样:
1. 获取经纪商时间的午夜(使用iTime或通过计算)
2.使用你的偏移量设置将其转换为本地午夜
3.3.通过iBarShift将本地午夜转换为你所选择的时间框架上的正确条形。

你完全正确地理解了我的意思--我正在寻找一种自动...的方法。我有几个重要的 指标(自制的--在不同的论坛帮助下),如果我选择手动方式--我可以改变它们的设置......那是很长的路--我太懒了。:)
非常感谢!
也许我找到了解决方案(在这个时候看起来它的工作 - 我已经尝试了2个不同的经纪人,我得到正确的时间)。

我相信问题来自于缺乏经验。

问: 请问如何在下面的结果中只保留小时1?
(实际上我发现如何在下面的结果中只保留 "1"--但我需要专业的方法,请)
(例如:结果:2017.02.2701:00:00--但我需要只保留:1

2017.00.00 00:00:00.000 Custom Indicator EURUSD,M5:  Bar Time: 2017.02.27 01:00:00

非常感谢你所做的一切。

( 我将分享我是如何找到解决方案的。- 如果你不帮助我,我就无法找到解决方案 - 再次感谢你。)

 

我正在寻找下面的代码。
但我仍然需要测试它。

Period_Look=iTime(Symbol(),PERIOD_W1,0); // actually I need PERIOD_D1 - but did not work correctly - I still need to see first Hour of Monday for test.
Period_Shift=iBarShift(Symbol(),PERIOD_H4,Period_Look);
Period_Time=iTime(Symbol(),PERIOD_H4,Period_Shift-1);

GMT_Offset=(Period_Time-iTime(Symbol(),PERIOD_W1,0)-PeriodSeconds(PERIOD_D1))/PeriodSeconds(PERIOD_H1); // result: 1

如果上述代码不对,请告诉我。

非常感谢@honest_knave@Marco

 

好吧,麦克斯考虑一下,如果你正在扫描一个模式,并且它形成了,那么你的触发器就会响起,无论时间戳是什么。

因此,触发器可以在不同的经纪商上有几个时间戳,但触发的确切时刻在所有经纪商上都是差不多的。

不完全是,但足够接近。