if(count>20) // если количество тиков больше начинаем работу ... и дальше код эксперта { if(Bars<801 || (IsTradeAllowed()==false)) //--- Проверим достаточна ли в истории баров для анализа и разрешение торговли Print("Нет достаточного количества баров или торговля на текущем инструменте запрещена"); return; }
一旦你清理了你的代码,它对你来说将更有可读性,更不用说需要了解你的逻辑的其他人了。这就是所有的虫子都会被看到的地方。
现在去掉多余的成对的大括号,将其余部分正常地排列成块,你会发现你的逻辑有缺陷。
哪些是多余的?
你的代码中有很多不必要的大括号--用样式器处理 代码,你会立即看到多余的空对大括号。
已完成
由
更好的方法是:如果(count<=20)count++; - 如果你只需要到21岁,为什么还要继续计算?
2.{
if(Bars<801 || (IsTradeAllowed()==false)) //--- Проверим достаточна ли в истории баров для анализа и разрешение торговли
Print("Нет достаточного количества баров или торговля на текущем инструменте запрещена");
return;
}
这里是假山。这将只检查条数并在count>20时打印,其余的代码将在count<=20时工作。
3.
if(OrderSymbol()==Symbol() && OrderType()<2)
continue;
如果你只需要考虑市场的(这也是你对进一步代码的期望),你根本不需要继续。
4.
{
dummy=(OrderClose(OrderTicket(),OrderLots(),Bid,0,White));
{
if((dummy==true) && ((OrderSelect(i,SELECT_BY_POS,MODE_TRADES))==false))
PlaySound("music");
Sleep(20000);
PlaySound("music");
Sleep(20000);
PlaySound("music");
Sleep(20000);
dummy=false;
ExpertRemove();
}
}
它关闭了一个订单,并消除了自己?如果有更多的人呢?而我们有整整一分钟的时间来睡觉。
我没有看上面的代码,还没有地方可以测试。
1 好的,我会修正它
2 这是不对的,以下区块在count<20 时不应该工作
3 好的,我会改正的
4 是的,这是一分钟,但只有在当前符号没有更多市场订单的情况下才应启动它。我试图通过订单选择 的负面结果来实现它,这就是为什么我们应该在某个地方设置返回,但在void OnTick()中的返回看起来并不那么好。同样,如果我们有大量的所有符号的订单,OrdersTotal()会给出错误的结果。
2是不行的,当count<20 时,以下的块不应该工作
然后我们需要在区块后添加else return。
4 是的,是一分钟,但只有在当前符号没有更多的市场订单时,才应启动它。我曾试图通过订单选择 的负面结果来实现它,这就是为什么我们应该在某个地方设置返回,而在void OnTick()中的返回看起来并不是很好。同样,如果我们在所有符号上有很多订单,OrdersTotal()会给出错误的结果。
为什么我们需要三种声音?
好吧,我们可以分两个阶段做所有事情:在第一个循环中,你关闭订单,在下一个循环中,你重新计算所有市场订单,检查是否还有剩余的订单,如果没有,就播放扇形音乐。
但我仍然不明白,在订单结束后,音乐有什么诀窍。好吧,你可以向日记本打印,或向邮件发送信息,或向你的智能手机发送通知,但为什么你要把EA变成一个音乐盒?然后你应该在else return 块之后添加一个return。
为什么我们需要三倍的声音?
但你可以分两步完成所有工作:在第一个循环中,你关闭订单,在下一个循环中,你重新计算所有市场订单,检查是否有未关闭的订单,如果没有,就播放大合唱。
我仍然不明白,当订单被关闭时,音乐的诀窍是什么。好吧,我们可以把它打印到杂志上,把信息发送到邮件上或通知到智能手机上,但为什么我们要把我们的EA变成一个音乐盒呢?你如何分离这些周期?
我如何将声音绑定到最后关闭的订单? 因为如果没有订单,专家顾问就不会触发声音。
最后一件事:我对现在的音乐很满意
我如何分离周期?
如何将声音与最后关闭的声音绑定? 因为如果没有订单,专家顾问将无法工作。
最后,音乐变体暂时很适合我。
你说的 "分开 "是什么意思?我们不需要分离任何东西。 我们只需要两个循环(它们几乎是一样的),但一个有OrderClose(),另一个有订单的计数器。顺序选择 标准是一样的。如果计数器为=0,所有的订单都已经结束,我们可以播放音乐。
我还注意到,该条件
{
if((Bid>=ma1-X*Point && Bid<ma1) || (Bid<=ma1+X*Point && Bid>ma1))
{
{y=true;}
}
}
它似乎与某个顺序无关,那么它在循环中是为了什么?
我会在闭合循环之前检查它。