Скачать MetaTrader 5

iCastom запаздывает - страница 2

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Часто выкладываешь исходный код? Узнай, как это делать правильно!
Evgeny Potapov
1632
Evgeny Potapov 2011.04.17 17:55  
storm:
Как вариант, индюк рассчитывается по Close советник тестируется по Open

Советник у меня и так тестируется по приходу нового бара,

а как привязать "индюка" к Close - подскажите, пожалуйста!

Victor Nikolaev
Модератор
14500
Victor Nikolaev 2011.04.17 17:56  
Eugene1:

int i, // Индекс бара

Counted_bars=IndicatorCounted(); // Количество просчитанных баров
i=Bars-Counted_bars; // Индекс первого непосчитанного

if (i>1) i=i-1; else return(0);

while(i>=0) // Цикл по непосчитанным барам
{

}

Если я правильно понял - это имеется в виду

Растолкуйте, пожалуйста, подробнее!

Я не могу понять самостоятельно.

В моём понимании это исправление приведёт лишь к тому, что индикатор не будет пересчитываться на каждом тике - только и всего.

Он пересчитатся только с приходом нового бара.

Но как это может повлиять на проблему связанную с тем, что эксперт от индикатора не получает свежего результата?

Или (скорее всего) я по-крупному чего-то не понимаю.


Индикатор должен обрабатывать не до конца обработанный первый бар и нулевой. В вашем варианте обрабатывался только нулевой, Но если результат зависел от предыдущего расчета, то возникала погрешность вычисления, так как не был до конца обработан первый бар

Обычно

if (i>1) i=Bars-period-1;

где period - период расчета индикатора

Хотя можно использовать и другие варианты

Evgeny Potapov
1632
Evgeny Potapov 2011.04.17 21:57  
Vinin:


Индикатор должен обрабатывать не до конца обработанный первый бар и нулевой. В вашем варианте обрабатывался только нулевой, Но если результат зависел от предыдущего расчета, то возникала погрешность вычисления, так как не был до конца обработан первый бар

Обычно

где period - период расчета индикатора

Хотя можно использовать и другие варианты


А вот такой вариант:

int i, // Индекс бара
Counted_bars=IndicatorCounted(); // Количество просчитанных баров
i=Bars-Counted_bars; // Индекс первого непосчитанного

if (i>0) i=i-1; else return(0);

while(i>=0) // Цикл по непосчитанным барам
{

}

А вот так, с нулём?

Нормально?
 

Алексей Тарабанов
7195
Алексей Тарабанов 2011.04.18 00:15  
Eugene1:

Советник у меня и так тестируется по приходу нового бара,

Если выложенный Вами текст функции распознавания нового бара полон, то Ваш советник не распознает новый бар, а работает на каждом тике. Следствие - зависимость от перерисовки индикатора, будь он внешним,или встроенным в Вашу программу.
Evgeny Potapov
1632
Evgeny Potapov 2011.04.18 18:45  
tara:
Если выложенный Вами текст функции распознавания нового бара полон, то Ваш советник не распознает новый бар, а работает на каждом тике. Следствие - зависимость от перерисовки индикатора, будь он внешним,или встроенным в Вашу программу.

Чего не хватает в моём тексте распознавания нового бара?

Разве что объявления переменной хранящей время прихода прежнего бара статической?

Это объявление есть.

Что ещё исправить, чтобы работал по новым барам? 

12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий