如何指代一个特定的时间 - 页 4 12345 新评论 Simon Gniadkowski 2012.03.27 22:35 #31 Agent86: 你好 谢谢你的答复 我确实读了你关于时间范围或范围/过滤器的帖子,我理解了结论,但不完全理解方程式。 根据你的回答,我不得不假设我不明白如何创建一个表达式,以正确的形式比较类似if(Time[1] == 7:15)的东西,因为我不明白你发布的方程式。 你需要阅读所写的内容并弄清楚......如果你不理解一个函数,就去找它并阅读它,直到你理解它。 WHR 发布的代码是非常简单的数学 ......唯一你可能不熟悉的是% ......它并不意味着百分比 ......查一查,你可以在这里找到它。 https://docs.mql4.com/basis/operations/math Agent86 2012.03.28 01:10 #32 RaptorUK: 你真的需要开始学习你在文档中的方法 . . 进入任何使用TimeFrame的函数,你会看到timeframe枚举 . . . 它链接到这里。 时间框架枚举,这将告诉你Period_H1是一个60的值 . . . 换句话说,是60分钟 .. . 60分钟*60=秒 ...... 数据时间是以秒为单位的。 你的编码是行不通的 ......你的 time_select 不是 数据时间 ......记住,什么是数据时间? 从文档中 ......"数据时间类型(整数,代表从1970年1月1日午夜开始经过的秒数)。" 如果你想要一个表示早上7:15的数据时间,它必须是1970年1月1日到今天早上7:15所经过的秒数。 你所计算的是从午夜到今天早上7点15分的秒数,而这不是一个日期时间。 我知道这不是一个日期时间,我想如果我理解了PERIOD_H1的确切含义,我也会知道。 我现在明白了,我必须从1970年1月1日转换为秒。 好的,谢谢 Agent86 2012.03.28 01:26 #33 RaptorUK: 你需要阅读所写的内容并弄清楚......如果你不理解一个函数,就去找它并阅读它,直到你理解它。 WHR 发布的代码是非常简单的数学 ......唯一你可能不熟悉的是% ......它并不意味着百分比 ......查一查,你可以在这里找到它。 https://docs.mql4.com/basis/operations/math 我确实明白,%并不意味着百分比。 我不明白86400,也不明白为什么要用这个。 我只是想明白了这一点==一天有多少秒,谢谢 Agent86 2012.03.29 00:22 #34 谢谢大家 我继续研究这个问题,了解了得出某一天午夜的各种方法。 然后按照建议的一些其他方法来计算18小时x3600,我看到是一小时的秒数乘以18,得到HR1800。 我想我应该能够从这一点上做出一些不同的时间代码,包括一些特定时间的时间代码,而不仅仅是一个范围。 再次感谢 Agent86 2012.03.30 22:10 #35 以下是我的一些进展,可选择的时间和/或时间范围 虽然不完整,也很粗糙,但至少我现在明白了所有的帖子,谢谢大家。 //+------------------------------------------------------------------+ //| 15min_straddle_timer.mq4 | //| Agent86 15 straddle timer | //| | //+------------------------------------------------------------------+ #property copyright "Agent86" //---- input parameters extern double TakeProfit=20.0; extern double Lots=0.1; extern double StopLoss=10.0; extern int MagicNumber=1586; //Time Select and Range select IE: extHour=7; and extMinutes=15; means 7:15am //Note using the 24hour clock means extHour=13; means 1:00pm fyi extern int extHour=7; extern int extMinutes=15; //++++ These are adjusted for 5 digit brokers. int pips2points; // slippage 3 pips 3=points 30=points double pips2dbl; // Stoploss 15 pips 0.0015 0.00150 int Digits.pips; // DoubleToStr(dbl/pips2dbl, Digits.pips) // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { if (Digits == 5 || Digits == 3) { // Adjust for five (5) digit brokers. pips2dbl = Point*10; pips2points = 10; Digits.pips = 1; } else { pips2dbl = Point; pips2points = 1; Digits.pips = 0; } // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { datetime now = Time[0], bod = now - now % 86400, Time_Select = bod + extHour*3600+extMinutes, HR1800 = bod + 18*3600, //I'll make extern for this too HR2100 = bod + 21*3600; //and this if (Time[1] == Time_Select) { double Low_Mark = Low[1] - 20*pips2dbl, High_Mark = High[1] + 20*pips2dbl; Print (Low[1], " = Low ", Low_Mark," = Low_Mark"); Print (TimeToStr(Time[1])," Low =", Low[1], " High =", High[1]); } { } //if (Time[1] >= HR1800 && Time[1] < HR2100) return(0); } //+------------------------------------------------------------------+ Simon Gniadkowski 2012.03.30 22:28 #36 Agent86: 以下是我的一些进展,可选择的时间和/或时间范围 虽然不完整,也很粗糙,但至少我现在明白了所有的帖子,谢谢大家。 然而,Time_Select 是不正确的。 Agent86 2012.03.31 01:17 #37 是的,谢谢,我看到了 ,我在发帖后马上想到了这个问题,但离开去吃晚饭了, 。 Time_Select = bod + extHour*3600 + extMinutes*60, 我知道我最终可以弄清楚如何简单地使用一个实际的用户输入的7:15或一些这样的时间,但看到我所寻找的结果还是很高兴。 一次一个函数 的理解,我想我需要努力,我可能在学习语法时塞进了太多的信息,没有很好地通过每一个字典函数和主题来真正使事情变得简单。 总之经过这段时间的努力,我终于掌握了时间,包括管理自己的时间,能够更好地学习mql。 再次感谢大家 Agent86 2012.03.31 01:48 #38 为什么我不能只用这个来选择时间,我是不是把它搞得更复杂了? datetime var1=StrToTime("7:15"); if(Time[1] == var1) { } 这有什么问题吗? Simon Gniadkowski 2012.03.31 08:57 #39 Agent86: 是的,谢谢,我看到了 我发完帖子后马上就想到了,但我去吃晚饭了,笑。 :-) Agent86 2012.04.01 13:26 #40 有人认为以这种方式使用StrToTime进行时间和跨期选择有什么问题吗? 请指教,谢谢 //+------------------------------------------------------------------+ //| straddle_with_timerange.mq4 | //| Agent86's Candle Straddle with timer | //| | //+------------------------------------------------------------------+ #property copyright "Agent86" //---- input parameters extern double TakeProfit=20.0; extern double Lots=0.1; extern double StopLoss=10.0; extern int MagicNumber=1586; extern string Straddle_Candle="7:15"; //select your straddle candle extern string StartTime="7:15"; //select your start time range extern string EndTime="17:00"; //select your end time range //++++ These are adjusted for 5 digit brokers. int pips2points; // slippage 3 pips 3=points 30=points double pips2dbl; // Stoploss 15 pips 0.0015 0.00150 int Digits.pips; // DoubleToStr(dbl/pips2dbl, Digits.pips) // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { if (Digits == 5 || Digits == 3) { // Adjust for five (5) digit brokers. pips2dbl = Point*10; pips2points = 10; Digits.pips = 1; } else { pips2dbl = Point; pips2points = 1; Digits.pips = 0; } // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { datetime Candle_Select = StrToTime(Straddle_Candle), Start_Time = StrToTime(StartTime), End_Time = StrToTime(EndTime); if (Time[1] == Candle_Select) { double Low_Mark = Low[1] - 20*pips2dbl, High_Mark = High[1] + 20*pips2dbl; Print (Low[1], " = Low ", Low_Mark," = Low_Mark"); Print (TimeToStr(Time[1])," Low =", Low[1], " High =", High[1]); } return(0); } //+------------------------------------------------------------------+ 12345 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
你好
谢谢你的答复
我确实读了你关于时间范围或范围/过滤器的帖子,我理解了结论,但不完全理解方程式。
根据你的回答,我不得不假设我不明白如何创建一个表达式,以正确的形式比较类似if(Time[1] == 7:15)的东西,因为我不明白你发布的方程式。
你真的需要开始学习你在文档中的方法 . .
进入任何使用TimeFrame的函数,你会看到timeframe枚举 . . . 它链接到这里。 时间框架枚举,这将告诉你Period_H1是一个60的值 . . . 换句话说,是60分钟 .. . 60分钟*60=秒 ...... 数据时间是以秒为单位的。
你的编码是行不通的 ......你的 time_select 不是 数据时间 ......记住,什么是数据时间? 从文档中 ......"数据时间类型(整数,代表从1970年1月1日午夜开始经过的秒数)。" 如果你想要一个表示早上7:15的数据时间,它必须是1970年1月1日到今天早上7:15所经过的秒数。
你所计算的是从午夜到今天早上7点15分的秒数,而这不是一个日期时间。
我知道这不是一个日期时间,我想如果我理解了PERIOD_H1的确切含义,我也会知道。
我现在明白了,我必须从1970年1月1日转换为秒。
好的,谢谢
你需要阅读所写的内容并弄清楚......如果你不理解一个函数,就去找它并阅读它,直到你理解它。 WHR 发布的代码是非常简单的数学 ......唯一你可能不熟悉的是% ......它并不意味着百分比 ......查一查,你可以在这里找到它。 https://docs.mql4.com/basis/operations/math
我不明白86400,也不明白为什么要用这个。
我只是想明白了这一点==一天有多少秒,谢谢
我继续研究这个问题,了解了得出某一天午夜的各种方法。
然后按照建议的一些其他方法来计算18小时x3600,我看到是一小时的秒数乘以18,得到HR1800。
我想我应该能够从这一点上做出一些不同的时间代码,包括一些特定时间的时间代码,而不仅仅是一个范围。
再次感谢
虽然不完整,也很粗糙,但至少我现在明白了所有的帖子,谢谢大家。
以下是我的一些进展,可选择的时间和/或时间范围
虽然不完整,也很粗糙,但至少我现在明白了所有的帖子,谢谢大家。
,我在发帖后马上想到了这个问题,但离开去吃晚饭了,
。 我知道我最终可以弄清楚如何简单地使用一个实际的用户输入的7:15或一些这样的时间,但看到我所寻找的结果还是很高兴。
一次一个函数 的理解,我想我需要努力,我可能在学习语法时塞进了太多的信息,没有很好地通过每一个字典函数和主题来真正使事情变得简单。
总之经过这段时间的努力,我终于掌握了时间,包括管理自己的时间,能够更好地学习mql。
再次感谢大家
这有什么问题吗?
是的,谢谢,我看到了
我发完帖子后马上就想到了,但我去吃晚饭了,笑。
请指教,谢谢