[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 5. - 页 176

 
hoz:


:)为什么不把这一点作为一个新的酒吧功能来实现?你需要它每天重新计算一次,即从0.00点开始。所以我们做得很简单。当然是在开始时。

在我看来,这是正确的方法,虽然它是原始的!但我认为,这是很重要的。
维宁,你的名字,告诉我,它应该自己改变,但它从来没有,只有在编译的时候才会改变。谢谢你提出的使用酒吧控制的想法!把一个变体放在一个图表上,把你的变体放在另一个图表上。我明天会看看有什么效果。
 
hoz:


不是这两个,是E, 有一个&& 符号。

或。因 为当操作数中至少有一个 是假的(第一或第二)时,AND条件是 满足的--在布尔逻辑中,这被称为"De Morgan定律"。

我明白了。但问题是这样的。

一般情况下,代码中的变量索引 有值Bar - IndicatorCounted()

也就是说,在当前条上是1,在新条上是2。

它进入IsUpFractal()函数的值是1,或者是1,如果条形图还不是新的,对吗?

所以,i 变量将有一个固定的值,因为输入参数的索引 也是固定的。因此,循环在第一次迭代后总是会中断。那么这个循环的目的是什么?

在每个循环步骤中,变量i被递减1(i--),所以i运行的所有值从index+g_center-1到0。此外,请注意,当指标第一次启动时,IndicatorCounted()给出了0,即索引将在所有条形上运行,所以每次i都被分配索引+g_center-1,然后向下运行,直到它到达0条或直到cnt等于g_center,即直到循环条件不被满足(好吧,或者直到位于循环体本身的return被调用)。
 
alsu:

或。因 为当操作数中至少有一个 是假的(第一或第二)时,AND条件是 满足的--在布达逻辑中,这被称为"德摩根定律"。

哇。真是一团糟。我使用过多少次这些操作者......而在这里,就像"我在看一个新的门"。我读了法律,它是以一种奇怪的方式写的。它描述了一种拒绝的情况。我认为这种技巧只适用于拒绝的情况?我的意思是,如果任何一个布尔变量不等于

我一边走一边意识到,我并没有把它插进去。底线是,这里的区别如下。这是一个指标,这就是为什么我不习惯于这样思考。这意味着在第一次调用指标时,不计算条形图,指数 将等于图表中的条形图数量,或者等于某个变量limitReCalcBar 的值,如果计算条形图的条件受到限制。

事实上,根据代码,变量g_center = 2limitReCalcBar = 5000 也是基于外部变量 的。

当第一次在函数中运行指标时。

//+-------------------------------------------------------------------------------------+
//| Определение наличия верхнего фрактала на указанном баре                             |
//+-------------------------------------------------------------------------------------+
bool IsUpFractal(int index)
{
   double centerHigh = High[index + g_center];     // За точку отсчета берется средний..
                                                   // ..бар на участке из i_fractalPeriod
                                                   // ..баров
// - 1 - == Поиск максимумов справа от центрального бара ================================
   int cnt = 0, i = index + g_center - 1;
   for (; i >= 0 && cnt < g_center; i--)           // Справа от центрального бара должно
   {                                               // ..быть g_center-1 баров с низшим..
      if (centerHigh <= High[i])                   // ..максимумом. Не позволяется..
         return (false);                           // ..наличие баров с большим или..
      cnt++;                                       // ..равным максимумом.
   }
   
   if (i < 0)                                      // g_center-1 низших максимумов не..
      return (false);                              // ..найдено. Фрактала нет
// - 1 - == Окончание блока =============================================================

// - 2 - == Поиск максимумов слева от центрального бара =================================
   cnt = 0;
   i = index + g_center + 1;
   int total = Bars - 1;
   for (; i < total && cnt < g_center; i++)        // Слева от центрального бара должно
   {                                               // ..быть g_center-1 баров с низшим..
      if (centerHigh == High[i])                   // ..максимумом. Не позволяется..
         continue;                                 // ..наличие баров с большим..
      if (centerHigh < High[i])                    // ..максимумом. Равный - позволяется
         return (false);
      cnt++;                                    
   }
   
   if (i >= total)                                 // g_center-1 низших максимумов не..
      return (false);                              // ..найдено. Фрактала нет
// - 2 - == Окончание блока =============================================================
                                                   
   return (true);                                  // Фрактал найден                 
}

被相应地传递为5000 的值。

i= index + g_center - 1 = 5000 + 2 - 1 =5001

让我们来看看这个循环。

for (; i >= 0 && cnt < g_center; i--)

我们需要计算5000 条。在前两个小节,即0和1之后,条件cnt < g_center 是假的。那么我们如何才能计算出所有5000 条?这是我想掌握的一点。这对一个专业人员来说似乎很简单,但我不明白。当然,如果我们把 && 运算符作为一个OR,一切都将归于平静......但这与我在专家顾问中已经使用过的、曾经遇到过的情况有一定的矛盾。

好吧,当一切都计算好了,一切都将变得简单。01 将在每一个刻度上通过索引 传递,条件将在一个循环中得到满足,如我所见,没有什么困难。

 

亲爱的程序员!请告诉我是否可以写一个脚本,监测未结头寸,当头寸达到一定的亏损水平时,它就关闭部分头寸。损失阈值应以存款货币 或以点数设置。因此,如果价格对我们不利,我们就减少了损失,如果价格转为盈利,那么我们就可能获得一些利润或更小的损失,这取决于TP设置。该脚本必须一直在EA模式下工作,它是任何交易系统或专家顾问的助手。

 
destan:

亲爱的程序员!请告诉我是否可以写一个脚本,监测未结头寸,当头寸达到一定的亏损水平时,它就关闭部分头寸。损失阈值应以存款货币或以点数设置。因此,如果价格对我们不利,我们就减少了损失,如果价格转为盈利,那么我们就可能获得一些利润或更小的损失,这取决于TP设置。该脚本应始终在EA模式下工作,它是任何交易系统或专家顾问的助手。

也许。这里 有帮助。

 
valeryk:

也许。这里 有帮助。


有一种东西叫做止损!!。
 

你好,我有一个问题。 在终端中有几个平等的窗口,每个窗口都有相同的专家顾问,但设置不同。 你能告诉我在MQL4中是否有一个函数或一个现成的算法,可以检测出市场订单是从哪个窗口打开的?

 
badbadboy:

你好,我有一个问题。 在终端中有几个相同的窗口,每个窗口都有相同的专家顾问,但设置不同。 你能告诉我在MQL4中是否有一个函数或一个现成的算法,可以确定市场订单在哪个窗口打开?

更有意义的是复制EA,以不同的方式命名,你会在日志中看到所有的东西,哪个矛,因此,你会在哪个窗口找到它!
 
borilunad:
更有意义的是,对EA进行复制,以不同的方式命名,你会在日志中看到哪个副本和哪个窗口,分别是哪个窗口,你就可以想明白了!。

我会想办法的,但我如何通知专家顾问它?
 
borilunad:
更有意义的是复制EA,以不同的方式命名,你会在日志中看到所有的东西,哪个矛,相应地,在哪个窗口,你已经知道了!

我需要这个,以便专家顾问可以开始自己进行计算。
原因: