[存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. - 页 578

 
lottamer:

你需要在一行中插入HAVE未平仓交易的条款(一个,没有任何主力),例如,平均线的交叉点。

发现这个

==============================================

int start()

{

for(int i=0; i<OrdersTotal(); i++)

{

如果((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true))

PlaySound("alert.wav")。

return(0);

}}

==============================================

有一个开放的位置,但没有声音。

你能告诉我什么是错的吗?

或者说,写条件是多么容易。

如果MA5穿过MA10,并且有一个开放的位置--关闭该位置。

这似乎是需要无效的地方....


看看是否允许MT在绞盘中使用声音,以及声音 文件夹中是否有文件。但在bstrom市场上,sn将作为一个闹钟工作。
 
rigonich:

看看是否允许MT在绞盘中使用声音,以及声音 文件夹中是否有文件。但在bstrom市场上,sn将作为一个闹钟工作。


没有,虽然我是个初学者,但我不犯这种错误。:))

其他专家像夜莺一样唱歌!在同一个航站楼里。

 
Desead:

该死的,这就是我的问题。 我想知道,如果我只需要在卸载机器人时删除整个网格,我可以如何绕过它......我在这里甚至想不出任何办法 :(

在调用deinit之前,将相同的条件放在你调用deinit的条件上。
 
lottamer:


不,我是个初学者,但我不犯这种错误。:))

其他专家像夜莺一样唱歌!在同一个航站楼里。


如果它是一个脚本--你需要启用专家顾问的交易权限,而且在你抛出它的窗口中,不应该有其他工作的脚本或专家顾问,此外,如果在任何工具上有开放的交易,它将"叮 "一声
 
rigonich:

在调用deinit的相同条件下,在调用deinit之前放置一个deinit。


因此,当我从图表中删除一个机器人 时,就会调用deinit--我无法用其他方式追踪这个条件.....,也许写一个单独的脚本来删除所有剩余的挂件更容易,没有其他办法。

顺便说一下,关于这个问题的另一个想法。

我想我已经解决了删除未决订单的问题。我在一个单独的函数中确定 "必要的"(要删除的)订单的数量,调用这个函数,然后在while中设置条件(总量>0),然后循环删除for(int i=Total-1;i<=0l; i--),再次计算"必要的 "和删除尝试的计数器,当达到指定水平时退出while这样一来,一切都被删除了。

如果其中一个订单在计数时刻后因任何原因消失,这里可能会出现无限循环。

 
rigonich:

如果是一个脚本 -- 你需要启用专家顾问的交易权限。


这是个EA。

当然,所有的权限都已启用(还有其他的EA--它们也在工作--但不是在同一时间)。

代码中有一个问题。那里有问题.....

 
Desead:

谢谢你的答复。我不需要所有的,只有bylimit和selllimit,我也只把它们,魔术师也是到处存在的一样。我看了你给的代码,那里有很多东西,我坐着看不懂,总的来说,如果我自己不能解决问题,我就得把你的脚本拆得更彻底,没有别的办法,它不删除,就这样(

我在想一件事。我只在一个地方设置了所有待处理机器人的删除--当我卸载机器人时,它将被放在deinit中。也许这部分有某种时间限制? 当只有少数订单被删除时,一切都很好,但当我卸下整个网格时,会发生什么情况呢--大约10个订单总是被留下,而且不能选择手动清理它。

我的脚本 使用这个 库。负责删除其中的订单的函数。

/*int fClose_AllOrders (double& fd_Pribul,         // Возвращаемый профит закрытых ордеров
                        int fi_Type = -1,          // тип закрываемых ордеров: -1 - все; -2 - рыночные; 7 - отложенные или OrderType()
                        int fi_NBars_Life = 0,     // минимальная "жизнь" ордера в барах на fi_Period: 0 - параметр не учитывается
                        int fi_Period = 0,         // Период
                        int fi_OrderProfit = 0)*/  // Идентификатор профитности ордера: > 0 - профитный; < 0 - лоссовый
                                     // Функция закрытия "своих" ордеров по признаку

你需要一些知识才能把功能从库中扯出来,但使用整个库对一个新手来说是很容易接受的。

 
rigonich:

好哇,看来我已经解决了删除订单的问题。我在一个单独的函数中计算了 "必要的"(要删除的)订单的数量,调用这个函数,然后在while中设置一个条件(总数>0),然后循环删除for(int i=Total-1 ;i<=0l; i--),同样,计算"必要的 " 的函数,在达到指定水平时退出while 的删除尝试计数器。这样一来,一切都被删除了。
当使用循环时,你应该始终小心:把迭代次数和退出条件放在EA被禁止交易的时候。
 
TarasBY:
在使用循环时,你应该始终保持谨慎:在禁止EA交易时,放一个迭代计数器和一个退出条件。


谢谢你的提示。我已经忘记了不允许交易时的退出条件。
 
Desead:

该死的,这就是我的问题。 我想知道如何绕过它,如果我只需要在卸载机器人时删除整个网格......我甚至想不出有什么办法来处理它 :(

一个脚本可以通过 加载到deinit()中,以图。

 // 7.9. Функция загружает на указанный график скрипт по его имени.
 void ServiceLoadScript(int    hwndChart,    // Системный дескриптор окна графика, куда загружается скрипт.
                        string szNameScript, // Имя загружаемого скрипта.
                        int    bOK);         // Подтверждение запуска скрипта, при наличии диалогового окна свойств скрипта. Скрипт может не иметь окна свойств!
                                             // При использовании функции для загрузки скрипта из скрипта на текущем графике параметр не работает из-за
                                             // невозможности одновременной работы двух скриптов на одном графике.
                                             // TRUE - автонажатие на кнопку "OK" разрешено, FALSE - автонажатие на кнопку "OK" запрещено.

用删除所有订单的功能。

P.S. 用一些或其他的成本和能量,你可以解决一个交易者的任何异国情调的欲望,但你是否需要这种 "异国情调",有时...:)))