如何了解市场是否关闭?(mql4) - 页 3 123456789 新评论 Andrey F. Zelinsky 2015.02.21 08:45 #21 所有这些检查的实际需要是什么?为什么要检查,例如,专家是否被允许交易?谁是目标?跌倒的用户?贸易许可的标志在终端中被设置一次,仅此而已。为什么我们要在每次打勾时检查呢?还是每隔N秒检查一次?专家顾问没有别的事可做吗?为什么要检查市场是否开放?市场是否在它想开的时候开?或者有些工具今天在16点交易,明天在14点交易,这种混乱的情况一直在发生?如果交易时间表是已知的,并且从未改变,那么,如果市场是开放的,你为什么要检查每一个刻度或每N秒?还有这个关于发送交易请求 以了解市场是否开放的有趣提示?对于那些喜欢笑的人?还是为了一个满意的用户?没有勾选,就没有交易。 Sergey Eremin 2015.02.21 08:54 #22 abolk:所有这些检查的实际需要是什么?为什么要检查,例如,专家是否被允许交易?谁是目标?跌倒的用户?贸易许可的标志在终端中被设置一次,仅此而已。为什么我们要在每次打勾时检查呢?还是每隔N秒检查一次?专家顾问没有别的事可做吗?为什么要检查市场是否开放?市场是否在它想开的时候开?或者有些工具今天在16点交易,明天在14点交易,这种混乱的情况一直在发生?如果交易时间表是已知的,并且从未改变,为什么我们要每隔一格或每隔N秒检查一次,如果市场是开放的?还有这个发送交易请求 看市场是否开放的把戏?没有勾选 - 没有交易。任务是不同的。对于所有我不能说,但我的任务是为一个EA的不同符号开立订单,其中一些有不同的交易时段(我的意思是有可能使用账户中的任何一组符号)。因此,所有的检查都不是在OnTick而是在OnTimer中完成的。我在上一页描述了我的版本。尽管从原则上讲,这是一种 "不打勾--不交易 "的检查。 [删除] 2015.02.21 09:36 #23 abolk: ......市场是否在它想开的时候开?或者有些工具的交易从今天下午4点开始,从明天下午2点开始,一直都是一团糟? ... 它发生了...有不同的节日...不同的国家。外汇成功了,但黄金和白银却没有。 而如果你有机会在外汇上面使用期货,那么提前收盘,以及超过限额的截止日期和其他花招都会发生。 Andrey F. Zelinsky 2015.02.21 09:42 #24 papaklass:这里是四个人的另一个选择。bool flag; //-----------------------------------------------------------------------------+ bool RealSymbol(string str) { return(MarketInfo(str, MODE_BID) != 0); }//----------------------------------------------------------------------------+ void init() { flag = RealSymbol(Symbol()); return; }//----------------------------------------------------------------------------+ void deinit() { return; }//----------------------------------------------------------------------------+ void start() { if (!flag) { return; } //дальше Ваш рабочий код return; }//----------------------------------------------------------------------------+惊人的选择 -- 主要是在开市前运行顾问 -- 如果你不关闭它,不超载,不改变时间框架 -- 那么顾问将永远不会工作,因为标志将始终处于 "不 "的状态。p.s. 有趣的建议主题p.s.2.特别奇怪的是,当他们在一个封闭的市场中这样说时MarketInfo(Symbol(), MODE_BID)给出了零分。 [删除] 2015.02.21 09:54 #25 检查刻度线之间的滞后,并在此基础上推断出平仓交易是一个错误的决定。 Sergey Eremin 2015.02.21 10:22 #26 avtomat:检查刻度线之间的滞后,并在此基础上推断出平仓交易是一个错误的决定。 然而。 1)如果答案不是 "交易是否关闭",而是 "是否有可能在这个价格打开交易"(在当前条件下)。 2) 事先知道,如果一个报价超过xx分钟,那么服务器在试图打开一个订单时,保证会返回关闭的报价。 那么它将是可以接受的。当然,是IMHO。 Ruslan Khasanov 2015.02.21 10:43 #27 关于MT5的这个问题, 已经有一些讨论。对我来说,正确的选择是使用SymbolInfoSessionTrade() 来确定是否有交易。//+------------------------------------------------------------------+ //|Открыта ли торговая сессия | //| Copyright,Sergeev| //| https://login.mql5.com/ru/users/sergeev| //+------------------------------------------------------------------+ bool IsTradeSessionOpen() { MqlDateTime _DateTime; datetime _TimeCurrent=TimeTradeServer(_DateTime); // проверяем время торгов по инструменту datetime _TradeEnd=(datetime)SymbolInfoInteger(_Symbol,SYMBOL_EXPIRATION_TIME); if(_TimeCurrent>_TradeEnd && _TradeEnd>0) return(false); datetime _TradeStart=(datetime)SymbolInfoInteger(_Symbol,SYMBOL_START_TIME); if(_TimeCurrent<_TradeStart && _TradeStart>0) return(false); // проверяем сессии инструмента datetime _DayStart=_TimeCurrent/(60*60*24); _DayStart*=(60*60*24); // начало текущего дня datetime _sec=_TimeCurrent-_DayStart; // число секунд от начала дня for(int i=0; i<10; i++) // подразумеваем, что админ сделал не более 10 сессий в сутки { datetime _from,_to; if(!SymbolInfoSessionTrade(_Symbol,(ENUM_DAY_OF_WEEK)_DateTime.day_of_week,i,_from,_to)) break; // данные сессии if(_sec>=_from && _sec<=_to) return(true); } return(false); } Как узнать, что по выходным нет торговли? www.mql5.com Пытаюсь дать понять советнику, что по выходным дням торговать не нужно :). - - Категория: общее обсуждение Bahrom Juraev 2015.02.21 16:17 #28 Kino:将专家顾问切换到OnTimer()模式,现在当市场关闭时,它不理解这一点,并试图进行交易,一般来说,它与服务器联系,当然会收到错误和堵塞日志。GetLastError() = 市场已关闭。还有什么条件可以用来检查市场是否关闭或在周末?持续时间=(以毫秒为单位的设定值,如6小时=1000*60*60*6)。如果(GetLastError()==132(市场已关闭) ) 睡眠(持续时间)。 Alexander 2015.12.15 00:10 #29 有一次我用SymbolInfoSessionTrade() 和Quote做实验,结果发现这些函数的数据只与现实近似对应,在某些情况下并不对应。也许几种检查的结合会给交易是否结束的问题一个明确的答案? SymbolInfoSessionTrade - Документация на MQL4 docs.mql4.com SymbolInfoSessionTrade - Документация на MQL4 [删除] 2015.12.15 08:37 #30 哇,那是一个很大的文本。MarketInfo(Symbol(),MODE_TRADEALLOWED) 123456789 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
所有这些检查的实际需要是什么?
为什么要检查,例如,专家是否被允许交易?谁是目标?跌倒的用户?贸易许可的标志在终端中被设置一次,仅此而已。为什么我们要在每次打勾时检查呢?还是每隔N秒检查一次?专家顾问没有别的事可做吗?
为什么要检查市场是否开放?市场是否在它想开的时候开?或者有些工具今天在16点交易,明天在14点交易,这种混乱的情况一直在发生?如果交易时间表是已知的,并且从未改变,那么,如果市场是开放的,你为什么要检查每一个刻度或每N秒?
还有这个关于发送交易请求 以了解市场是否开放的有趣提示?对于那些喜欢笑的人?还是为了一个满意的用户?
没有勾选,就没有交易。
所有这些检查的实际需要是什么?
为什么要检查,例如,专家是否被允许交易?谁是目标?跌倒的用户?贸易许可的标志在终端中被设置一次,仅此而已。为什么我们要在每次打勾时检查呢?还是每隔N秒检查一次?专家顾问没有别的事可做吗?
为什么要检查市场是否开放?市场是否在它想开的时候开?或者有些工具今天在16点交易,明天在14点交易,这种混乱的情况一直在发生?如果交易时间表是已知的,并且从未改变,为什么我们要每隔一格或每隔N秒检查一次,如果市场是开放的?
还有这个发送交易请求 看市场是否开放的把戏?
没有勾选 - 没有交易。
任务是不同的。对于所有我不能说,但我的任务是为一个EA的不同符号开立订单,其中一些有不同的交易时段(我的意思是有可能使用账户中的任何一组符号)。
因此,所有的检查都不是在OnTick而是在OnTimer中完成的。我在上一页描述了我的版本。尽管从原则上讲,这是一种 "不打勾--不交易 "的检查。
......市场是否在它想开的时候开?或者有些工具的交易从今天下午4点开始,从明天下午2点开始,一直都是一团糟?
...
它发生了...有不同的节日...不同的国家。外汇成功了,但黄金和白银却没有。
而如果你有机会在外汇上面使用期货,那么提前收盘,以及超过限额的截止日期和其他花招都会发生。
这里是四个人的另一个选择。
惊人的选择 -- 主要是在开市前运行顾问 -- 如果你不关闭它,不超载,不改变时间框架 -- 那么顾问将永远不会工作,因为标志将始终处于 "不 "的状态。
p.s. 有趣的建议主题
p.s.2.特别奇怪的是,当他们在一个封闭的市场中这样说时
MarketInfo(Symbol(), MODE_BID)
给出了零分。
检查刻度线之间的滞后,并在此基础上推断出平仓交易是一个错误的决定。
检查刻度线之间的滞后,并在此基础上推断出平仓交易是一个错误的决定。
1)如果答案不是 "交易是否关闭",而是 "是否有可能在这个价格打开交易"(在当前条件下)。
2) 事先知道,如果一个报价超过xx分钟,那么服务器在试图打开一个订单时,保证会返回关闭的报价。
那么它将是可以接受的。当然,是IMHO。
关于MT5的这个问题, 已经有一些讨论。
对我来说,正确的选择是使用SymbolInfoSessionTrade() 来确定是否有交易。
将专家顾问切换到OnTimer()模式,现在当市场关闭时,它不理解这一点,并试图进行交易,一般来说,它与服务器联系,当然会收到错误和堵塞日志。GetLastError() = 市场已关闭。还有什么条件可以用来检查市场是否关闭或在周末?
持续时间=(以毫秒为单位的设定值,如6小时=1000*60*60*6)。
如果(GetLastError()==132(市场已关闭) ) 睡眠(持续时间)。
有一次我用SymbolInfoSessionTrade() 和Quote做实验,结果发现这些函数的数据只与现实近似对应,在某些情况下并不对应。
也许几种检查的结合会给交易是否结束的问题一个明确的答案?
哇,那是一个很大的文本。
MarketInfo(Symbol(),MODE_TRADEALLOWED)