Общие вопросы по разработке > индикатор сбоит и глючит
индикатор сбоит и глючит
.......AddParameter("PeriodType", 0);
.......
if (PeriodType == 4 && BarDate(1).Month != BarDate(0).Month) VABid = 0; //месяцы
VaBid - это счетчик который должен обнулятся каждый месяц, как только я переключаю таймфрейм на 1 минуту и начинаю двигать, уменьшать, увеличивать график, VaBid показывает разные данные в одну и ту же минуту в один и тот же день в зависимости от положения графика, то есть, как я предполагаю, счетчик обнуляется не в первую минуту первого дня месяца, а даже не обнуляется, а каким то макаром изменяются данные то в большую то в меньшую сторону в зависимости от положения графика в окне, ну и размеров окна соответственно.
Представим, что у вас обычный индикатор объема и вот индикатор показывает, что в 13.53 за 1 минуту прошло 1000 контрактов вы смотрите на свечу индикатора и да она довольно большая, походу и правда тысяча, но стоит вам передвинуть график на 3 часа назад эта свечка (13.53) находится у вас в правом стороне окна графика и она стала меньше, "ну ничего" думаете вы просто 3 часа назад торги были активнее, объемы больше и из-за масштабирования размеры свечки визуально уменьшились, наводим курсор чтобы проверить и о боги в 13.53 на этой свече прошло не 1000, а 650 контрактов, не веря своим глазам двигаем график к обеду где всего пару минут назад было 13.53 и что мы видим? а видим мы 1000 контрактов в 13.53, двигаем на три часа назад снова 650. Вот такого рода баг на моем индикаторе.
p/s/ пробовал в настройках отключать масштабирование в закладке "оси", не помогло. Ж)
.......
if (PeriodType == 4 && BarDate(1).Month != BarDate(0).Month) VABid = 0; //месяцы
VaBid - это счетчик который должен обнулятся каждый месяц, как только я переключаю таймфрейм на 1 минуту и начинаю двигать, уменьшать, увеличивать график, VaBid показывает разные данные в одну и ту же минуту в один и тот же день в зависимости от положения графика, то есть, как я предполагаю, счетчик обнуляется не в первую минуту первого дня месяца, а даже не обнуляется, а каким то макаром изменяются данные то в большую то в меньшую сторону в зависимости от положения графика в окне, ну и размеров окна соответственно.
Представим, что у вас обычный индикатор объема и вот индикатор показывает, что в 13.53 за 1 минуту прошло 1000 контрактов вы смотрите на свечу индикатора и да она довольно большая, походу и правда тысяча, но стоит вам передвинуть график на 3 часа назад эта свечка (13.53) находится у вас в правом стороне окна графика и она стала меньше, "ну ничего" думаете вы просто 3 часа назад торги были активнее, объемы больше и из-за масштабирования размеры свечки визуально уменьшились, наводим курсор чтобы проверить и о боги в 13.53 на этой свече прошло не 1000, а 650 контрактов, не веря своим глазам двигаем график к обеду где всего пару минут назад было 13.53 и что мы видим? а видим мы 1000 контрактов в 13.53, двигаем на три часа назад снова 650. Вот такого рода баг на моем индикаторе.
p/s/ пробовал в настройках отключать масштабирование в закладке "оси", не помогло. Ж)
- evge
- Администратор
- Сообщения: 1811
- Зарегистрирован: 04 фев 2016, 09:46
- Откуда: Млечный путь, планета Земля
- Благодарил (а): 83 раза
- Поблагодарили: 366 раз
- Контактная информация:
Re: индикатор сбоит и глючит
всё дело в ТФ и загружаемой истории.
Если ТФ это 1 минута представьте какую историю должен загрузить терминал для пары месяцев.
грубо, по акциям 8.75 (час) * 60 (мин) = 525
525 (мин) * 20 (дней) = примерно 10500 баров, и это только 1 месяц
Индикатор просто не получает все сведения для расчета.
Попробуйте задать в параметре множитель для загрузки истории, но думаю терминалу это не понравится
AddParameter("x", 10500, 2);
Если ТФ это 1 минута представьте какую историю должен загрузить терминал для пары месяцев.
грубо, по акциям 8.75 (час) * 60 (мин) = 525
525 (мин) * 20 (дней) = примерно 10500 баров, и это только 1 месяц
Индикатор просто не получает все сведения для расчета.
Попробуйте задать в параметре множитель для загрузки истории, но думаю терминалу это не понравится
AddParameter("x", 10500, 2);
никогда такого не было и вот опять
- evge
- Администратор
- Сообщения: 1811
- Зарегистрирован: 04 фев 2016, 09:46
- Откуда: Млечный путь, планета Земля
- Благодарил (а): 83 раза
- Поблагодарили: 366 раз
- Контактная информация:
Re: индикатор сбоит и глючит
Из документации:
AddParameter(Name, Value)
AddParameter(Name, Value, Length) – функция добавление в индикатор параметра, который можно задавать через форму настройки.
Параметры:
• Name – имя параметра, должно удовлетворять требованиям описания переменной содержать латинские символы и цифры.
• Value – значение по умолчанию
• Length – опциональный параметр, определяющий масштабный коэффициент (опциональный параметр), позволяющий определять требуемую длину истории для правильного расчета индикатора.
o Length = 0 или нет данного параметра – параметр не влияет на загрузку требуемой истории по инструменту;
o Length > 1 – в качестве требуемой длины истории для расчета индикатора берется значение равное Length * Value.
Пример.
AddParameter(Name, Value)
AddParameter(Name, Value, Length) – функция добавление в индикатор параметра, который можно задавать через форму настройки.
Параметры:
• Name – имя параметра, должно удовлетворять требованиям описания переменной содержать латинские символы и цифры.
• Value – значение по умолчанию
• Length – опциональный параметр, определяющий масштабный коэффициент (опциональный параметр), позволяющий определять требуемую длину истории для правильного расчета индикатора.
o Length = 0 или нет данного параметра – параметр не влияет на загрузку требуемой истории по инструменту;
o Length > 1 – в качестве требуемой длины истории для расчета индикатора берется значение равное Length * Value.
Пример.
Код: Выделить всё
AddParameter("Period", 5); // Создание параметра с именем "Реriod" и значением по умолчанию 5.
AddParameter("SD", 0.5); // Создание параметра с именем "SD" и значением по умолчанию 0.5
AddParameter("History", 100, 2);// Создание параметра с именем "History" и значением 100
// требующий размер истории 200 баров ( т.е. 100*2)
никогда такого не было и вот опять
Re: индикатор сбоит и глючит
параметр создан, а в function Evaluate() нужно его вставлять? или он автоматом будет работать? if (PeriodType == 4 && BarDate().Month != BarDate(1).Month) VABid = 0; History = 10500; ??? Так? Извините не допирает немного до меня. Будет всем проще если дадите название индикатора где регулировка истории для расчета происходит, подскажите плз
- evge
- Администратор
- Сообщения: 1811
- Зарегистрирован: 04 фев 2016, 09:46
- Откуда: Млечный путь, планета Земля
- Благодарил (а): 83 раза
- Поблагодарили: 366 раз
- Контактная информация:
Re: индикатор сбоит и глючит
в Initialize()
как обычный параметр задается, даже к обычному параметру и добавляется
например, у вас есть параметр Period
AddParameter("Period", 1000);
Но вы не уверены что в график загружено будет 1000 баров да и надо может быть по коду больше для анализа, поэтому добавляем так:
AddParameter("Period", 1000, 5);
В итоге заставляем терминал попытаться загрузить 1000 * 5 баров на график , но кажется там есть предел.
как обычный параметр задается, даже к обычному параметру и добавляется
например, у вас есть параметр Period
AddParameter("Period", 1000);
Но вы не уверены что в график загружено будет 1000 баров да и надо может быть по коду больше для анализа, поэтому добавляем так:
AddParameter("Period", 1000, 5);
В итоге заставляем терминал попытаться загрузить 1000 * 5 баров на график , но кажется там есть предел.
никогда такого не было и вот опять
Re: индикатор сбоит и глючит
Но у меня только один параметр это PeriodType и влияет он только на выбор точки начала расчета, как завязать его с историей в 10000 баров
if (PeriodType == 2 && BarDate() != BarDate(1)) VABid = 0; //дни
if (PeriodType == 3 && BarDate().DayOfWeek != BarDate(1).DayOfWeek) VABid = 0; //недели
if (PeriodType == 4 && BarDate().Month != BarDate(1).Month) VABid = 0;//месяцы
AddParameter("PeriodType", 0);
прописать в нем вот так?
AddParameter("PeriodType", 4, 2500); ??????? 4 * 2500 = 10000 баров?
if (PeriodType == 2 && BarDate() != BarDate(1)) VABid = 0; //дни
if (PeriodType == 3 && BarDate().DayOfWeek != BarDate(1).DayOfWeek) VABid = 0; //недели
if (PeriodType == 4 && BarDate().Month != BarDate(1).Month) VABid = 0;//месяцы
AddParameter("PeriodType", 0);
прописать в нем вот так?
AddParameter("PeriodType", 4, 2500); ??????? 4 * 2500 = 10000 баров?
- evge
- Администратор
- Сообщения: 1811
- Зарегистрирован: 04 фев 2016, 09:46
- Откуда: Млечный путь, планета Земля
- Благодарил (а): 83 раза
- Поблагодарили: 366 раз
- Контактная информация:
Re: индикатор сбоит и глючит
Добавить любой другой параметр, только для цели загрузки истории.
Но всё равно, как и говорил выше, такой объем он не загрузит 10500 + * ....
Но всё равно, как и говорил выше, такой объем он не загрузит 10500 + * ....
никогда такого не было и вот опять
Вернуться в «Общие вопросы по разработке»
Кто сейчас на конференции
Сейчас этот форум просматривают: Google [Bot] и 3 гостя