Инициализация индикатора?
-
- Сообщения: 34
- Зарегистрирован: Вс авг 06, 2006 1:46 pm
Инициализация индикатора?
Вопрос такой, инициализация происходит в процессе загрузки проги или при вызове и установки его в работу? Смысл в чем, я хочу индюк написать но такой чтобы часть параметров включались в работу только когда их задействует юзер, а не болтались просто так и не жрали ресурсы.
-
- Сообщения: 27
- Зарегистрирован: Вт авг 08, 2006 1:06 pm
- Terranin
- Site Admin
- Сообщения: 846
- Зарегистрирован: Вс июл 23, 2006 12:01 pm
Это работает так:Smile писал(а):На сколько я видел что пишется в журнале, то индикаторы инициализируются при загрузке, и стратегии тоже... Если не прав пусть Терранин поправит
есть список индикаторов, при загрузке программы каждый индикатор создается 1 раз без привязки к конкретной валюте и инициализируется.
когда индикатор привязывается к валюте и таймфрейму - он копируется в нужную папку, оттуда грузится и инициализируется отдельно. Инициализация происходит только один раз.
-
- Сообщения: 34
- Зарегистрирован: Вс авг 06, 2006 1:46 pm
То есть если будет такой кусок кода:Terranin писал(а):когда индикатор привязывается к валюте и таймфрейму - он копируется в нужную папку, оттуда грузится и инициализируется отдельно. Инициализация происходит только один раз.
Код: Выделить всё
procedure Init; stdcall;
begin
........
RegOption('Yes/No', ot_EnumType, Trigger);
AddOptionValue(''Yes/No', 'Yes');
AddOptionValue('Yes/No', 'No');
Trigger:=0;
If Trigger=0 then //если включаем на графике эти линии индикатора
begin // то инициализируем буфера
IndicatorBuffers(i+2);
SetIndexBuffer(i+1, Line1);
SetIndexBuffer(i+2, Line2);
end;
else exit;
..........
-
- Сообщения: 27
- Зарегистрирован: Вт авг 08, 2006 1:06 pm
Это лучше опытным путем проверятьЕвгений писал(а):То есть если будет такой кусок кода:Terranin писал(а):когда индикатор привязывается к валюте и таймфрейму - он копируется в нужную папку, оттуда грузится и инициализируется отдельно. Инициализация происходит только один раз.
Будет он работать или пошлет меня далеко и надолго?Код: Выделить всё
procedure Init; stdcall; begin ........ RegOption('Yes/No', ot_EnumType, Trigger); AddOptionValue(''Yes/No', 'Yes'); AddOptionValue('Yes/No', 'No'); Trigger:=0; If Trigger=0 then //если включаем на графике эти линии индикатора begin // то инициализируем буфера IndicatorBuffers(i+2); SetIndexBuffer(i+1, Line1); SetIndexBuffer(i+2, Line2); end; else exit; ..........
-
- Сообщения: 34
- Зарегистрирован: Вс авг 06, 2006 1:46 pm
- Terranin
- Site Admin
- Сообщения: 846
- Зарегистрирован: Вс июл 23, 2006 12:01 pm
Я принимаю только исходники в формате dpr. Поэтому желательно выкладывать свою dll + исходник dpr. Все индикаторы включенные в релиз мной проверены.Евгений писал(а):Времени нету...отчеты, блин...Smile писал(а): Это лучше опытным путем проверять
А проверить, проверю...
кст народ я вот о чем подумал, надо бы все же договориться о формате выкладки индюков, или исходники или длл, кст некоторые слишком вумные вроде меня могут туды и вируса впихнуть... Не боитесь?
- Terranin
- Site Admin
- Сообщения: 846
- Зарегистрирован: Вс июл 23, 2006 12:01 pm
Смущает конструкцияЕвгений писал(а):То есть если будет такой кусок кода:Terranin писал(а):когда индикатор привязывается к валюте и таймфрейму - он копируется в нужную папку, оттуда грузится и инициализируется отдельно. Инициализация происходит только один раз.
Будет он работать или пошлет меня далеко и надолго?Код: Выделить всё
procedure Init; stdcall; begin ........ RegOption('Yes/No', ot_EnumType, Trigger); AddOptionValue(''Yes/No', 'Yes'); AddOptionValue('Yes/No', 'No'); Trigger:=0; If Trigger=0 then //если включаем на графике эти линии индикатора begin // то инициализируем буфера IndicatorBuffers(i+2); SetIndexBuffer(i+1, Line1); SetIndexBuffer(i+2, Line2); end; else exit; ..........
Trigger := 0;
if Trigger = 0 then ...
он всегда будет равен 0.
-
- Сообщения: 34
- Зарегистрирован: Вс авг 06, 2006 1:46 pm
Чего это вдруг?Terranin писал(а):
Смущает конструкция
Trigger := 0;
if Trigger = 0 then ...
он всегда будет равен 0.
Это же работает:
Код: Выделить всё
RegOption('Apply to price', ot_EnumType, ApplyToPrice);
AddOptionValue('Apply to price', 'Close');
AddOptionValue('Apply to price', 'Open');
AddOptionValue('Apply to price', 'High');
AddOptionValue('Apply to price', 'Low');
AddOptionValue('Apply to price', '(High + Low)/2');
AddOptionValue('Apply to price', '(High + Low + Close)/3');
AddOptionValue('Apply to price', '(High + Low + Close + Close)/4');
ApplyToPrice := 0;
- Terranin
- Site Admin
- Сообщения: 846
- Зарегистрирован: Вс июл 23, 2006 12:01 pm
А причем тут это? Ты же пишешь Trigger := 0; и тут же if Trigger = 0 then ... Где же Trigger будет менять свое значение если инициализация проходит только один раз? Процедура инициализации больше не вызывается, при изменении параметров происходит просто полный пересчет буферов индикатора.Евгений писал(а):Чего это вдруг?Terranin писал(а):
Смущает конструкция
Trigger := 0;
if Trigger = 0 then ...
он всегда будет равен 0.
Это же работает:Так и у меня если будет выбрано нет то часть буферов не должна быть инициализирована.Код: Выделить всё
RegOption('Apply to price', ot_EnumType, ApplyToPrice); AddOptionValue('Apply to price', 'Close'); AddOptionValue('Apply to price', 'Open'); AddOptionValue('Apply to price', 'High'); AddOptionValue('Apply to price', 'Low'); AddOptionValue('Apply to price', '(High + Low)/2'); AddOptionValue('Apply to price', '(High + Low + Close)/3'); AddOptionValue('Apply to price', '(High + Low + Close + Close)/4'); ApplyToPrice := 0;
-
- Сообщения: 34
- Зарегистрирован: Вс авг 06, 2006 1:46 pm
Блин!!! Михаил... а я ведь о чем спрашивал ранее?! Именно о процедуре инициализации!!!!Terranin писал(а): А причем тут это? Ты же пишешь Trigger := 0; и тут же if Trigger = 0 then ... Где же Trigger будет менять свое значение если инициализация проходит только один раз? Процедура инициализации больше не вызывается, при изменении параметров происходит просто полный пересчет буферов индикатора.
Короче понял... Динамически параметры в индюке не сильно то поменяешь.... Жаль, но таких индюков я знаю немного так что не було печали.Вопрос такой, инициализация происходит в процессе загрузки проги или при вызове и установки его в работу?
- Terranin
- Site Admin
- Сообщения: 846
- Зарегистрирован: Вс июл 23, 2006 12:01 pm
А я об этом и отвечал ранее что инициализация происходит только один раз при привязке индикатора к диаграмме.Евгений писал(а):Блин!!! Михаил... а я ведь о чем спрашивал ранее?! Именно о процедуре инициализации!!!!Terranin писал(а): А причем тут это? Ты же пишешь Trigger := 0; и тут же if Trigger = 0 then ... Где же Trigger будет менять свое значение если инициализация проходит только один раз? Процедура инициализации больше не вызывается, при изменении параметров происходит просто полный пересчет буферов индикатора.
- Terranin
- Site Admin
- Сообщения: 846
- Зарегистрирован: Вс июл 23, 2006 12:01 pm
Параметры меняются, но буферы задаются один раз и лучше их на лету не перетасовывать. Я во всяком случае на такие дела не рассчитывал. А для того чтобы реагировать на изменение параметров потом я могу добавить скажем процедуру OnParamsChanged которая будет вызываться при изменении параметров.Евгений писал(а): Короче понял... Динамически параметры в индюке не сильно то поменяешь.... Жаль, но таких индюков я знаю немного так что не було печали.
-
- Сообщения: 34
- Зарегистрирован: Вс авг 06, 2006 1:46 pm
Нуу ежели народу нужно станет... а вообще такая функция для пижонства, чтобы кучей дополнительных параметров индикатор перегрузить. Но вот чего бы не помешало это функция возврата индекса от старшего таймфрейма к младшему... Уровневых индюков или тех же МА рассчитанных на часах и поставленных на минутные таймы в стратегиях дохрена!!! А пересчитывать таймфрейм дело муторное как я убедился!!! Кст добавь еще 10 и 30 минутные таймфреймы в анализ, если пока молчат то скоро попросят! Счас вот сижу читаю о системе настроенной на 30минутки в МТ4.Terranin писал(а):Параметры меняются, но буферы задаются один раз и лучше их на лету не перетасовывать. Я во всяком случае на такие дела не рассчитывал. А для того чтобы реагировать на изменение параметров потом я могу добавить скажем процедуру OnParamsChanged которая будет вызываться при изменении параметров.