HE 022:42:49.015 Test Script (EURUSD,H1) time for 'c = a + b' = 235 milliseconds, i = 1000000
OH 022:42:50.187 Test Script (EURUSD,H1) time for 'StringAdd(a,b)' = 1156 milliseconds, i = 1000000
EP 022:42:50.781 Test Script (EURUSD,H1) time for 'StringConcatenate(c,a,b)' = 594 milliseconds, i = 1000000
Когда программист создает советник, который получает сигналы от индикаторов, он всякий раз сталкивается с вопросом: использовать обращение к индикатору или перенести код индикатора в советник? Причины этому могут быть различные: желание сохранить в тайне используемые индикаторы и стратегию в целом, необходимость распространения советника единым...
//--- Проверка количества доступных баров (1 - минимально, 4 - оптимально для большинства расчётов. Но всё "по месту"...)if(rates_total<4) return0;
//--- Проверка и расчёт количества просчитываемых баровint limit=rates_total-prev_calculated; // 0 - пришел новый тик, новый бар формироваться не начал. 1 - пришел новый тик и начал формироваться новый бар.if(limit>1)
// если вписать "limit>0", то на нулевом баре будет расчёт только нулевого бара, на каждом новом баре будет полный перерасчёт всей истории// если вписать "limit>1", то на нулевом баре будет расчёт только нулевого бара, на открытии нового бара - пересчёт первого и нулевого,// при подгрузке истории и на первом запуске - перерасчёт всей истории
{
limit=rates_total-1;
// здесь должна быть инициализация всех используемых буферов индикатора необходимыми значениями (обычно EMPTY_VALUE и 0)
}
将显示颜色设置为clrNONE。
所以你只能输出缓冲区,而不能单独输出变量?
所以你只能输出缓冲区,而不能单独输出变量?
谢谢你的回答。
所以我的理解是创建一个缓冲区,然后在其中填入
的值,然后用iMAOnArray() 给这个缓冲器提供信息。
有谁为EA做了这个,在子窗口 测试EA的 时候会显示出来?
通常情况下,通过iCustom进行的EA测试是很迟钝的。
从https://www.mql5.com/ru/docs/strings/stringadd 的例子中提取代码,并将其粘贴到脚本中。在MQL4和MQL5中,结果是一样的。
我以为StringAdd()和StringConcatenate() 应该比 "+"运行得快。为什么不是这样呢?
iCustom通常会减慢专家顾问的测试速度。
这不是真的,通常情况下是相反的,因为指标缓冲区的内存分配是由终端完成的,而不是由MQL脚本完成的,通常这些问题是指标中的非最佳计算问题,许多新手在一个指标调用--tick,计算整个历史数据的长度。
如果你已经了解了MQL的基础知识,请阅读文章,这都是书面的。
https://www.mql5.com/ru/articles/4602
谁为EA做了这个,在子窗口中测试EA时将会显示出来?
没有人,阅读EA和指标的区别,谁有指标缓冲区,谁没有,谁有交易功能,谁有....。
ZZY:一个子窗口只能创建一个指标。如果你创建了一个子窗口,那么你可以使用专家顾问https://www.mql5.com/ru/docs/constants/objectconstants/enum_object,向这个子窗口添加图形对象。
ZSYZZ:子窗口可以通过应用模板获得,几个月前有一个话题,但我认为你到目前为止在其他方面有问题。
这不是真的,通常情况下是相反的,因为指标缓冲区的内存分配是由终端完成的,而不是由MQL脚本完成的,通常这些问题是指标中的非最佳计算问题,许多新手在一次指标调用中,他们计算了整个历史数据的长度。
如果你已经了解了MQL的基础知识,请阅读文章,它已经写了很久了。
https://www.mql5.com/ru/articles/4602
没有人,阅读专家顾问和指标的区别是什么,谁有指标缓冲区,谁没有,谁有交易功能,谁有....
ZZY:一个子窗口只能创建一个指标,如果你创建了一个子窗口,那么你可以使用专家顾问https://www.mql5.com/ru/docs/constants/objectconstants/enum_object,向这个子窗口添加图形对象。
ZSYZZ:子窗口可以通过应用模板获得,这是几个月前的一个话题,但我认为到目前为止你有一个其他的问题。
对不起。也许我的措辞并不正确,但
我不是说要用它来测试,但我也不是说要运行它。
至于测试时指标图上的可视化,如果你用
当你使用内置指标函数时,它们会在测试过程中被画在图表上
这正是我的意思。
但如果你使用某种集成在EA代码中的自定义指标计算代码,那么这个指标
在测试EA的过程中,将不会显示。
至于iCustom,当你在测试过程中使用它时,EA将显示在图表上
任何指标和指标的代码都可以和EA一起编译成一个ex4,但我不需要它。
我只是想知道在这件事上是否有办法绕过iCustom,如果没有,也不是什么问题。
非常感谢您的全面答复。
Artem在这里发布了一个指标模板,这里是OnCalculate 的部分。
我正在使用它,但我有一个问题)
为什么我使用limit=rates_total-1 来计算完整的历史,而不是limit=rates_total?
为什么limit=rates_total-1 用于全部历史计算,而不是limit=rates_total?
试着检查一下,你会立即 "超出范围"--条形图的编号从零到......。总数-1 ,这是编程中常见的情况--编号以0开始。作为一个明显的例子,声明数组double x[5],并尝试在最后一个元素x[5]=100中写些什么。
ZS:回答你还没有问的问题....OrderTotal()也是从零到OrderTotal()-1的数字 ;)
ZS:回答一个还没有被问到的问题....OrderTotal()的编号也从零到OrderTotal()-1;)
问题顺便产生了,现在我不能在阵列上赢得一个平均数,虽然我在五个,但以什么主题来写,我不知道,让它在这里。
该指标计算开仓-平仓差,并在此基础上建立МА。我选择了MA=2进行调试,但使用SimpleMAOnBuffer和iMAOnArray时,我得到了无法解释的行位移动,而且iMAOnArray在最后一个条形上显示为零值。
我有一个相关的问题,我还在为数组平均化而苦恼,虽然我在做5,但我不知道该写在什么题目上,就让它在这里吧。
我感觉在MQL5 中,指标 缓冲区和时间序列是以相反的方式 "展开 "的,默认情况下,MT5中最左边的柱子是柱子0,而在MT4中,最右边的柱子是柱子0,指标缓冲区有相同的编号
ZS: 我不想参与MT5,MT4已经足够我检查我的想法了,我只看MT5,如果我用MT5做了什么,我从不给别人看 ))