//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 28.11.2006 |//| Описание : Возвращает количество ордеров. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любой ордер) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+int NumberOfOrders(string sy="", int op=-1, int mn=-1) {
int i, k=OrdersTotal(), ko=0, ot;
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
ot=OrderType();
if (ot>1 && ot<6) {
if ((OrderSymbol()==sy || sy=="") && (op<0 || ot==op)) {
if (mn<0 || OrderMagicNumber()==mn) ko++;
}
}
}
}
return(ko);
}
1.我们需要从代码中删除&&OrderSymbol()==Symbol()。
2.需要将出价和要价正常化a。
3.最好不要把滑点设置为10个点,而是动态地计算它。例如,如果一个黄金订单,这个工具每刻度线传输50点,那么10点的滑动将导致重新报价。因此,最好是计算最小刻度线的大小并乘以这个10。
4.你必须在你的代码中插入错误处理。否则,在失败的情况下,你将不明白为什么订单没有被关闭的原因。
1.你应该从代码中删除&&OrderSymbol()==Symbol()。
2.需要使买入和卖出正常化。
3.滑点最好是动态计算,而不是10个点。例如,如果一个关于黄金的订单,这个工具每格移动50点,那么10点的滑移将导致你大量的重新报价。因此,最好是计算最小刻度线的大小并乘以这个10。
4.你必须在你的代码中插入错误处理。否则,在失败的情况下,你将不明白为什么订单没有关闭的原因。
非常感谢,我将在测试器中尝试,但关于订单的修改,你有什么建议吗?
退货会寄到哪里?
很明显,到了0线,等待打勾。
这里也很清楚--停止
在这里呢?
订单数的值是ko,那么下一个函数是否应该用ko来写?返回在这里做什么?return()不会把任何人送到任何地方。
返回 操作符终止当前函数并将控制权返回给调用程序。使用return(expression); 可以终止当前函数并发送结果。运算符表达式用圆括号括起来,不能包含赋值运算符。
return()不会把任何人送到任何地方。
返回 操作符终止当前函数并将控制权返回给调用程序。使用return(expression); 可以终止当前函数并发送结果。运算符表达式用圆括号括起来,不能包含赋值运算符。
那么,如果不满足条件,如何阻止EA的工作是正确的呢?不是为了让它睡觉,而是为了完全停止它。
你说的 "让它睡觉 "是什么意思,你说的 "停止 "是什么意思?
"让人睡觉 "是什么意思?"停止 "又是什么意思?
放置睡眠 - 放置睡眠,然后它将尝试再次启动。
停止 - 完全停止,使专家顾问停止工作(改变其 "面貌")。
例如,专家顾问是在Eurobucks之下,但它被扔在了EuroJPY上。它检查符号,如果不匹配,它就会发出警报,并在手动重启之前不再尝试工作。
放置睡眠 - 放置睡眠,然后它将尝试再次启动。
停止 - 完全停止,使专家顾问停止工作(改变其 "面貌")。
例如,专家顾问是在Eurobucks之下,但它被扔在了EuroJPY上。它检查符号,如果不匹配,它就会发出警报,在手动重启之前不会再尝试工作。
为什么这么复杂?
在start()函数中足以提供条件处理
在这种情况下,如果你把EA放在错误的工具上,你将被警报淹没,直到你自己禁用它(EA)。你也可以添加一个警报器的声音,然后你可以肯定地关闭它。