初学者的问题 MQL4 MT4 MetaTrader 4 - 页 120 1...113114115116117118119120121122123124125126127...261 新评论 novichok2018 2018.02.13 14:47 #1191 Ihor Herasko:是的,我可以看到这一点。而我在下面的帖子中看到了这个问题的答案https://www.mql5.com/ru/forum/160587/page115#comment_6521492。 换句话说,问题在于功能没有被划分为合乎逻辑的子任务。你把解析订单、决定交易行动和执行交易混为一谈。 这样的任务完全可以分三个阶段解决。 收集将由程序监测的订单信息。这只是订单评估的循环,你已经有了。这个循环的结果必须是订单的数组。交易信号的计算。计算结果是一个打开和/或关闭订单的命令。这取决于交易策略。以前,当没有枚举的时候,我使用的代码是:0-没有信号,1-打开买入,-1-打开卖出,2-关闭买入,-2-关闭卖出。执行一次交易操作。如果有一个交易信号,并且其中一个订单(第1点)适合它,就会进行一次交易操作。在某些情况下,我们甚至退出OnTick,以便继续下一个tick。嗯,谢谢你。至少很清楚该怎么做。我将尝试自己找出 "如何 "做这件事。虽然我对数组还不熟悉。无论如何,再次感谢你。 Rewerpool 2018.02.13 15:05 #1192 for(int i=OrdersTotal()-1; i>=0; i--){OrderSelect(i,SELECT_BY_POS)。如果(OrderMagicNumber()==Magic && OrderType()==OP_SELL)突破。警告是:必须检查'OrderSelect'的返回值 这个'OrderSelect'值还应该如何检查? 如果我这样做:j=OrderSelect();这是否正确? Alekseu Fedotov 2018.02.13 15:28 #1193 Rewerpool: for(int i=OrdersTotal()-1; i>=0; i--){OrderSelect(i,SELECT_BY_POS)。如果(OrderMagicNumber()==Magic && OrderType()==OP_SELL)突破。警告是:必须检查'OrderSelect'的返回值 这个'OrderSelect'值还应该如何检查? 如果我这样做:j=OrderSelect();这是否正确? if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) Rewerpool 2018.02.13 15:43 #1194 Alekseu Fedotov: 它不起作用!( Mickey Moose 2018.02.13 16:23 #1195 我已经写入文件,一切正常,但现在我如何保存数据,如 "eurusd" "1.2242"临时数据等? Konstantin Erin 2018.02.13 16:31 #1196 Mickey Moose:把它写入一个文件,一切都很好,但现在我如何疏通数据,例如 "eurusd""1.2242"临时数据等?string s=FileReadString(F1); // 读取文本文件的下一行 StringSplit(s, " , " ,a); // 将逗号分隔的元素分割成数组 datetime T1=StrToTime(a[4]); // 进一步,转换进行中。.. int ord=StrToInteger(a[8]); double Price=StrToDouble(a[12]); Ihor Herasko 2018.02.13 16:50 #1197 novichok2018:嗯,谢谢你。至少更清楚该怎么做了。我将尝试自己找出 "如何"。不过我对数组还不熟悉。总之,再次感谢。至少写一个区块,给我看看。在这种情况下,他们会进一步告诉你。 Alekseu Fedotov 2018.02.13 16:50 #1198 Rewerpool:没有帮助!( 仔细阅读,再次。 if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) 整个代码将看起来像这样 for(int i=OrdersTotal()-1; i>=0; i--) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if(OrderMagicNumber()==Magic && OrderType()==OP_SELL) { break; } } } Ihor Herasko 2018.02.13 16:53 #1199 Rewerpool:它不起作用!( 所以你没有做任何事情。你在上面写了。 if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) 而你没有检查就把它写出来了。不过,这样看起来更有可读性。 for (int i = OrdersTotal() - 1; i >= 0; --i) { if (!OrderSelect(i, SELECT_BY_POS)) continue; .... } Rewerpool 2018.02.13 17:18 #1200 @Ihor Herasko @Alekseu Fedotov 谢谢你!!!它的作用是这样的! 1...113114115116117118119120121122123124125126127...261 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
是的,我可以看到这一点。而我在下面的帖子中看到了这个问题的答案https://www.mql5.com/ru/forum/160587/page115#comment_6521492。 换句话说,问题在于功能没有被划分为合乎逻辑的子任务。你把解析订单、决定交易行动和执行交易混为一谈。
这样的任务完全可以分三个阶段解决。
嗯,谢谢你。至少很清楚该怎么做。我将尝试自己找出 "如何 "做这件事。虽然我对数组还不熟悉。无论如何,再次感谢你。
for(int i=OrdersTotal()-1; i>=0; i--)
{
OrderSelect(i,SELECT_BY_POS)。
如果(OrderMagicNumber()==Magic && OrderType()==OP_SELL)
突破。
警告是:必须检查'OrderSelect'的返回值
这个'OrderSelect'值还应该如何检查?
如果我这样做:j=OrderSelect();这是否正确?
for(int i=OrdersTotal()-1; i>=0; i--)
{
OrderSelect(i,SELECT_BY_POS)。
如果(OrderMagicNumber()==Magic && OrderType()==OP_SELL)
突破。
警告是:必须检查'OrderSelect'的返回值
这个'OrderSelect'值还应该如何检查?
如果我这样做:j=OrderSelect();这是否正确?
它不起作用!(
string s=FileReadString(F1); // 读取文本文件的下一行
StringSplit(s, " , " ,a); // 将逗号分隔的元素分割成数组
datetime T1=StrToTime(a[4]); // 进一步,转换进行中。..
int ord=StrToInteger(a[8]);
double Price=StrToDouble(a[12]);
嗯,谢谢你。至少更清楚该怎么做了。我将尝试自己找出 "如何"。不过我对数组还不熟悉。总之,再次感谢。
至少写一个区块,给我看看。在这种情况下,他们会进一步告诉你。
没有帮助!(
仔细阅读,再次。
整个代码将看起来像这样
它不起作用!(
所以你没有做任何事情。你在上面写了。
而你没有检查就把它写出来了。不过,这样看起来更有可读性。
@Ihor Herasko @Alekseu Fedotov
谢谢你!!!它的作用是这样的!