int counted_bars=IndicatorCounted();
int i,r,limit;
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
limit = Bars-counted_bars;
if (ArrayRange(working,0) != Bars) ArrayResize(working,Bars);
//////////for(i=limit, r=Bars-i-1; i >= 0; i--,r++)
并像这样做。
if(rates_total-prev_calculated > 1)
{
// Если это первый запуск или подгрузилась история пересчитаем весь индикатор.
}
if(rates_total-prev_calculated >= 0)
{
// Пересчитаем только последнее изменение.
}
如果指标是由左至右计算的,那么如果有事情发生,比如说形成了分形,你必须用这个事件来存储条形的索引(以便用于其他方面)。如果索引是从右到左,我们应该计算n=Bars-i并记住n,然后做相反的事情:i=Bars-n。但如果你从左到右做索引,你应该只保存索引并使用它,它不会改变。由于在或多或少复杂的指标中总是需要这样做,从左到右的索引对指标开发者来说是一个很大的帮助。
是的,我曾经开始用mql4写一个指标,我写了1/3,另外1/3部分是基于第一个指标的结果,第三部分是基于第二个三分之一的值。在计算所需数值的条形图时,我面临一个大问题。但碰巧的是,客户已经消失了,我还没有写完。而当在右边索引时,酒吧号码是不变的,只需将酒吧号码写到辅助数组中,只有这个数组必须被运行以构建第二和第三部分......
如果指标是由左至右计算的,那么如果有事情发生,比如说形成了分形,你必须用这个事件来存储条形的索引(以便用于其他方面)。如果索引是从右到左,我们应该计算n=Bars-i并记住n,然后做相反的事情:i=Bars-n。但如果你从左到右做索引,你应该只保存索引并使用它,它不会改变。 由于在或多或少复杂的指标中总是需要这样做,从左到右的索引对指标开发者来说是一个很大的帮助。
这里有一个例子。
https://www.mql5.com/ru/code/25807
谢谢你,但
哦,孩子。然后终端下载历史记录,然后呢?
这没什么大不了的。你只需要忘记四种方法就可以了
并像这样做。
哦,是的。然后终端下载了历史记录,然后呢?
你来自哪里,为什么在这里?你有没有为MT4或MT5写过一个指标?至少你应该知道为MetaTrader编写指标 的基本知识。
因为他们从来没有写过复杂但快速的指标,否则从左到右的索引将是一个非常重要的解决方案。
如果你需要一个用于EA的快速指标,最好把计算部分直接放到EA中。
如果你需要一个快速的EA指标,直接在EA中插入计算部分会更有利。
不可能...看在残酷的份上,告诉你的女朋友们吧。
你来自哪里,为什么在这里?你有没有为MT4或MT5写过一个指标?你至少应该知道为MetaTrader编写指标 的基本知识。
迪米特里很生气,他还没有喝醉)))。