int LastCandlesType(int trend)
{
int cnt, // Счётчик идущих друг за другом свечей с требуемыми признакамиfor (int i=i_AnyBarsToHistory; i>=1; i--)
{
if ((Close[i] - Open[i]) >= i_sizeOfSequentialCorrectionBar * pt) // Если бар соответствует требуемым признакам..
cnt++; // .. прибавим 1 к счётчикуif (Close[i] < Open[i]) // Если бар, не соответствует основному признаку..
cnt = 0; // .. счётчик обнуляем/* if (i == 1)
Print("i = ", i,"; cnt = ", cnt);*/
}
if (cnt == 3) // Если 5 баров вподряд бычьи..return (REQUIRED_SEQUENTIAL_CANDLE_GOT); //..Выходим из функции
}
int LastCandlesType(bool trend)//trend равен 1 (бычий) или 0 (медвежий)int cnt, // Счётчик идущих друг за другом свечей с требуемыми признакамиfor (int i=i_AnyBarsToHistory; i>=1; i--)
{
if ((2*trend-1)*(Close[i] - Open[i]) >= i_sizeOfSequentialCorrectionBar * pt) // Если бар соответствует требуемым признакам..
cnt++; // .. прибавим 1 к счётчикуif ((2*trend-1)*(Close[i] - Open[i]) < i_sizeOfSequentialCorrectionBar * pt) // Если бар, не соответствует основному признаку..
cnt = 0; // .. счётчик обнуляем/* if (i == 1)
Print("i = ", i,"; cnt = ", cnt);*/
}
if (cnt == 3) // Если 5 баров вподряд бычьи..return (REQUIRED_SEQUENTIAL_CANDLE_GOT); //..Выходим из функции
}
或者进一步简化一下
int LastCandlesType(bool trend)//trend равен 1 (бычий) или 0 (медвежий)int cnt, // Счётчик идущих друг за другом свечей с требуемыми признакамиfor (int i=i_AnyBarsToHistory; i>=1; i--)
{
bool _if=((2*trend-1)*(Close[i] - Open[i])>=i_sizeOfSequentialCorrectionBar * pt); cnt=cnt+cnt/((2*_if-1)*MathPow(cnt, _if));
/* if (i == 1)
Print("i = ", i,"; cnt = ", cnt);*/
}
if (cnt == 3) // Если 5 баров вподряд бычьи..return (REQUIRED_SEQUENTIAL_CANDLE_GOT); //..Выходим из функции
}
我怎样才能简化这个表达式?
是来自MetaQuotes的ADX算法。MetaQuotes自己也使用这种表达方式。
- 如何简化它?
为什么最简单的选项不适合你?
为什么最简单的选择对你来说还不够好?
我想有时你必须从不同的角度来看待问题。对了,谢谢你。
hoz, 在 ,我在想如何进一步缩短if的时间。看:如果我们把一个变量
我们有cnt=cnt+step,其中
但1=cnt/cnt,a-cnt=cnt/(-1),唯一的区别是分母。现在回忆一下,x^0=1,x^1=x,即我们可以把我们的布尔变量_if放在指数中,即step=cnt/a*(cnt^_if);其中
但±a应该是2*_if-1,即
或者我们简化一下
哇,你把事情简化了。我不明白你的逻辑。
我想我们会下到如果...:-)))
我也明白,我什么都不明白。甚至是那些我不明白的图标...:)
一个标志的柱子正在上升,即看涨。
如何使其在向该函数传递趋势 参数时,该函数将负责传递当下所谓的主要趋势,计算将基于该参数。
也就是说,如果趋势==向下,循环中的函数就像现在这样,如果趋势==向上,循环中 的 Open[i] 和Close[i] 被调换,这样就可以观察到条件。在这种情况下,条形图的收盘价将低于开盘价,差额将被减去。
或者进一步简化一下
Δ是差值,即Close[i]-Open[i],^是度的符号。const - 这个表达式中的常数, 即i_sizeOfSequentialCorrectionBar * pt,标准数学符号,我没有发明任何东西。2*bVar-1类似于±1, 这里的bVar是任何bool-variable。而表达式2*bVar-1的取值不是0和1,而是-1和+1。≥是MQL4的>=,也是标准的数学符号。step是步长,即在cnt++中步长是1,在cnt=0中步长是-cnt。 从符号上看还有什么不清楚的地方?
我如何建议--如何让MT4自动删除免费日志(或根本不创建日志)?我不得不使用一些有5位数的经纪公司,这些日志在一天之内就开始增长(1.6GB),而且在vps上的位置是有限的。提前感谢。
你可以自己做。
图书馆1,图书馆2。
==============
虽然,最后一个(当前)文件是由终端打开的。要删除它并不容易。但你可以删除内容,这是写在开头的。
创建日志没有被禁用。
==============
1.创建一个符号链接(library1)到files文件夹下的logs文件夹。
2.使用MQL4工具删除所有不必要的文件。
使用MQL4打开当前文件。根据你的需要编辑它。
4.关闭文件。
5.你可以删除该链接。你不一定要这样做。它以后会派上用场。
==============
你也可以创建一个脚本文件(BAT)并在专家顾问中运行它。脚本与上述相同。只有在不创建链接的情况下。处理文件,当然是使用Windows工具。
我怎样才能建议如何自动删除免费日志(或根本不创建它们)?
因为在一些有5位数的DC上,这些日志一天会增长到惊人的大小(1.6GB),而vps的空间是有限的。提前感谢。
记录什么?
这和EA的错误有什么区别?
你好!我需要帮助,以完善我的原始机器人。首先,我将解释我的简单策略,让大家更清楚哪里需要帮助,有什么目的。
TS的本质。
1.如果开盘价 低于MA,收盘价高于MA,我们就买入。
2.如果开盘价高于MA,收盘价低于MA,我们应该卖出。
如果价格从最有利的价格中移动了X%,那么我们就关闭订单。这类似于追踪止损,但不是点数,而是订单开盘距离和最佳价格的X%。如图片上所示。
AB--从订单开始到最有利的价格的距离;BC=AB的X%;C--订单关闭。
第1项和第2项我已经写在程序中。
一般来说,我需要帮助为我的TS写一个关闭订单的函数(第3点),并将现有的代码调整为该函数。
P.S. 而且我知道TS不是很好。