新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 519 1...512513514515516517518519520521522523524525526...1953 新评论 Artyom Trishkin 2018.04.06 18:46 #5181 PolarSeaman:我怎么知道在这个特定职位的历史中,有些是封闭的?我以 1.0手开仓,以0.5手平仓,损失10美元。 后来我又以5美元的利润平仓了0.25手。 我将以50美元的利润全部平仓。事实上,现在我有50美元的利润。在计算当前利润时,如何关闭-10美元和+5美元?以55美元的利润收盘请看位置的评论(在mql4中)--已关闭的部分有一个剩余部分的票据(到#1234556789),剩余部分有一个已关闭的票据(从#123456788)--我不记得哪里有差距--你自己看吧 PolarSeaman 2018.04.06 19:40 #5182 Artyom Trishkin:看看位置的评论(在mql4中)--关闭的部分有一张剩余的票(to#1234556789),剩余的部分有一张关闭的票(from#123456788)--我不记得空格在哪里了--你自己看吧我将平仓 的评论与开仓的票据进行比较,返回 "0.0"。 double prof_cl_pos(string sy="0", int op=-1, int mn=-1) { datetime ta; int i, k=OrdersHistoryTotal(); double profit_=0; string comment=""; if (sy=="" || sy=="0") sy=Symbol(); for (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) { if (OrderSymbol()==sy) { if (OrderType()==OP_BUY || OrderType()==OP_SELL) { if (op<0 || OrderType()==op) { if (mn<0 || OrderMagicNumber()==mn) { // comment=OrderComment(); if (ticket_op_pos(Symbol(), -1,mn)==OrderComment()) profit_=OrderProfit(); } } } } } } return(profit_); } int ticket_op_pos(string sy="", int op=-1, int mn=-1) { datetime o; double l=-1; string comment=""; int ticket, i, k=OrdersTotal(); if (sy=="0") sy=Symbol(); for (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==sy || sy=="") { if (OrderType()==OP_BUY || OrderType()==OP_SELL) { if (op<0 || OrderType()==op) { if (mn<0 || OrderMagicNumber()==mn) { ticket=OrderTicket(); } } } } } } return(ticket); } Ihor Herasko 2018.04.06 19:53 #5183 PolarSeaman:将平仓的 评论与开仓的票据进行比较,返回 "0.0"。应从评论中突出票据,即应删除 "从#"和 "到#"等额外字符。这里没有做。 PolarSeaman 2018.04.06 20:00 #5184 Ihor Herasko:从评论中,你需要强调票据,即删除多余的字符,如 "从#"和 "到#"。这里没有这样做。 完全正确!你如何删掉 "to #"? Maxim Kuznetsov 2018.04.06 20:04 #5185 PolarSeaman: 正是如此!你如何削减 "到#"? 找到字符/子串#的出现,并(可选择)确保其前面是 "从 "或 "到"。把剩下的部分转换为长的 在5e中,有一个基本的regexp - 这将更容易 PolarSeaman 2018.04.06 20:13 #5186 Maxim Kuznetsov: 查找字符/子串的出现 # 用什么找? Artyom Trishkin 2018.04.06 20:22 #5187 PolarSeaman: 我怎样才能找到它呢?网站搜索不起作用吗?你不是在页面的顶部有文件吗? Документация по MQL5: Строковые функции / StringSubstr www.mql5.com [in] Длина извлекаемой подстроки. Если значение параметра равно -1 либо параметр не задан, то будет извлекаться подстрока, начиная с указанной позиции и до конца строки. PolarSeaman 2018.04.06 20:32 #5188 Artyom Trishkin:网站搜索不起作用吗?你不是在页面的顶部有文件吗?谢谢,我做了这个。 comment=OrderComment(); substr = StringSubstr(comment, 4, 9);//пропускаю "to #" беру цифры if (ticket_op_pos(Symbol(), -1,mn)==substr) 但搜索历史功能开始返回未结头寸 的当前利润 double prof_cl_pos(string sy="0", int op=-1, int mn=-1) { datetime ta; int i, k=OrdersHistoryTotal(); double profit_=0; string comment=""; string substr=""; if (sy=="" || sy=="0") sy=Symbol(); for (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) { if (OrderSymbol()==sy) { if (OrderType()==OP_BUY || OrderType()==OP_SELL) { if (op<0 || OrderType()==op) { if (mn<0 || OrderMagicNumber()==mn) { comment=OrderComment(); substr = StringSubstr(comment, 4, 9); if (ticket_op_pos(Symbol(), -1,mn)==substr) profit_=OrderProfit(); } } } } } } return(profit_); } Maxim Kuznetsov 2018.04.06 21:15 #5189 > 谢谢,我就是这样做的。 不要再这样做了:-)在处理未定义的字符串时,你不能依赖片段的长度或开始。 有一个不错的StringFind()函数--搜索 "#"或 "从#"。 ps/ 你也应该使用单一的大小写,可以是大写也可以是小写。不幸的是,在评论中没有标记的协议,所以有可能一些服务器会说 "FROM #"(大写字母)。 特别是一些把[sl]和一些(sl)在止损时的评论结束。而且评论的大小是有限制的,顺便说一下。诸如此类,不一而足。 Vitaly Muzichenko 2018.04.06 21:30 #5190 这样的建设有什么危害? datetime tm1 = D'09.04.2018'; long tm2 = TimeCurrent(); if(tm1 > tm2) Print("Работает"); 还是把datetime 改为长类型更好? 1...512513514515516517518519520521522523524525526...1953 新评论 原因: 取消 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我怎么知道在这个特定职位的历史中,有些是封闭的?
我以 1.0手开仓,以0.5手平仓,损失10美元。 后来我又以5美元的利润平仓了0.25手。 我将以50美元的利润全部平仓。事实上,现在我有50美元的利润。
在计算当前利润时,如何关闭-10美元和+5美元?以55美元的利润收盘
请看位置的评论(在mql4中)--已关闭的部分有一个剩余部分的票据(到#1234556789),剩余部分有一个已关闭的票据(从#123456788)--我不记得哪里有差距--你自己看吧
看看位置的评论(在mql4中)--关闭的部分有一张剩余的票(to#1234556789),剩余的部分有一张关闭的票(from#123456788)--我不记得空格在哪里了--你自己看吧
我将平仓 的评论与开仓的票据进行比较,返回 "0.0"。
将平仓的 评论与开仓的票据进行比较,返回 "0.0"。
应从评论中突出票据,即应删除 "从#"和 "到#"等额外字符。这里没有做。
从评论中,你需要强调票据,即删除多余的字符,如 "从#"和 "到#"。这里没有这样做。
正是如此!你如何削减 "到#"?
把剩下的部分转换为长的
在5e中,有一个基本的regexp - 这将更容易
查找字符/子串的出现 #
我怎样才能找到它呢?
网站搜索不起作用吗?你不是在页面的顶部有文件吗?
网站搜索不起作用吗?你不是在页面的顶部有文件吗?
谢谢,我做了这个。
但搜索历史功能开始返回未结头寸 的当前利润
> 谢谢,我就是这样做的。
不要再这样做了:-)在处理未定义的字符串时,你不能依赖片段的长度或开始。
有一个不错的StringFind()函数--搜索 "#"或 "从#"。
ps/ 你也应该使用单一的大小写,可以是大写也可以是小写。不幸的是,在评论中没有标记的协议,所以有可能一些服务器会说 "FROM #"(大写字母)。特别是一些把[sl]和一些(sl)在止损时的评论结束。而且评论的大小是有限制的,顺便说一下。诸如此类,不一而足。
这样的建设有什么危害?
还是把datetime 改为长类型更好?