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

 
drknn:

由于该条件不是严格的二择一(如果至少有1个元素为真,则该条件始终为真),处理该条件的最合乎逻辑的方法是首先将分子(a>b || c>d) 划分为原子"a>b "和 "c>d", 然后按顺序循环原子以检查真假。而如果下一个原子为真,则立即中断循环,允许程序做紧跟在大括号之后的动作--也就是说,不搜索其余的原子,因为不需要。而且,无论我们是从头到尾搜索,还是从创建的原子列表的结尾到开头搜索,都不重要。只有开发者才能向你展示搜索方向(元引号)。 但你为什么需要它呢?你 编写自己的编译器 吗?
我想到:如果在TC逻辑中,条件 a>b 为真比 c>d==真要 多得多,那么为了加快程序速度,检查这两个条件的真假顺序可能很重要。
 
artmedia70:
我想到:如果在TC逻辑中,条件 a>b 为真要比 c>d==真 多得多,那么如何检查这两个条件以加快程序可能很重要

实际上表达式是这样的:如果(a>b ||(a<=b && c>d))。 如果从左到右进行真值检验,从程序速度的角度看,表达式a<=b 将是多余的。问题是到底是从左到右还是反过来,或者在不同的情况下有不同的说法。
 
AndEv:

实际上表达式是这样的:如果(a>b ||(a<=b && c>d))。 如果从左到右进行真值检验,从加快程序速度的角度看,表达式a<=b 将是多余的。问题只是从左到右还是从右到左,或者在不同情况下的不同。

能否请您解释一下EA不开单和写错误 的原因133
 
paladin80:

有必要将开仓时间与当前的开仓时间Time[0]进行比较。如果开仓的时间多于或等于条形图开仓的时间--专家顾问不开新仓。当一个新的条形图出现时,Time[0]将改变其值为一个较晚的时间,这种比较将显示在当前(新)条形图上尚未开仓,我们可以交易。

顺便说一下,你的问题也可以分解成2个小问题。
1.在当前的条形图上,一个头寸被打开并成功关闭,但我们仍在等待一个新的条形图。
2.在当前柱状图上,一个头寸被打开并成功关闭,然后我们可以在同一柱状图上再次打开一个头寸(也就是说,一次可以在一个柱状图上打开一个头寸)。

也就是说,在同一个柱子里,开仓的条件在几分钟内变成了 "真",开了仓。然后变成 "假",再变成 "真",又开了第二个仓。如何处理?我只想到每个柱子开仓一次 ,也许还有其他选择?
 
什么是detrending? 是不是像 "停止说话"?
 
GarKain:
我有一个问题:在一个相同的条形图的几分钟内,开立订单的条件变为真实,订单打开。然后它失败了,再次打开第二个订单。我如何解决这个问题?我只想到每个条形图开立一次订单 ,也许还有其他选择?

我看到你在使用一个允许/不允许开仓 的标志。如果不知道这面旗子的情况,就不可能告诉你任何事情。在我的EA中,我使用了2种方法来开仓,可以提供以下代码。

if (OrdersTotal()>0)
{  for (i=OrdersTotal()-1; i>=0; i--)
   {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {  if (OrderSymbol()==Symbol())
         {  if (OrderMagicNumber()==MagNum) // Проверка соответствия позиции по магик-номеру
            {  Closed_bar=OrderOpenTime();
               if (Closed_bar>=iTime(NULL,PERIOD_H1,0))
               return(0);
         }  }
}  }  }
 
moskitman:
什么是detrending? 是不是像 "停止说话"?

对一个系列应用低通滤波器==减去趋势(斜率)成分。最简单的例子:对价格应用muwing,然后在一个单独的窗口中显示差异。
 
paladin80:

我看到你在使用一个允许/不允许开仓的标志。如果不知道这面旗子的情况,就不可能告诉你任何事情。在我的EA中,开仓时我使用了2种方法,可以提供以下代码。



if (OrdersTotal()>0)
{  for (i=OrdersTotal()-1; i>=0; i--)
   {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {  if (OrderSymbol()==Symbol())
         {  if (OrderMagicNumber()==MagNum) // Проверка соответствия позиции по магик-номеру
            {  Closed_bar=OrderOpenTime();
               if (Closed_bar>=iTime(NULL,PERIOD_H1,0))
               return(0);
         }  }
}  }  }

我不太明白什么东西去哪里,从哪里来。

 
我是这样写的。

如果这个和那个,那么就是 "等于"。

如果它等于 "真",那么订单就会打开。



如果我写下如果这个和那个,订单就会打开。这能解决问题吗?

 
AndEv:
实际上表达式是这样的:如果(a>b ||(a<=b && c>d))。 如果从左到右进行真值检验,从加快程序速度的角度看,表达式a<=b 将是多余的。问题是到底是从左到右还是反过来,或者在不同的情况下有不同的说法。
在这种情况下,你必须创建嵌套的ifs。在MQL4中,顺序是不清楚的。在MQL5中,它是从左到右,因为它应该是这样。