Страница 1 из 1
Инициализация индикатора?
Добавлено: Вт сен 05, 2006 3:43 am
Евгений
Вопрос такой, инициализация происходит в процессе загрузки проги или при вызове и установки его в работу? Смысл в чем, я хочу индюк написать но такой чтобы часть параметров включались в работу только когда их задействует юзер, а не болтались просто так и не жрали ресурсы.
Добавлено: Вт сен 05, 2006 11:35 am
Smile
На сколько я видел что пишется в журнале, то индикаторы инициализируются при загрузке, и стратегии тоже... Если не прав пусть Терранин поправит
Добавлено: Вт сен 05, 2006 9:06 pm
Terranin
Smile писал(а):На сколько я видел что пишется в журнале, то индикаторы инициализируются при загрузке, и стратегии тоже... Если не прав пусть Терранин поправит
Это работает так:
есть список индикаторов, при загрузке программы каждый индикатор создается 1 раз без привязки к конкретной валюте и инициализируется.
когда индикатор привязывается к валюте и таймфрейму - он копируется в нужную папку, оттуда грузится и инициализируется отдельно. Инициализация происходит только один раз.
Добавлено: Ср сен 06, 2006 2:04 am
Евгений
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;
..........
Будет он работать или пошлет меня далеко и надолго?
Добавлено: Ср сен 06, 2006 11:03 am
Smile
Евгений писал(а):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;
..........
Будет он работать или пошлет меня далеко и надолго?
Это лучше опытным путем проверять
Добавлено: Ср сен 06, 2006 1:19 pm
Евгений
Smile писал(а):
Это лучше опытным путем проверять
Времени нету...отчеты, блин...
А проверить, проверю...
кст народ я вот о чем подумал, надо бы все же договориться о формате выкладки индюков, или исходники или длл, кст некоторые слишком вумные вроде меня могут туды и вируса впихнуть... Не боитесь?
Добавлено: Ср сен 06, 2006 5:01 pm
Terranin
Евгений писал(а):Smile писал(а):
Это лучше опытным путем проверять
Времени нету...отчеты, блин...
А проверить, проверю...
кст народ я вот о чем подумал, надо бы все же договориться о формате выкладки индюков, или исходники или длл, кст некоторые слишком вумные вроде меня могут туды и вируса впихнуть... Не боитесь?
Я принимаю только исходники в формате dpr. Поэтому желательно выкладывать свою dll + исходник dpr. Все индикаторы включенные в релиз мной проверены.
Добавлено: Ср сен 06, 2006 5:04 pm
Terranin
Евгений писал(а):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.
Добавлено: Чт сен 07, 2006 1:51 am
Евгений
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;
Так и у меня если будет выбрано нет то часть буферов не должна быть инициализирована.
Добавлено: Чт сен 07, 2006 11:56 am
Terranin
Евгений писал(а):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;
Так и у меня если будет выбрано нет то часть буферов не должна быть инициализирована.
А причем тут это? Ты же пишешь Trigger := 0; и тут же if Trigger = 0 then ... Где же Trigger будет менять свое значение если инициализация проходит только один раз? Процедура инициализации больше не вызывается, при изменении параметров происходит просто полный пересчет буферов индикатора.
Добавлено: Чт сен 07, 2006 12:49 pm
Евгений
Terranin писал(а):
А причем тут это? Ты же пишешь Trigger := 0; и тут же if Trigger = 0 then ... Где же Trigger будет менять свое значение если инициализация проходит только один раз? Процедура инициализации больше не вызывается, при изменении параметров происходит просто полный пересчет буферов индикатора.
Блин!!! Михаил... а я ведь о чем спрашивал ранее?! Именно о процедуре инициализации!!!!
Вопрос такой, инициализация происходит в процессе загрузки проги или при вызове и установки его в работу?
Короче понял... Динамически параметры в индюке не сильно то поменяешь.... Жаль, но таких индюков я знаю немного так что не було печали.
Добавлено: Чт сен 07, 2006 1:08 pm
Terranin
Евгений писал(а):Terranin писал(а):
А причем тут это? Ты же пишешь Trigger := 0; и тут же if Trigger = 0 then ... Где же Trigger будет менять свое значение если инициализация проходит только один раз? Процедура инициализации больше не вызывается, при изменении параметров происходит просто полный пересчет буферов индикатора.
Блин!!! Михаил... а я ведь о чем спрашивал ранее?! Именно о процедуре инициализации!!!!
А я об этом и отвечал ранее что инициализация происходит только один раз при привязке индикатора к диаграмме.
Добавлено: Чт сен 07, 2006 1:12 pm
Terranin
Евгений писал(а):
Короче понял... Динамически параметры в индюке не сильно то поменяешь.... Жаль, но таких индюков я знаю немного так что не було печали.
Параметры меняются, но буферы задаются один раз и лучше их на лету не перетасовывать. Я во всяком случае на такие дела не рассчитывал. А для того чтобы реагировать на изменение параметров потом я могу добавить скажем процедуру OnParamsChanged которая будет вызываться при изменении параметров.
Добавлено: Чт сен 07, 2006 1:32 pm
Евгений
Terranin писал(а):Параметры меняются, но буферы задаются один раз и лучше их на лету не перетасовывать. Я во всяком случае на такие дела не рассчитывал. А для того чтобы реагировать на изменение параметров потом я могу добавить скажем процедуру OnParamsChanged которая будет вызываться при изменении параметров.
Нуу ежели народу нужно станет... а вообще такая функция для пижонства, чтобы кучей дополнительных параметров индикатор перегрузить. Но вот чего бы не помешало это функция возврата индекса от старшего таймфрейма к младшему... Уровневых индюков или тех же МА рассчитанных на часах и поставленных на минутные таймы в стратегиях дохрена!!! А пересчитывать таймфрейм дело муторное как я убедился!!! Кст добавь еще 10 и 30 минутные таймфреймы в анализ, если пока молчат то скоро попросят! Счас вот сижу читаю о системе настроенной на 30минутки в МТ4.