初学者的问题 MQL5 MT5 MetaTrader 5 - 页 1446 1...143914401441144214431444144514461447144814491450145114521453...1503 新评论 Evgeny Dyuka 2023.02.15 08:46 #14451 Alexey Viktorov #:1.如果没有收到底座手柄,则无需关闭底座。2.如果收到 INVALID_HANDLE,为什么还要继续执行程序?我认为在这种情况下最好中断程序,返回我现在反复尝试打开和关闭一个不存在的数据库,却无法得到错误的打印输出。我认为在向数据库创建查询的过程中会出现打印错误,因为数据库无法打开。 我将制作一个最小的测试智能交易系统,每秒更新数据库中的记录。让我们在 10 个交易对上运行它,一切就会清楚了。我将把它发布在这里... Alexey Viktorov 2023.02.15 08:53 #14452 Evgeny Dyuka #: 我将制作一个最小的测试智能交易系统,每秒更新数据库中的记录。在 10 个货币对上运行它,一切都会很清楚。我会把它发布在这里。 很有意思。我等着呢... Evgeny Dyuka 2023.02.15 11:12 #14453 Alexey Viktorov #:真有意思我会等着... 这里有一个专家。它创建了一个基数(如果还不存在的话),每秒向其中写入一次当前时间。 代码中没有 Print()。 我在 10 对数据上运行了它,结果出现了错误: CS 2 11:44:36.561 Test_DB (EURUSD,M10) database error, database is locked CS 2 11:55:27.018 Test_DB (BTCUSD,M10) database error, database is locked CS 2 11:55:28.026 Test_DB (BTCUSD,M10) database error, database is locked CS 2 11:55:49.177 Test_DB (TRXUSD,M10) database error, database is locked CS 2 11:55:51.183 Test_DB (EURUSD,M10) database error, database is locked CS 2 11:55:53.182 Test_DB (TRXUSD,M10) database error, database is locked 如果出现错误,您必须关闭并重新启动 MT5,然后所有 EA 开始同步工作。 最好是: 1.了解如何摆脱此错误。 2. 发明一种模板机制,在基础不可用的情况下排队。 我通过添加带有随机时间的 Sleep() 解决了第 2 点,但它看起来像一根拐杖。更新: 我重新上传了文件,第一个文件出现了错误。 附加的文件: Test_DB_1.mq5 3 kb Alexey Viktorov 2023.02.15 13:16 #14454 Evgeny Dyuka #:这里有一位专家。它创建了一个基数(如果还不存在的话),每秒向其中写入一次当前时间。 代码中没有 Print()。 我在 10 对时间对上运行了它,结果出现了错误:如果出现错误,您应该关闭并重启 MT5,然后所有智能交易系统开始同步运行。最好是: 1.了解如何摆脱此错误。 2. 发明一种模板机制,在基础不可用的情况下排队。我通过添加带有随机时间的 Sleep() 解决了第 2 点,但它看起来像一根拐杖。更新: 我重新上传了文件,第一个文件出现了错误。 唉,我的知识还不够。只知道打印出了一个错误 DatabaseExecute(db, sql); 在创建查询之前,无法检查可用性。 数据库可以打开,但无法创建查询。 Nikolai Kalinin 2023.02.16 01:21 #14455 服务器上没有打开订单,没有止损和止盈,启用了算法模式,设置命令通过,但日志是无声的CTrade 类。测试仪在真实交易中是静默的。需要检查什么? Vladimir Deryagin 2023.02.16 05:59 #14456 mwwm CTrade 类。测试仪在真实交易中是静默的。要检查什么? 终端日志 Nikolai Kalinin 2023.02.17 00:57 #14457 Vladimir Deryagin #:终端日志 我猜我打开了日志,但无法计算批次。我不明白为什么它不愿意进行实际计算? void OpenBuy(const int index,double sl,double tp) { sl=m_symbol.NormalizePrice(sl); tp=m_symbol.NormalizePrice(tp); double long_lot=0.0; if(InpLotOrRisk==risk) { long_lot=m_money.CheckOpenLong(m_symbol.Ask(),sl); if(InpPrintLog) Print(__FILE__," ",__FUNCTION__,", OK: ","sl=",DoubleToString(sl,m_symbol.Digits()), ", CheckOpenLong: ",DoubleToString(long_lot,2), ", Balance: ", DoubleToString(m_account.Balance(),2), ", Equity: ", DoubleToString(m_account.Equity(),2), ", FreeMargin: ", DoubleToString(m_account.FreeMargin(),2)); if(long_lot==0.0) { ArrayRemove(SPosition,index,1); if(InpPrintLog) Print(__FILE__," ",__FUNCTION__,", ERROR: ","CMoneyFixedMargin.CheckOpenLong returned the value of 0.0"); return; } } Aleksandr Slavskii 2023.02.17 02:00 #14458 mwwm #:我猜我打开了日志,但它无法计算批次。我不明白为什么它不愿意进行实际计算? 因为没有日志,所以可能会有更多的猜测。 作为一个选项,在进行交叉盘交易时,如果在市场概览中没有选择与存款货币相同的货币对,则不会进行交易。 例如,我们交易 EURJPY,入金货币为美元,则在市场概览中必须显示 EURUSD 和 USDJPY。 Nikolai Kalinin 2023.02.17 02:54 #14459 Aleksandr Slavskii #:没有日志,所以可能会有更多倍的猜测。作为一个选项,在进行交叉盘交易时,如果在市场概览中没有选择存款货币对,则不会进行交易。例如,我们交易 EURJPY,入金货币为美元,则在市场概览中必须显示 EURUSD 和 USDJPY。 以美元为单位的账户,交易 XAUUSD Vyacheslav Pronenko 2023.02.17 17:04 #14460 大家好。在 MQL5 中,我无法使用缓冲区在第一个条形图上绘制一个箭头。 在 MQL4 中,我的做法如下: 声明一个全局变量 double XX[]; 写入 init: SetIndexBuffer(0,XX); SetIndexStyle(0,DRAW_ARROW); SetIndexArrow(0,108); 在 "计算 "中,我写道 XX[1]=High[1];我在蜡烛图 1 上得到一个绘制的箭头。 我在 MQL5 中也是这样做的: 声明一个全局变量 double XX[]; 写入 init: SetIndexBuffer(0,XX,INDICATOR_DATA); PlotIndexSetInteger(0,PLOT_ARROW,108); 在 Oncalculate 中,我写道 XX[1]=high[1]; - 它不会绘制 XX[1]=iHigh(Symbol(),PERIOD_CURRENT,1); - 也不绘制。 当然,即使在标题中也有说明: #property indicator_buffers 1 #property indicator_plots 1 #property indicator_type1 DRAW_ARROW #property indicator_color1 clrGreen #property indicator_width1 1 我做错了什么,请告诉我 !!!! Questions from Beginners MQL5 mt5重新启动后指标会自动退出,不知道为什么? 从理论到实践 1...143914401441144214431444144514461447144814491450145114521453...1503 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
1.如果没有收到底座手柄,则无需关闭底座。
2.如果收到 INVALID_HANDLE,为什么还要继续执行程序?我认为在这种情况下最好中断程序,返回
我现在反复尝试打开和关闭一个不存在的数据库,却无法得到错误的打印输出。我认为在向数据库创建查询的过程中会出现打印错误,因为数据库无法打开。
我将制作一个最小的测试智能交易系统,每秒更新数据库中的记录。在 10 个货币对上运行它,一切都会很清楚。我会把它发布在这里。
很有意思。我等着呢...
真有意思我会等着...
这里有一个专家。它创建了一个基数(如果还不存在的话),每秒向其中写入一次当前时间。
代码中没有 Print()。
我在 10 对数据上运行了它,结果出现了错误:
如果出现错误,您必须关闭并重新启动 MT5,然后所有 EA 开始同步工作。
最好是:
1.了解如何摆脱此错误。
2. 发明一种模板机制,在基础不可用的情况下排队。
我通过添加带有随机时间的 Sleep() 解决了第 2 点,但它看起来像一根拐杖。
更新: 我重新上传了文件,第一个文件出现了错误。
这里有一位专家。它创建了一个基数(如果还不存在的话),每秒向其中写入一次当前时间。
代码中没有 Print()。
我在 10 对时间对上运行了它,结果出现了错误:
如果出现错误,您应该关闭并重启 MT5,然后所有智能交易系统开始同步运行。
最好是:
1.了解如何摆脱此错误。
2. 发明一种模板机制,在基础不可用的情况下排队。
我通过添加带有随机时间的 Sleep() 解决了第 2 点,但它看起来像一根拐杖。
更新: 我重新上传了文件,第一个文件出现了错误。
唉,我的知识还不够。只知道打印出了一个错误
DatabaseExecute(db, sql);
在创建查询之前,无法检查可用性。
数据库可以打开,但无法创建查询。
终端日志
终端日志
我猜我打开了日志,但无法计算批次。我不明白为什么它不愿意进行实际计算?
我猜我打开了日志,但它无法计算批次。我不明白为什么它不愿意进行实际计算?
因为没有日志,所以可能会有更多的猜测。
作为一个选项,在进行交叉盘交易时,如果在市场概览中没有选择与存款货币相同的货币对,则不会进行交易。
例如,我们交易 EURJPY,入金货币为美元,则在市场概览中必须显示 EURUSD 和 USDJPY。
没有日志,所以可能会有更多倍的猜测。
作为一个选项,在进行交叉盘交易时,如果在市场概览中没有选择存款货币对,则不会进行交易。
例如,我们交易 EURJPY,入金货币为美元,则在市场概览中必须显示 EURUSD 和 USDJPY。
以美元为单位的账户,交易 XAUUSD
大家好。在 MQL5 中,我无法使用缓冲区在第一个条形图上绘制一个箭头。
在 MQL4 中,我的做法如下:
声明一个全局变量 double XX[];
写入 init:
SetIndexBuffer(0,XX);
SetIndexStyle(0,DRAW_ARROW);
SetIndexArrow(0,108);
在 "计算 "中,我写道
XX[1]=High[1];我在蜡烛图 1 上得到一个绘制的箭头。
我在 MQL5 中也是这样做的:
声明一个全局变量 double XX[];
写入 init:
SetIndexBuffer(0,XX,INDICATOR_DATA);
PlotIndexSetInteger(0,PLOT_ARROW,108);
在 Oncalculate 中,我写道
XX[1]=high[1]; - 它不会绘制
XX[1]=iHigh(Symbol(),PERIOD_CURRENT,1); - 也不绘制。
当然,即使在标题中也有说明:
#property indicator_buffers 1
#property indicator_plots 1
#property indicator_type1 DRAW_ARROW
#property indicator_color1 clrGreen
#property indicator_width1 1
我做错了什么,请告诉我 !!!!