新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 90 1...838485868788899091929394959697...1953 新评论 Sile Si 2017.01.24 21:15 #891 Vitaly Muzichenko: 谢谢你,由于某些原因,这批货并不是这样的。double GetLotLastOrder(string sy="", int op=-1, int mn=-1) {double r=-1; if (sy=="0") sy=Symbol(); for (int i=0; i<OrdersTotal(); i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==sy || sy=="") { if (OrderType()>1 && OrderType()<6) { if (op<0 || OrderType()==op) { if (mn<0 || OrderMagicNumber()==mn) { if (r>OrderLots() || r==-1) { r=OrderLots(); }}}}}}} return(r);} 如何返回快照中第十四个卖出止损的手数= 0.03? Vitaly Muzichenko 2017.01.24 21:23 #892 Marina Korotkih:谢谢你,由于某些原因,这批货并不是这样的。double GetLotLastOrder(string sy="", int op=-1, int mn=-1) { if (sy=="0") sy=Symbol(); double r=MarketInfo(sy, MODE_MINLOT); for (int i=0; i<OrdersTotal(); i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==sy || sy=="") { if (OrderType()>1 && OrderType()<6) { if (op<0 || OrderType()==op) { if (mn<0 || OrderMagicNumber()==mn) { if (r>OrderLots()) { r=OrderLots(); }}}}}}} return(r);} 这是最低限度的,如果你需要最近的订单,那么我现在就做。 Vitaly Muzichenko 2017.01.24 21:29 #893 Vitaly Muzichenko: 这是最低限度的,如果你需要最近的订单,那么我现在就做。这里要找的是离价格最远的地段double GetLotLastOrder(string sy="", int op=-1, int mn=-1) { datetime t=0; double r=-1,l=0; if (sy=="0") sy=Symbol(); for (int i=0; i<OrdersTotal(); i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==sy || sy=="") { if (OrderType()>1 && OrderType()<6) { if (op<0 || OrderType()==op) { if (mn<0 || OrderMagicNumber()==mn) { if (r>OrderOpenPrice() || r==-1) { r=OrderOpenPrice(); l=OrderLots(); }}}}}}} return(l);} Alekseu Fedotov 2017.01.24 21:30 #894 Marina Korotkih:谢谢你,由于某些原因,这批货并不是这样的。double GetLotLastOrder(string sy="", int op=-1, int mn=-1) {double r=-1; if (sy=="0") sy=Symbol(); for (int i=0; i<OrdersTotal(); i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==sy || sy=="") { if (OrderType()>1 && OrderType()<6) { if (op<0 || OrderType()==op) { if (mn<0 || OrderMagicNumber()==mn) { if (r>OrderLots() || r==-1) { r=OrderLots(); }}}}}}} return(r);} 如何返回快照中第十四个卖出止损的手数= 0.03? 没有该函数工作正常,为什么返回值不是1和14个订单而是2?它是一个测试器吗? 对我来说,它工作正常。 Sile Si 2017.01.24 21:36 #895 Vitaly Muzichenko:这里要找的是离价格最远的地段 谢谢你,这很有意义。找到了,现在你可以找到你需要知道的一切了 ) Vitaly Muzichenko 2017.01.24 21:38 #896 Alekseu Fedotov:没有该函数工作正常,为什么返回值不是1和14个订单而是2?它是一个测试器吗? 对我来说,它工作正常。 你必须按价格排序,因为你不能按尺寸搜索,网格可能是混合的,你会找到最大的或最小的,但不是第一个也不是最后一个。 Vitaly Muzichenko 2017.01.24 21:41 #897 Marina Korotkih: 谢谢你,这很有意义。找到了,现在你可以找到你需要知道的一切了 )要了解一个订单或头寸的所有信息,最好是用票据来做if(OrderSelect(i, SELECT_BY_TICKET)) { // всё что угодно} Sile Si 2017.01.24 21:42 #898 Alekseu Fedotov:...为什么返回值不是1和14个订单而是2? 因为我是这样称呼的GetOrderOpenPrice(Symbol(),OP_SELLSTOP,_Magic) Sile Si 2017.01.24 21:53 #899 Vitaly Muzichenko:要想了解一个订单或头寸的全部细节,最好从票据上进行查询。if(OrderSelect(i, SELECT_BY_TICKET)) { // всё что угодно} 但要做到这一点,我们首先需要知道最后一个订单的票据14 所以顺序还是要先搜索,就像第一个函数中那样? 或者 ,只是 ,用 SELECT_BY_ POS 替换 S ELECT_BY_TICKET Vitaly Muzichenko 2017.01.24 22:01 #900 Marina Korotkih: 但为了做到这一点,你必须首先找出最后一笔订单的票据 14 所以顺序仍然需要像第一个函数中那样先搜索? 或者 ,只是 ,用 SELECT_BY_ POS 替换 S ELECT_BY_TICKET这取决于你需要检查什么。事实上,我们可以在这里找出一切,按价格选择订单,然后为它写出所需的参数,并返回一切。多使用一次循环并不是一个好主意,所以,最好在一个循环中实现所有的东西;在真实的交易中并不明显,但在测试器中的测试会运行很长时间。然而,这一切都取决于任务,有人为测试员写程序,有人为交易写程序,所以你可以使用不止一个周期。 P.S.如果专家顾问是一个pipsqueak,当然,最好不要使用单一周期) 1...838485868788899091929394959697...1953 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
谢谢你,由于某些原因,这批货并不是这样的。
double r=-1;
if (sy=="0") sy=Symbol();
for (int i=0; i<OrdersTotal(); i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==sy || sy=="") {
if (OrderType()>1 && OrderType()<6) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
if (r>OrderLots() || r==-1) {
r=OrderLots();
}}}}}}}
return(r);
}
如何返回快照中第十四个卖出止损的手数= 0.03?
谢谢你,由于某些原因,这批货并不是这样的。
if (sy=="0") sy=Symbol();
double r=MarketInfo(sy, MODE_MINLOT);
for (int i=0; i<OrdersTotal(); i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==sy || sy=="") {
if (OrderType()>1 && OrderType()<6) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
if (r>OrderLots()) {
r=OrderLots();
}}}}}}}
return(r);
}
这里要找的是离价格最远的地段
datetime t=0;
double r=-1,l=0;
if (sy=="0") sy=Symbol();
for (int i=0; i<OrdersTotal(); i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==sy || sy=="") {
if (OrderType()>1 && OrderType()<6) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
if (r>OrderOpenPrice() || r==-1) {
r=OrderOpenPrice();
l=OrderLots();
}}}}}}}
return(l);
}
谢谢你,由于某些原因,这批货并不是这样的。
double r=-1;
if (sy=="0") sy=Symbol();
for (int i=0; i<OrdersTotal(); i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==sy || sy=="") {
if (OrderType()>1 && OrderType()<6) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
if (r>OrderLots() || r==-1) {
r=OrderLots();
}}}}}}}
return(r);
}
如何返回快照中第十四个卖出止损的手数= 0.03?
没有该函数工作正常,为什么返回值不是1和14个订单而是2?
它是一个测试器吗?
对我来说,它工作正常。
这里要找的是离价格最远的地段
谢谢你,这很有意义。找到了,现在你可以找到你需要知道的一切了 )
没有该函数工作正常,为什么返回值不是1和14个订单而是2?
它是一个测试器吗?
对我来说,它工作正常。
谢谢你,这很有意义。找到了,现在你可以找到你需要知道的一切了 )
要了解一个订单或头寸的所有信息,最好是用票据来做
// всё что угодно
}
...为什么返回值不是1和14个订单而是2?
因为我是这样称呼的
要想了解一个订单或头寸的全部细节,最好从票据上进行查询。
// всё что угодно
}
但要做到这一点,我们首先需要知道最后一个订单的票据14
所以顺序还是要先搜索,就像第一个函数中那样?
或者 ,只是 ,用 SELECT_BY_ POS 替换 S ELECT_BY_TICKET
但为了做到这一点,你必须首先找出最后一笔订单的票据 14
所以顺序仍然需要像第一个函数中那样先搜索?
或者 ,只是 ,用 SELECT_BY_ POS 替换 S ELECT_BY_TICKET
这取决于你需要检查什么。事实上,我们可以在这里找出一切,按价格选择订单,然后为它写出所需的参数,并返回一切。
多使用一次循环并不是一个好主意,所以,最好在一个循环中实现所有的东西;在真实的交易中并不明显,但在测试器中的测试会运行很长时间。然而,这一切都取决于任务,有人为测试员写程序,有人为交易写程序,所以你可以使用不止一个周期。
P.S.如果专家顾问是一个pipsqueak,当然,最好不要使用单一周期)