//+-------------------------------------------------------------------------------------+//| Определение наличия верхнего фрактала на указанном баре |//+-------------------------------------------------------------------------------------+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); // Фрактал найден
}
在我看来,这是正确的方法,虽然它是原始的!但我认为,这是很重要的。:)为什么不把这一点作为一个新的酒吧功能来实现?你需要它每天重新计算一次,即从0.00点开始。所以我们做得很简单。当然是在开始时。
不是这两个,是E, 有一个&& 符号。
或。因 为当操作数中至少有一个 是假的(第一或第二)时,AND条件是不 满足的--在布尔逻辑中,这被称为"De Morgan定律"。
我明白了。但问题是这样的。
一般情况下,代码中的变量索引 有值Bar - IndicatorCounted()。
也就是说,在当前条上是1,在新条上是2。
它进入IsUpFractal()函数的值是1,或者是1,如果条形图还不是新的,对吗?
所以,i 变量将有一个固定的值,因为输入参数的索引 也是固定的。因此,循环在第一次迭代后总是会中断。那么这个循环的目的是什么?
或。因 为当操作数中至少有一个 是假的(第一或第二)时,AND条件是不 满足的--在布达逻辑中,这被称为"德摩根定律"。
哇。真是一团糟。我使用过多少次这些操作者......而在这里,就像"我在看一个新的门"。我读了法律,它是以一种奇怪的方式写的。它描述了一种拒绝的情况。我认为这种技巧只适用于拒绝的情况?我的意思是,如果任何一个布尔变量不等于真。
我一边走一边意识到,我并没有把它插进去。底线是,这里的区别如下。这是一个指标,这就是为什么我不习惯于这样思考。这意味着在第一次调用指标时,不计算条形图,指数 将等于图表中的条形图数量,或者等于某个变量limitReCalcBar 的值,如果计算条形图的条件受到限制。
事实上,根据代码,变量g_center = 2。limitReCalcBar = 5000 也是基于外部变量 的。
当第一次在函数中运行指标时。
被相应地传递为5000 的值。
i= index + g_center - 1 = 5000 + 2 - 1 =5001
让我们来看看这个循环。
我们需要计算5000 条。在前两个小节,即0和1之后,条件cnt < g_center 是假的。那么我们如何才能计算出所有5000 条?这是我想掌握的一点。这对一个专业人员来说似乎很简单,但我不明白。当然,如果我们把 && 运算符作为一个OR,一切都将归于平静......但这与我在专家顾问中已经使用过的、曾经遇到过的情况有一定的矛盾。
好吧,当一切都计算好了,一切都将变得简单。0 和1 将在每一个刻度上通过索引 传递,条件将在一个循环中得到满足,如我所见,没有什么困难。
亲爱的程序员!请告诉我是否可以写一个脚本,监测未结头寸,当头寸达到一定的亏损水平时,它就关闭部分头寸。损失阈值应以存款货币 或以点数设置。因此,如果价格对我们不利,我们就减少了损失,如果价格转为盈利,那么我们就可能获得一些利润或更小的损失,这取决于TP设置。该脚本必须一直在EA模式下工作,它是任何交易系统或专家顾问的助手。
亲爱的程序员!请告诉我是否可以写一个脚本,监测未结头寸,当头寸达到一定的亏损水平时,它就关闭部分头寸。损失阈值应以存款货币或以点数设置。因此,如果价格对我们不利,我们就减少了损失,如果价格转为盈利,那么我们就可能获得一些利润或更小的损失,这取决于TP设置。该脚本应始终在EA模式下工作,它是任何交易系统或专家顾问的助手。
也许。这里 有帮助。
也许。这里 有帮助。
有一种东西叫做止损!!。
你好,我有一个问题。 在终端中有几个平等的窗口,每个窗口都有相同的专家顾问,但设置不同。 你能告诉我在MQL4中是否有一个函数或一个现成的算法,可以检测出市场订单是从哪个窗口打开的?
你好,我有一个问题。 在终端中有几个相同的窗口,每个窗口都有相同的专家顾问,但设置不同。 你能告诉我在MQL4中是否有一个函数或一个现成的算法,可以确定市场订单在哪个窗口打开?
更有意义的是,对EA进行复制,以不同的方式命名,你会在日志中看到哪个副本和哪个窗口,分别是哪个窗口,你就可以想明白了!。
我会想办法的,但我如何通知专家顾问它?
更有意义的是复制EA,以不同的方式命名,你会在日志中看到所有的东西,哪个矛,相应地,在哪个窗口,你已经知道了!
我需要这个,以便专家顾问可以开始自己进行计算。