Инициализация индикатора?

Образцы, куски исходников, вопросы. Обсуждаем программирование.
Ответить
Сообщение
Автор
Евгений
Сообщения: 34
Зарегистрирован: Вс авг 06, 2006 1:46 pm

Инициализация индикатора?

#1 Сообщение Евгений » Вт сен 05, 2006 3:43 am

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

Smile
Сообщения: 27
Зарегистрирован: Вт авг 08, 2006 1:06 pm

#2 Сообщение Smile » Вт сен 05, 2006 11:35 am

На сколько я видел что пишется в журнале, то индикаторы инициализируются при загрузке, и стратегии тоже... Если не прав пусть Терранин поправит :D

Аватара пользователя
Terranin
Site Admin
Сообщения: 846
Зарегистрирован: Вс июл 23, 2006 12:01 pm

#3 Сообщение Terranin » Вт сен 05, 2006 9:06 pm

Smile писал(а):На сколько я видел что пишется в журнале, то индикаторы инициализируются при загрузке, и стратегии тоже... Если не прав пусть Терранин поправит :D
Это работает так:
есть список индикаторов, при загрузке программы каждый индикатор создается 1 раз без привязки к конкретной валюте и инициализируется.

когда индикатор привязывается к валюте и таймфрейму - он копируется в нужную папку, оттуда грузится и инициализируется отдельно. Инициализация происходит только один раз.

Евгений
Сообщения: 34
Зарегистрирован: Вс авг 06, 2006 1:46 pm

#4 Сообщение Евгений » Ср сен 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;
..........
Будет он работать или пошлет меня далеко и надолго?

Smile
Сообщения: 27
Зарегистрирован: Вт авг 08, 2006 1:06 pm

#5 Сообщение Smile » Ср сен 06, 2006 11:03 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;
..........
Будет он работать или пошлет меня далеко и надолго?
Это лучше опытным путем проверять :D

Евгений
Сообщения: 34
Зарегистрирован: Вс авг 06, 2006 1:46 pm

#6 Сообщение Евгений » Ср сен 06, 2006 1:19 pm

Smile писал(а): Это лучше опытным путем проверять :D
Времени нету...отчеты, блин... :cry:
А проверить, проверю...
кст народ я вот о чем подумал, надо бы все же договориться о формате выкладки индюков, или исходники или длл, кст некоторые слишком вумные вроде меня могут туды и вируса впихнуть... Не боитесь? :twisted:

Аватара пользователя
Terranin
Site Admin
Сообщения: 846
Зарегистрирован: Вс июл 23, 2006 12:01 pm

#7 Сообщение Terranin » Ср сен 06, 2006 5:01 pm

Евгений писал(а):
Smile писал(а): Это лучше опытным путем проверять :D
Времени нету...отчеты, блин... :cry:
А проверить, проверю...
кст народ я вот о чем подумал, надо бы все же договориться о формате выкладки индюков, или исходники или длл, кст некоторые слишком вумные вроде меня могут туды и вируса впихнуть... Не боитесь? :twisted:
Я принимаю только исходники в формате dpr. Поэтому желательно выкладывать свою dll + исходник dpr. Все индикаторы включенные в релиз мной проверены.

Аватара пользователя
Terranin
Site Admin
Сообщения: 846
Зарегистрирован: Вс июл 23, 2006 12:01 pm

#8 Сообщение Terranin » Ср сен 06, 2006 5:04 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

#9 Сообщение Евгений » Чт сен 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;
Так и у меня если будет выбрано нет то часть буферов не должна быть инициализирована.

Аватара пользователя
Terranin
Site Admin
Сообщения: 846
Зарегистрирован: Вс июл 23, 2006 12:01 pm

#10 Сообщение Terranin » Чт сен 07, 2006 11:56 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;
Так и у меня если будет выбрано нет то часть буферов не должна быть инициализирована.
А причем тут это? Ты же пишешь Trigger := 0; и тут же if Trigger = 0 then ... Где же Trigger будет менять свое значение если инициализация проходит только один раз? Процедура инициализации больше не вызывается, при изменении параметров происходит просто полный пересчет буферов индикатора.

Евгений
Сообщения: 34
Зарегистрирован: Вс авг 06, 2006 1:46 pm

#11 Сообщение Евгений » Чт сен 07, 2006 12:49 pm

Terranin писал(а): А причем тут это? Ты же пишешь Trigger := 0; и тут же if Trigger = 0 then ... Где же Trigger будет менять свое значение если инициализация проходит только один раз? Процедура инициализации больше не вызывается, при изменении параметров происходит просто полный пересчет буферов индикатора.
Блин!!! Михаил... а я ведь о чем спрашивал ранее?! Именно о процедуре инициализации!!!!
Вопрос такой, инициализация происходит в процессе загрузки проги или при вызове и установки его в работу?
Короче понял... Динамически параметры в индюке не сильно то поменяешь.... Жаль, но таких индюков я знаю немного так что не було печали.

Аватара пользователя
Terranin
Site Admin
Сообщения: 846
Зарегистрирован: Вс июл 23, 2006 12:01 pm

#12 Сообщение Terranin » Чт сен 07, 2006 1:08 pm

Евгений писал(а):
Terranin писал(а): А причем тут это? Ты же пишешь Trigger := 0; и тут же if Trigger = 0 then ... Где же Trigger будет менять свое значение если инициализация проходит только один раз? Процедура инициализации больше не вызывается, при изменении параметров происходит просто полный пересчет буферов индикатора.
Блин!!! Михаил... а я ведь о чем спрашивал ранее?! Именно о процедуре инициализации!!!!
А я об этом и отвечал ранее что инициализация происходит только один раз при привязке индикатора к диаграмме.

Аватара пользователя
Terranin
Site Admin
Сообщения: 846
Зарегистрирован: Вс июл 23, 2006 12:01 pm

#13 Сообщение Terranin » Чт сен 07, 2006 1:12 pm

Евгений писал(а): Короче понял... Динамически параметры в индюке не сильно то поменяешь.... Жаль, но таких индюков я знаю немного так что не було печали.
Параметры меняются, но буферы задаются один раз и лучше их на лету не перетасовывать. Я во всяком случае на такие дела не рассчитывал. А для того чтобы реагировать на изменение параметров потом я могу добавить скажем процедуру OnParamsChanged которая будет вызываться при изменении параметров.

Евгений
Сообщения: 34
Зарегистрирован: Вс авг 06, 2006 1:46 pm

#14 Сообщение Евгений » Чт сен 07, 2006 1:32 pm

Terranin писал(а):Параметры меняются, но буферы задаются один раз и лучше их на лету не перетасовывать. Я во всяком случае на такие дела не рассчитывал. А для того чтобы реагировать на изменение параметров потом я могу добавить скажем процедуру OnParamsChanged которая будет вызываться при изменении параметров.
Нуу ежели народу нужно станет... а вообще такая функция для пижонства, чтобы кучей дополнительных параметров индикатор перегрузить. Но вот чего бы не помешало это функция возврата индекса от старшего таймфрейма к младшему... Уровневых индюков или тех же МА рассчитанных на часах и поставленных на минутные таймы в стратегиях дохрена!!! А пересчитывать таймфрейм дело муторное как я убедился!!! Кст добавь еще 10 и 30 минутные таймфреймы в анализ, если пока молчат то скоро попросят! Счас вот сижу читаю о системе настроенной на 30минутки в МТ4.

Ответить