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"); }
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
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);
一天中的第一条应该是TimeHour()开始计数后的第一条。
当然,这将是M1、M5、M15等的第一条,它们都是新条的开始。
我很快就会尝试,我也在努力解决这个问题。
非常感谢。
我仍然在看论坛和研究,我可以找到类似的论坛,但不能准确找到我想要的东西。(也许我不了解他们的代码风格或......)
我做了一个快速截图,我希望这能帮助你清楚地了解我。
提前感谢。
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
}
我喝了几杯啤酒,所以我希望你能明白我的想法,我确信它在所有可能的方面都是错误的。
我认为开放必须被时间所取代。
或者,你甚至可以这样做。
{
Alert("NEw DAy m8");
}
我喝了几杯啤酒,所以我希望你能明白我的想法,我相信它在所有可能的方面都是错误的。
ps. 另一个主题怎么了?或者,你甚至可以这样做。
(我试图在代码源部分解释我的问题)
// 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 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);
}
谢谢你的好例子。
如果我有时间的话,我明天会尝试用视频/图片来解释。
我对这个问题的研究非常努力。
(我也在谷歌seo中搜索这样的关键词(到目前为止在seo中没有有用的评论): site:mql4.com | site:mql5.com 一天的第一条)
你是否在寻找一种方法来自动检测 当地>经纪商的时间偏移? 例如:+1小时
如果你要手动 设置(这更好,因为有时你不想使用本地时间,而是完全使用另一个时区),你要遵循的步骤就像我上面的脚本。
1.获取经纪人时间的午夜(使用iTime或通过计算)。
2.2. 使用你的偏移量设置将其转换为当地的午夜时分
3.3.通过iBarShift将当地的午夜时间放到你选择的时间框架上,以获得正确的条形。
你是否在寻找一种方法来自动检测 本地>经纪商时间的偏移?例如:+1小时
如果你要手动 设置(这更好,因为有时你不想使用本地时间,而是完全使用另一个时区),你要遵循的步骤就像我上面的脚本一样:
1. 获取经纪商时间的午夜(使用iTime或通过计算)
2.使用你的偏移量设置将其转换为本地午夜
3.3.通过iBarShift将本地午夜转换为你所选择的时间框架上的正确条形。
你完全正确地理解了我的意思--我正在寻找一种自动...的方法。我有几个重要的 指标(自制的--在不同的论坛帮助下),如果我选择手动方式--我可以改变它们的设置......那是很长的路--我太懒了。:)
非常感谢!
也许我找到了解决方案(在这个时候看起来它的工作 - 我已经尝试了2个不同的经纪人,我得到正确的时间)。
我相信问题来自于缺乏经验。
问: 请问如何在下面的结果中只保留小时1?
(实际上我发现如何在下面的结果中只保留 "1"--但我需要专业的方法,请)
(例如:结果:2017.02.2701:00:00--但我需要只保留:1 )。
非常感谢你所做的一切。
( 我将分享我是如何找到解决方案的。- 如果你不帮助我,我就无法找到解决方案 - 再次感谢你。)
我正在寻找下面的代码。
但我仍然需要测试它。
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
好吧,麦克斯考虑一下,如果你正在扫描一个模式,并且它形成了,那么你的触发器就会响起,无论时间戳是什么。
因此,触发器可以在不同的经纪商上有几个时间戳,但触发的确切时刻在所有经纪商上都是差不多的。
不完全是,但足够接近。