新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 627 1...620621622623624625626627628629630631632633634...1953 新评论 Igor Makanu 2018.09.19 17:48 #6261 Sergey Likho:你能告诉我如何计算一项交易的抵押品吗? 尝试了两种方法 (0.1 * Ask*MarketInfo(Symbol(),MODE_LOTSIZE))/AccountInfoInteger(ACCOUNT_LEVERAGE) 而这个人 FreeMarginCheck=AccountFreeMarginCheck(Symbol(),OP_BUY,0.1); double val=AccountFreeMargin()-FreeMarginCheck; 如果我的存款货币是 美元,第一种在欧元兑日元上给出了奇怪的结果。我是否需要在配方中添加一些东西? 第二个也只起作用一次,有时它给出正确的值,有时它给出一些废话(这取决于存款)。第二种变体是计算定金的正确方法。 更确切地说,变量val显示的是下单后自由资金的价值,变量FreeMarginCheck显示的是定金本身的价值。 Sergey Likho 2018.09.19 17:55 #6262 Igor Makanu:第二个选项是计算保证金的正确方法,或者说你在下单后在val变量中得到自由资金的价值,而变量FreeMarginCheck是保证金本身的价值。你确定吗? 帐户自由边际检查 返回在当前账户中以当前价格打开指定订单后剩余的 自由资金数额。 那里也有一种微妙的东西。 如果柜台交易是开放的,即账户上有一个完整或不完整的锁,该函数可能会给出不正确的值。 Igor Makanu 2018.09.19 18:06 #6263 Sergey Likho:你确定吗?是的,你是对的,这完全正确。 返回当前账户中以当前价格打开指定订单后剩余的 自由资金数额。 关于未平仓的交易,你需要检查,我不记得了,但很可能是终端写的,应该与计算的数据一致:所有符号的每个方向的交易(买入/卖出)的总手数,然后调用每个符号 AccountFreeMarginCheck()在每个方向传递手数,并将这些结果相加。 今天的市场正在运作,很容易检查,就像这样 #property strict //+------------------------------------------------------------------+ void OnStart() { int i,ot,k=OrdersTotal(); double lot_buy=0.0,lot_sell=0.0; string sy=Symbol(); for(i=0; i<k; i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { ot=OrderType(); if(OrderSymbol()==sy) { if(ot==OP_BUY) lot_buy+=OrderLots(); if(ot==OP_SELL) lot_sell+=OrderLots(); } } } double MarginBUY = AccountFreeMargin()-AccountFreeMarginCheck(sy,OP_BUY,lot_buy); double MarginSELL = AccountFreeMargin()-AccountFreeMarginCheck(sy,OP_SELL,lot_sell); double MarginALL = MarginBUY+MarginSELL; Print("Залог BUY = ",MarginBUY); Print("Залог SELL = ",MarginSELL); Print("Залог ALL = ",MarginALL); } Anatolij Anufriev 2018.09.19 20:18 #6264 问候,你能告诉我这个功能有什么问题吗?该函数按时间执行交易暂停,参数为暂停开始和暂停结束。 该函数不是从经纪人的服务器上读取时间,而是从计算机上读取时间,尽管TimeCurrent 是规定的。一般来说,交易在暂停期间被关闭,即该功能不工作。 input bool p = true; // Trading pause on/off input string TimeStart = "23:59"; // Start pause input string TimeEnd = "06:15"; // End of pause int start() { //+----------------------------------------------------------------------------+ datetime StartPause,EndPause; // --- StartPause = StrToTime(TimeStart); EndPause = StrToTime(TimeEnd); // --- if((p && StartPause > EndPause && (TimeCurrent() > StartPause || TimeCurrent() < EndPause))) { Print(" Pause the EA "); return(0); } //+----------------------------------------------------------------------------+ Igor Makanu 2018.09.19 20:31 #6265 Anatolij Anufriev:问候,你能告诉我这个功能有什么问题吗?该函数按时间执行交易暂停,参数为暂停开始和暂停结束。 该函数不是从经纪人的服务器上读取时间,而是从计算机上读取时间,尽管TimeCurrent是规定的。一般来说,交易在暂停期间被关闭,这意味着该功能不工作。取消打印TimeStart和StrToTime(TimeStart)。 然后取消打印TimeCurrent()。 你的TimeStart不是完整的日期时间格式,也就是说,当你运行EA时,时间永远是当前的日、月、年,然后它就会改变? 而在全球范围内......确定交易 小时 和分钟应 与小时和分钟 的服务器时间相比较,你只比较服务器时间比指定时间长的事实。 SZZ:为了避免混淆,你可以把datetime看作是一个int,它就是一个int,比较2个datetime,你就是在比较2个int。浦发银行。 if((p && StartPause > EndPause && (TimeCurrent() > StartPause || TimeCurrent() < EndPause)))你的代码可能会工作,你应该这样试试。 if((p && StartPause > EndPause && (TimeCurrent() > StartPause && TimeCurrent() < EndPause))) 我通常这样计算时间。 int h = TimeHour(TimeCurrent())。int m = TimeMinute(TimeCurrent())。 然后将其与EA的设置 进行比较 跨平台智能交易系统: 时间过滤器 MQL5 编程基础:时间 Anatolij Anufriev 2018.09.19 22:10 #6266 Igor Makanu:谢谢,我会努力解决的,我只是个初学者),用&&选项代替||我还没有在网上试过,顺便说一下,在测试器中,这段代码是有效的,它从终端读取时间,在暂停期间没有关闭订单,但在网上则不同。 danil77783 2018.09.20 03:33 #6267 你好!在策略测试器中,终端无法启动。我设置了日期,例如(2017,04,01至2018,05,29),按开始,它立即给出了一个停止。在日志中,它说了以下内容。 TestGenerator:从2017.04.01到2018.05.29没有历史数据'EURUSD30'。 等任何一段。我的电脑在工作,我以为它可能没有足够的内存。在家里的电脑上也是如此,重启没有帮助,但可以运行一段时间。我已经从市场上下载了专家顾问,试用。如果有人知道原因,请告知? Igor Makanu 2018.09.20 03:58 #6268 danil77783:你好!在策略测试器中,终端无法启动。我设置了日期,例如(2017,04,01至2018,05,29),按开始,它立即给出一个停止。在日志中,它说了以下内容。TestGenerator:从2017.04.01到2018.05.29没有历史数据'EURUSD30'。 等任何一段。我的电脑在工作,我以为它可能没有足够的内存。在家里的电脑上也是如此,重启没有帮助,但可以运行一段时间。我已经从市场上下载了专家顾问,试用。如果我有什么想法,能否请您给我一个提示?我认为测试者说没有历史数据,按F2下载历史数据,然后重新启动终端 Roman Sharanov 2018.09.20 04:04 #6269 danil77783:你好!在策略测试器中,终端无法启动。我设置了日期,例如(2017,04,01至2018,05,29),按开始,它立即给出了一个停止。在日志中,它说了以下内容。TestGenerator:从2017.04.01到2018.05.29没有历史数据'EURUSD30'。 等任何一段。我的电脑在工作,我以为它可能没有足够的内存。在家里的电脑上也是如此,重启没有帮助,但可以运行一段时间。我已经从市场上下载了专家顾问,试用。如果我知道原因,请告知?没有历史数据 意味着什么吗? danil77783 2018.09.20 04:40 #6270 Igor Makanu:我想测试者是在告诉你没有历史数据,按F2下载历史数据,然后重新加载终端谢谢你!我将试一试。更新终端 是否对它有任何影响?无论它是否更新,尽管它自己会告诉你......。 1...620621622623624625626627628629630631632633634...1953 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
你能告诉我如何计算一项交易的抵押品吗?
尝试了两种方法
(0.1 * Ask*MarketInfo(Symbol(),MODE_LOTSIZE))/AccountInfoInteger(ACCOUNT_LEVERAGE)
而这个人
FreeMarginCheck=AccountFreeMarginCheck(Symbol(),OP_BUY,0.1);
double val=AccountFreeMargin()-FreeMarginCheck;
如果我的存款货币是 美元,第一种在欧元兑日元上给出了奇怪的结果。我是否需要在配方中添加一些东西?
第二个也只起作用一次,有时它给出正确的值,有时它给出一些废话(这取决于存款)。
第二种变体是计算定金的正确方法。 更确切地说,变量val显示的是下单后自由资金的价值,变量FreeMarginCheck显示的是定金本身的价值。
第二个选项是计算保证金的正确方法,或者说你在下单后在val变量中得到自由资金的价值,而变量FreeMarginCheck是保证金本身的价值。
你确定吗?
帐户自由边际检查
返回在当前账户中以当前价格打开指定订单后剩余的 自由资金数额。
那里也有一种微妙的东西。
如果柜台交易是开放的,即账户上有一个完整或不完整的锁,该函数可能会给出不正确的值。
你确定吗?
是的,你是对的,这完全正确。
返回当前账户中以当前价格打开指定订单后剩余的 自由资金数额。
关于未平仓的交易,你需要检查,我不记得了,但很可能是终端写的,应该与计算的数据一致:所有符号的每个方向的交易(买入/卖出)的总手数,然后调用每个符号
AccountFreeMarginCheck()在每个方向传递手数,并将这些结果相加。
今天的市场正在运作,很容易检查,就像这样
问候,你能告诉我这个功能有什么问题吗?该函数按时间执行交易暂停,参数为暂停开始和暂停结束。
该函数不是从经纪人的服务器上读取时间,而是从计算机上读取时间,尽管TimeCurrent 是规定的。一般来说,交易在暂停期间被关闭,即该功能不工作。
问候,你能告诉我这个功能有什么问题吗?该函数按时间执行交易暂停,参数为暂停开始和暂停结束。
该函数不是从经纪人的服务器上读取时间,而是从计算机上读取时间,尽管TimeCurrent是规定的。一般来说,交易在暂停期间被关闭,这意味着该功能不工作。
取消打印TimeStart和StrToTime(TimeStart)。
然后取消打印TimeCurrent()。
你的TimeStart不是完整的日期时间格式,也就是说,当你运行EA时,时间永远是当前的日、月、年,然后它就会改变?
而在全球范围内......确定交易 小时 和分钟应 与小时和分钟 的服务器时间相比较,你只比较服务器时间比指定时间长的事实。
SZZ:为了避免混淆,你可以把datetime看作是一个int,它就是一个int,比较2个datetime,你就是在比较2个int。
浦发银行。
你的代码可能会工作,你应该这样试试。
我通常这样计算时间。
int h = TimeHour(TimeCurrent())。
int m = TimeMinute(TimeCurrent())。
然后将其与EA的设置 进行比较
谢谢,我会努力解决的,我只是个初学者),用&&选项代替||我还没有在网上试过,顺便说一下,在测试器中,这段代码是有效的,它从终端读取时间,在暂停期间没有关闭订单,但在网上则不同。
你好!在策略测试器中,终端无法启动。我设置了日期,例如(2017,04,01至2018,05,29),按开始,它立即给出了一个停止。在日志中,它说了以下内容。
TestGenerator:从2017.04.01到2018.05.29没有历史数据'EURUSD30'。 等任何一段。我的电脑在工作,我以为它可能没有足够的内存。在家里的电脑上也是如此,重启没有帮助,但可以运行一段时间。我已经从市场上下载了专家顾问,试用。如果有人知道原因,请告知?
你好!在策略测试器中,终端无法启动。我设置了日期,例如(2017,04,01至2018,05,29),按开始,它立即给出一个停止。在日志中,它说了以下内容。
TestGenerator:从2017.04.01到2018.05.29没有历史数据'EURUSD30'。 等任何一段。我的电脑在工作,我以为它可能没有足够的内存。在家里的电脑上也是如此,重启没有帮助,但可以运行一段时间。我已经从市场上下载了专家顾问,试用。如果我有什么想法,能否请您给我一个提示?
我认为测试者说没有历史数据,按F2下载历史数据,然后重新启动终端
你好!在策略测试器中,终端无法启动。我设置了日期,例如(2017,04,01至2018,05,29),按开始,它立即给出了一个停止。在日志中,它说了以下内容。
TestGenerator:从2017.04.01到2018.05.29没有历史数据'EURUSD30'。 等任何一段。我的电脑在工作,我以为它可能没有足够的内存。在家里的电脑上也是如此,重启没有帮助,但可以运行一段时间。我已经从市场上下载了专家顾问,试用。如果我知道原因,请告知?
没有历史数据 意味着什么吗?
我想测试者是在告诉你没有历史数据,按F2下载历史数据,然后重新加载终端
谢谢你!我将试一试。更新终端 是否对它有任何影响?无论它是否更新,尽管它自己会告诉你......。