如何从其他货币对导入买入/卖出价? - 页 3 123456 新评论 Seng Joo Thio 2019.05.07 04:44 #21 HosseinKOGO:问题出在哪里?既然你的Ask2和Bid2都是0,为什么不在其中一个后面加上这一行? Print("MarketInfo Error = ", GetLastError()); 然后看看是否有什么有用的信息? William Roeder 2019.05.07 15:11 #22 HosseinKOGO: 我正在尝试将GBPAUD作为我的开放图表,将GBPUSD作为我的第二对。你是否为你的 "第二对"、第二个TF调用了download_history? HosseinKOGO 2019.05.09 17:43 #23 William Roeder:你是否为你的 "第二对 "即第二个TF调用了download_history? 这是我的全局区域。extern string SecondPair; double Ask2,Bid2; #define HR2400 PERIOD_D1 * 60 // 86400 = 24 * 3600 int TimeOfDay(datetime when=0){ if(when == 0) when = TimeCurrent(); return( int(when % HR2400 )); } datetime DateOfDay(datetime when=0){ if(when == 0) when = TimeCurrent(); return( when - TimeOfDay(when) ); } #define SYMBOL string #define THIS_SYMBOL "" bool download_history(ENUM_TIMEFRAMES period=PERIOD_CURRENT){ return download_history(_Symbol, period); } bool download_history( SYMBOL symbol=THIS_SYMBOL, ///< The symbol required. ENUM_TIMEFRAMES period=PERIOD_CURRENT /**< The standard timeframe.*/){ if(symbol == THIS_SYMBOL) symbol = _Symbol; if(period == PERIOD_CURRENT) period = _Period; datetime today = DateOfDay(); ResetLastError(); datetime other = iTime(symbol, period, 0); if(_LastError == 0 && today == DateOfDay(other)) return true; if(_LastError != ERR_HISTORY_WILL_UPDATED && _LastError != ERR_NO_HISTORY_DATA ) Print(StringFormat("iTime(%s,%i) Failed: %i", symbol, period,_LastError)); return false; } . . . 这里是我的启动函数。 download_history(SecondPair,PERIOD_H4); while(!download_history(SecondPair,PERIOD_H4) ){ Sleep(1000); RefreshRates(); } Ask2=SymbolInfoDouble(SecondPair,SYMBOL_ASK); Bid2=SymbolInfoDouble(SecondPair,SYMBOL_BID); Comment(Ask2,Bid2); . . .其中,我把GBPUSD作为第二对的输入,并在GBPAUD图表上做这个回测。 HosseinKOGO 2019.05.09 18:06 #24 Seng Joo Thio:既然你的Ask2和Bid2都是0,为什么不在其中一个后面加上这一行? 然后看看是否有任何有用的信息? 我在定义Ask2,Bid2之后,在我的启动函数中加入了你提到的这一行,当时我已经禁用了下面这一行,以便让蜡烛开始,图表继续进行。while(!download_history(SecondPair,PERIOD_H4) ){ Sleep(1000); RefreshRates(); }错误是4106,意思是 "未知符号"。 然后我把下面这一行也禁用了。 download_history(SecondPair,PERIOD_H4); 起初得到的错误是4066(要求的历史数据处于更新状态),然后在后面的回测 中变成了4106。 Seng Joo Thio 2019.05.12 05:13 #25 HosseinKOGO: 我在定义了Ask2,Bid2之后,在我的启动函数中加入了你提到的这一行,当时我已经禁用了下面这一行,以便让蜡烛开始,图表继续进行。错误是4106,意思是 "未知符号"。 然后我也禁用了下面这一行。 一开始得到的错误是4066(要求的历史数据处于更新状态),然后在后面的回测 中变成4106。我怀疑你的符号名称不只是 "GBPUSD"......它可能在某个地方有额外的字符......你有没有试过这个。 Print("Symbol Name = ", Symbol()); 之前,以验证符号名称只是六个大写字母? HosseinKOGO 2019.05.12 11:36 #26 Seng Joo Thio:我怀疑你的符号名称不只是 "GBPUSD"......它可能在某个地方有额外的字符......你有没有试过这个。 之前,以验证符号名称只是六个大写字母?我的符号()函数 显示 "GBPAUD",因为我把它放在GBPAUD图表上。 尽管我使用的是正常的模拟账户进行回溯测试,但确切的说是6个大写字母。然而,我已经尝试了你的建议,得到了预期的结果。 当我编译代码时,我也有一个警告。"隐式枚举转换",我在下面强调了这一点。这到底是什么意思? #define HR2400 PERIOD_D1 * 60 // 86400 = 24 * 3600 int TimeOfDay(datetime when=0){ if(when == 0) when = TimeCurrent(); return( int(when % HR2400 )); } datetime DateOfDay(datetime when=0){ if(when == 0) when = TimeCurrent(); return( when - TimeOfDay(when) ); } #define SYMBOL string #define THIS_SYMBOL "" bool download_history(ENUM_TIMEFRAMES period=PERIOD_CURRENT){ return download_history(_Symbol, period); } bool download_history( SYMBOL symbol=THIS_SYMBOL, ///< The symbol required. ENUM_TIMEFRAMES period=PERIOD_CURRENT /**< The standard timeframe.*/){ if(symbol == THIS_SYMBOL) symbol = _Symbol; if(period == PERIOD_CURRENT) period = _Period; datetime today = DateOfDay(); ResetLastError(); datetime other = iTime(symbol, period, 0); if(_LastError == 0 && today == DateOfDay(other)) return true; if(_LastError != ERR_HISTORY_WILL_UPDATED && _LastError != ERR_NO_HISTORY_DATA ) Print(StringFormat("iTime(%s,%i) Failed: %i", symbol, period,_LastError)); return false; } Seng Joo Thio 2019.05.12 12:56 #27 我想我找到了你得到零的原因......。我把这几行放在一个脚本中,并在我的MT4上运行它。 for (int i=SymbolsTotal(false)-1; i>=0; i--) { string SName = SymbolName(i,false); Ask2=SymbolInfoDouble(SName,SYMBOL_ASK); Bid2=SymbolInfoDouble(SName,SYMBOL_BID); Print (SName, " Ask = ", Ask2, ", Bid = ", Bid2); } 我意识到,对于不在我的市场观察中的符号,Ask2和Bid2将是零......但一旦我把它们纳入我的市场观察,我就可以得到它们的买入和卖出。没有必要为历史数据而烦恼。 HosseinKOGO 2019.05.12 17:55 #28 Seng Joo Thio:我想我找到了你得到零的原因......。我把这几行放在一个脚本中,并在我的MT4上运行它。 我意识到,对于不在我的市场观察中的符号,Ask2和Bid2将是零......但一旦我把它们纳入我的市场观察,我就可以得到它们的买入和卖出。没有必要为历史数据而烦恼。我的MT4左上角 的市场观察窗口里有这些符号。 但是,如果你的意思是我应该把它们包括在我的代码中,你是如何通过代码包括它们的?(如果我理解错了,请澄清我,因为我不是那么专业。) Seng Joo Thio 2019.05.12 19:26 #29 HosseinKOGO:我的MT4左上角 的市场观察窗口里有这些符号。 但是,如果你的意思是我应该把它们包括在我的代码中,你是如何通过代码包括它们的?(如果我理解错了,请澄清我,因为我不是那么专业。) 不是代码。既然它们已经出现在你的市场观察窗口,事情就变得更加奇怪了。你从哪个经纪商那里下载的mt4?我想安装它来测试。 rabada 2019.05.12 20:16 #30 非常感谢你的反应。事实上,我并不是编码员,但我曾尝试过编码一些EA。我的活动与创造性和系统有关,所以我构思了600-700个想法来制作EA,并将它们构建到现在。我只是会编码简单的EA,我不习惯你的非正常状态的编码......我已经把这些代码放到我的EA中,但是它只返回了这个错误: 2019.05.06 15:37:56.586 2018.01.02 00:00:07 MyEA!GBPAUD,H4: iTime(GBPUSD,240) 失败: 0我尝试将GBPAUD作为我的开盘图,GBPUSD作为我的第二个货币对。问题出在哪里? 123456 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
问题出在哪里?
既然你的Ask2和Bid2都是0,为什么不在其中一个后面加上这一行?
然后看看是否有什么有用的信息?
你是否为你的 "第二对"、第二个TF调用了download_history?
你是否为你的 "第二对 "即第二个TF调用了download_history?
这里是我的启动函数。
其中,我把GBPUSD作为第二对的输入,并在GBPAUD图表上做这个回测。
既然你的Ask2和Bid2都是0,为什么不在其中一个后面加上这一行?
然后看看是否有任何有用的信息?
错误是4106,意思是 "未知符号"。
然后我把下面这一行也禁用了。
download_history(SecondPair,PERIOD_H4);起初得到的错误是4066(要求的历史数据处于更新状态),然后在后面的回测 中变成了4106。我在定义了Ask2,Bid2之后,在我的启动函数中加入了你提到的这一行,当时我已经禁用了下面这一行,以便让蜡烛开始,图表继续进行。
错误是4106,意思是 "未知符号"。
然后我也禁用了下面这一行。
一开始得到的错误是4066(要求的历史数据处于更新状态),然后在后面的回测 中变成4106。我怀疑你的符号名称不只是 "GBPUSD"......它可能在某个地方有额外的字符......你有没有试过这个。
之前,以验证符号名称只是六个大写字母?
我怀疑你的符号名称不只是 "GBPUSD"......它可能在某个地方有额外的字符......你有没有试过这个。
之前,以验证符号名称只是六个大写字母?
我的符号()函数 显示 "GBPAUD",因为我把它放在GBPAUD图表上。
尽管我使用的是正常的模拟账户进行回溯测试,但确切的说是6个大写字母。然而,我已经尝试了你的建议,得到了预期的结果。
当我编译代码时,我也有一个警告。"隐式枚举转换",我在下面强调了这一点。这到底是什么意思?
我想我找到了你得到零的原因......。我把这几行放在一个脚本中,并在我的MT4上运行它。
我意识到,对于不在我的市场观察中的符号,Ask2和Bid2将是零......但一旦我把它们纳入我的市场观察,我就可以得到它们的买入和卖出。没有必要为历史数据而烦恼。
我想我找到了你得到零的原因......。我把这几行放在一个脚本中,并在我的MT4上运行它。
我意识到,对于不在我的市场观察中的符号,Ask2和Bid2将是零......但一旦我把它们纳入我的市场观察,我就可以得到它们的买入和卖出。没有必要为历史数据而烦恼。
我的MT4左上角 的市场观察窗口里有这些符号。
但是,如果你的意思是我应该把它们包括在我的代码中,你是如何通过代码包括它们的?(如果我理解错了,请澄清我,因为我不是那么专业。)
我的MT4左上角 的市场观察窗口里有这些符号。
但是,如果你的意思是我应该把它们包括在我的代码中,你是如何通过代码包括它们的?(如果我理解错了,请澄清我,因为我不是那么专业。)