Суббота, 13 Декабрь 2008 08:05

Для чего необходим параметр MaxBarsBack?

Автор 
Оцените материал
(0 голосов)

Параметр MaxBarsBack определяет, на какую глубину в прошлое вы можете ссылаться в своем коде. Например, если параметр MaxBarsBack = 50, то вы можете обратиться к значению переменной 50 баров назад:

Value1[50]
Close[50]

Для организации такой возможности будут сохранены 50 последних значений переменных. Так же с начала графика будет пропущено 50 баров.

Параметр MaxBarsBack устанавливается в окне свойств индикатора/стратегии, в папке Properties. Если этот параметр установлен в положении Auto-detect, то при каждом запуске индикатора или функции система  запускает программу с малым количеством значений. Это делается для того, чтобы определить минимальное подходящее для работы значение. Если выясняется, что пробуемого значения не хватает, система увеличивает значение MaxBarsBack и повторяет весь процесс с самого начала. Так будет повторяться до тех пор, пока величина MaxBarsBack не достигнет подходящего минимального значения. Этот процесс требует некоторое время, поэтому для увеличения скорости загрузки рабочих листов можно установить требуемое значение вручную.

Если вам необходимо ссылаться в своем коде на большое число предыдущих значений и вы не хотите терять часть истории, отступая на нужное значение MaxBarsBack, то вы можете самостоятельно организовать массив предыдущих значений:

Arrays: State[1000](0);

State[0] = MyFunction(c, 24);

{Сохраняем предыдущие значения}
For Value1 = 1000 downto 1 begin
State[Value1] = State[Value1 - 1];   
end;

if State[900] < 25 then begin

End;

В языке EasyLanguage есть возможность обращаться к прошлым значениям элементов массива. Например, State[150][50]. Однако надо помнить, что такое обращение требует резервирования дополнительного объема памяти. Это сильно замедляет работу вашей программы. Кроме того, если обращение к значениям массива на прошлых барах отсуствует — память не резервируется, программа работет быстро и эффективно.

При той организации данных, которая предложена выше, лучше произвести следующую адекватную замену:
State[150 + 50] = State[150][50]; {в пределах 1000}

 



В подготовке материала принял участие Герман Брюханов (Leader).

 


Прочитано 3796 раз Последнее изменение Среда, 04 Май 2011 14:14
Gelium

Автор сайта.

Для души и разума.

Кто жизнью бит, тот большего добьется.
Пуд соли съевший выше ценит мед.
Кто слезы лил, тот искренней смеется.
Кто умирал, тот знает, что живет!

Далее...

Не бойся потерять того, кто не побоялся потерять тебя.
Чем ярче горят мосты за спиной, тем светлее дорога впереди.

Как часто, в жизни ошибаясь, теряем тех, кем дорожим.
Чужим понравиться стараясь, порой от ближнего бежим.
Возносим тех, кто нас не стоит, а самых верных предаем.
Кто нас так любит, обижаем, и сами извинений ждем.

Чтоб мудро жизнь прожить знать надобно не мало.
Два важных правила запомни для начала: ты лучше голодай,
чем что попало ешь и лучше будь один, чем вместе с кем попало.

В любимом человеке нравятся даже недостатки, а в нелюбимом раздражают даже достоинства.


 

Перепечатка авторских материалов сайта без указания ссылки на
сайт Gelium.net запрещена.

Gelium.net | 2000-2019 | © All rights reserved.