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

 
lottamer:

论坛成员你好。

我决定为自己写一个EA。 我正在读一个关于mql4的教程,因为我做MT4交易。有趣的是,从本教程中下载的mqh文件在MetaEditor 5中(自动)打开(我也安装了Mt5)!这时,我就可以在MetaEditor 5中使用了。这是否意味着它们将不能与Mt4一起使用?


试着编译它,你会发现。
 
rigonich:


这不是一个函数,而是一种比较非归一化数字的方法。它们不能相互比较,但用一个减去另一个的结果可以与零比较。

而我的支票是这样的。

你说得很对,但你做的是 "你的方式"...而且它更有文采(毕竟)。

//+------------------------------------------------------------------+ 
 double ND(double nd){return(NormalizeDouble(nd,Digits));}
//+------------------------------------------------------------------+ 
if (ND (price - OrderOpenPrice()) != 0.0 || ND (SL - OrderStopLoss()) != 0.0 || ND (TP - OrderTakeProfit()) != 0.0 || Expiration != OrderExpiration())
{OrderModify( int ticket, double price, double stoploss, double takeprofit, datetime expiration, color arrow_color=CLR_NONE);}

...尽管我不同意所有的比较条件。你可以在这里 阅读有关条件。

 
rigonich:

试着编译一下,你就会发现。

是的...你只需要用4Editor打开这些mqh文件...
 
Desead:

需要使价格图表正常化,任何货币对都可以选择。我需要它作为一个指标。我试着用当前值除以前一个值--我得到的是1左右的某种震荡器。我想出了一个主意,我应该把图表从绝对值转换成相对值,即在这种情况下,我将能够看到报价的百分比变化。它已被实施。它已经更好了,而且实际上是我们所需要的。然而,我的最终愿望是在[0:1]范围内将报价规范化。顺便说一下,这是我需要的东西,但是是资产阶级的--我想要同样的俄语版本:http://people.revoledu.com/kardi/tutorial/Similarity/Normalization.html

我已经厌倦了与之斗争。 我不能正常地删除所有待处理的订单,我只是不知道该怎么办。

我甚至在循环中加入了FOR WHILE,被删除的订单仍然存在,但我仍然没有删除它们。我有许多待处理的订单要删除,即大约20个,可能是一些复杂的问题?


看来,删除订单的问题已经解决了。我使用一个单独的函数来计算 "必要的"(要删除的)订单的数量,即Total,调用这个函数和while的条件(Total>0),然后循环删除(int i=Total-1 ;i<=0l; i--),同样是f-种类的"必要的",当达到给定水平时退出while 的删除尝试。这样一来,所有的人都被删除了。
 
TarasBY:

下面是一个删除订单的例子,包括待定的订单(我用这个订单 删除)。

不是所有的挂单都出现在你的代码中(在选择过滤器中)。另一个错误的变体:检查挂单打开时收到的Magick(在你自己的代码中)。

谢谢你的答复。我不需要所有的挂单,只需要bylimit和selllimit,而且我只设置了它们,Magik在哪里都是一样的。如果我自己的努力不能解决这个问题,我必须研究你的脚本,否则我做不到,它就是不删除。

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

 
rigonich:

好哇,看来我已经解决了删除订单的问题。我在一个单独的函数中计算了 "必要的"(要删除的)订单的数量,调用这个函数,然后在while中设置一个条件(总数>0),然后循环删除for(int i=Total-1 ;i<=0l; i--),同样,计算"必要的 " 的函数,在达到指定水平时退出while 的删除尝试计数器。这样一来,一切都被删除了。
顺便说一句,这是一个很好的替代方案,让这段时间一直循环下去,直到世界末日,谢谢你,我现在就去试试。
 

你需要在一行中插入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,并且有一个开放的位置--关闭该位置。

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

 
lottamer:

是的...你只需要用4Editor打开这些mqh文件...

如果它们来自MQL4教程,它们将被4thEditor 打开。把它们放在includes文件夹里,或者把它们重命名为mq4,然后放在Expert文件夹里,如果是EA,就放在主文件夹里,或者分别放在scripts或 indicators文件夹里,然后打开 它们。
 
Desead:
顺便说一下,好的选择,让这个同时比赛它的周期到世界的尽头,直到它删除了订单,谢谢,我现在就试试。


在mt4中执行它需要2.5秒。
 
rigonich:

在mt 4中执行需要2.5秒。

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