АвторСообщение
Anatoliy



Сообщение: 2
Зарегистрирован: 13.07.14
Репутация: 0
ссылка на сообщение  Отправлено: 21.07.14 21:22. Заголовок: Я новичок.


Пишу пользовательский индикатор на основе пересечение уровни 20 и 80. Если главная линия Stochastic пересекла уровень 80 (сверху - вниз), то выводит стрелка Sell на ценовых графиках, а если главная линия Stochastic пересекла уровень 20 (снизу - верх), то стрелка Buy на ценовых графиках.

#property strict
#property indicator_chart_window
#property indicator_buffers 2
//--- plot Buy
#property indicator_type1 DRAW_ARROW
#property indicator_color1 clrGreen
#property indicator_style1 STYLE_SOLID
#property indicator_width1 1
//--- plot Sell
#property indicator_type2 DRAW_ARROW
#property indicator_color2 clrRed
#property indicator_style2 STYLE_SOLID
#property indicator_width2 1
//--- input parameters

//--- indicator buffers
double BuyBuffer[];
double SellBuffer[];
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
//+------------------------------------------------------------------+
//| Функция инициализации пользовательского индикатора |
//+------------------------------------------------------------------+
int init()
{
//---
SetIndexBuffer(0,BuyBuffer);
SetIndexArrow(0,233);
SetIndexStyle(0,DRAW_ARROW);
//---
SetIndexBuffer(1,SellBuffer);
SetIndexArrow(1,234);
SetIndexStyle(1,DRAW_ARROW);
//---
SetIndexEmptyValue(0,80.0);
SetIndexEmptyValue(1,20.0);
//---
return(0);
}
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
//+------------------------------------------------------------------+
//| Функция пользовательского индикатора итерации |
//+------------------------------------------------------------------+
int start()
{
//---
int i, Counted_bars;

double mainStoc_1 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,1); // бар 1
double mainStoc_2 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,2); // бар 2

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

for(i=0;i>=0;i--)
{
if (mainStoc_2 > 80.0 && mainStoc_1 < 80.0)
SellBuffer = Low-5*Point;
else
SellBuffer = 0.0;

if (mainStoc_2 < 20.0 && mainStoc_1 > 20.0)
BuyBuffer = High+5*Point;
else
BuyBuffer = 0.0;
}
//---
return(0);
}

И в результатах индикатор вообще не работает.
Как его исправит?



Спасибо: 0 
Профиль
Ответов - 300 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 All [только новые]


Scriptong





Сообщение: 635
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 22.07.14 13:25. Заголовок: Добрый день, Анатоли..


Добрый день, Анатолий.

Давайте начнем с азов: как работает индикатор?
Функция start индикатора запускается только под одному событию - приходу нового тика. Так, если мы только что запустили индикатор на выполнение, то он обработает только один пришедший тик. Пользователю же нужно, чтобы индикатор отобразил свои показания на всей или хотя бы на части доступной истории. Таким образом, необходимо иметь в виду, что при первой загрузке индикатор должен рассчитать свои показания для уже имеющихся баров, т. е. пройтись по истории.
Достигается это путем перебора всех исторических баров:

 цитата:
int total = Bars - 1;
for (int i = total; i >= 0; i--)
{
// расчет показаний индикатора на баре с индексом i
}


В Вашем же примере цикл обрабатывает только текущий формирующийся бар с индексом 0.
Но и указанный мною вариант не является до конца правильным, т. к. при таком подходе индикатор на каждом новом тике будет снова и снова обрабатывать всю историю, т. е. выполнять бесполезную работу, которая будет тормозить систему. Для того чтобы не рассчитывать уже вычисленные данные повторно, в старом MQL4 есть функция IndicatorCounted(). В обновленном MQL4 надобность в ней отпала.
Посмотрите пример использования этой функции в индикаторе - здесь.

Далее. Внутри цикла Вы оперируете массивами (SellBuffer, BuyBuffer, Low, High) как переменными. Это в корне неверно. Возможно, Вы просто не понимаете суть массивов. О них можно почитать в Учебнике.

И самая главная ошибка - внутри цикла используется сравнение одних и тех же данных (mainStoc_1 и mainStoc_2), значение которых почему-то вычисляется за пределами цикла.

Также есть несколько мелких ошибок (странное использование SetIndexEmptyValue), но о них позже, когда разберемся с основами.

Спасибо: 0 
Профиль
Anatoliy



Сообщение: 3
Зарегистрирован: 13.07.14
Репутация: 0
ссылка на сообщение  Отправлено: 22.07.14 20:57. Заголовок: Добрый суток, Игорь...


Добрый суток, Игорь.

Я голову ломаю.

Да, давайте начнем с азов!
Но я пока ещё не далеко понял. Я его изменил условия на пересечение основной и сигнальной линии, и результат есть, но есть нюансы.

int start()
{
//---
int limit = Bars - 1;

for(int i=limit;i>=0;i--)
{
double mainStoc_0 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,i);
double signalStoc_0 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,i);
double mainStoc_1 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,i+1);
double signalStoc_1 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,i+1);


//--- Пересечение основной и сигнальной линии -----------------
if ( signalStoc_0 < mainStoc_0 && signalStoc_1 > mainStoc_1)
BuyBuffer = High+10*Point;

if ( signalStoc_0 > mainStoc_0 && signalStoc_1 < mainStoc_1)
SellBuffer = Low-10*Point;
//-------------------------------------------------------------

}
//---
return(0);
}

1. Функция SetIndexEmptyValue я удалил, пока не знаю зачем (устанавливает значение пустой величины для линии индикатора).
2. Сигнал выводит по текущему бару (0 бар), мне надо завещающий бар (1 бар). Это от чего зависит?
3. Расстояния между стрелка и максимальный или минимальный бар. Посмотреть на M5 то нармально, а если переключить на H4 уже по-другому. Так должно быть?
4. Пересечение уровни 20 и 80. Нужно написать условие внутри цикла? Условия, например: if (mainStoc_0 > 20 && mainStoc_1 < 20) для Buy, а для Sell аналогично как Buy только знаки поменять.

Что нужно изменит или/и добавит внутри функция start()?

Спасибо: 0 
Профиль
Scriptong





Сообщение: 638
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 22.07.14 21:06. Заголовок: Уже лучше, но пока п..


Уже лучше, но пока присутствует впечатление, что код написан "под копирку" (по аналогии с другими кодами), а не с полным осознанием того, что Вы пишете. И не забудьте поразмыслить насчет функции IndicatorCounted(). Ее Вы так и не применили.
Anatoliy пишет:

 цитата:
1. Функция SetIndexEmptyValue я удалил, пока не знаю зачем (устанавливает значение пустой величины для линии индикатора).


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

Anatoliy пишет:

 цитата:
2. Сигнал выводит по текущему бару (0 бар), мне надо завещающий бар (1 бар). Это от чего зависит?


Вы же сами написали в коде:

 цитата:
double mainStoc_0 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,i);
double signalStoc_0 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,i);
double mainStoc_1 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,i+1);
double signalStoc_1 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,i+1);


Подумайтехорошнько: что здесь есть нулевой бар, а что первый?

Anatoliy пишет:

 цитата:
3. Расстояния между стрелка и максимальный или минимальный бар. Посмотреть на M5 то нармально, а если переключить на H4 уже по-другому. Так должно быть?


Это предлагаю оставить на потом, т. к. вопрос относится уже к эстетике, а не к правильности вычислений.

Anatoliy пишет:

 цитата:
4. Пересечение уровни 20 и 80. Нужно написать условие внутри цикла? Условия, например: if (mainStoc_0 > 20 && mainStoc_1 < 20) для Buy, а для Sell аналогично как Buy только знаки поменять.


Да, но пока, судя по коду, с массивами Вы так и не разобрались. Ведь приведенный код не компилируется. Разве у Вас не так?

Спасибо: 0 
Профиль
Anatoliy



Сообщение: 4
Зарегистрирован: 13.07.14
Репутация: 0
ссылка на сообщение  Отправлено: 22.07.14 21:19. Заголовок: Прошу прошения. Что-..


Прошу прошения.
Что-то квадратные скобки пропали. Я скопировал коды и вставил, а потом отправил и проверил, а квадратные скобки пропали. Квадратные скобки должен быть после BuyBuffer, SellBuffer, High, Low и между квадратные скобки переменная i.


Спасибо: 0 
Профиль
Scriptong





Сообщение: 639
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 22.07.14 21:21. Заголовок: Anatoliy пишет: Про..


Anatoliy пишет:

 цитата:
Прошу прошения.
Что-то квадратные скобки пропали. Я скопировал коды и вставил, а потом отправил и проверил, а квадратные скобки пропали. Квадратные скобки должен быть после BuyBuffer, SellBuffer, High, Low и между квадратные скобки переменная i.


Действительно, забыл. Дело в том, что буква i в квадратных скобках - это один из BB-кодов форума, который означает начало выделения слов курсивом.
Тогда вопрос по массивам снимается. Остается только IndicatorCounted и вопрос нахождения баров 1 и 2 вместо 0 и 1, как сейчас в коде.

Спасибо: 0 
Профиль
Anatoliy



Сообщение: 6
Зарегистрирован: 13.07.14
Репутация: 0
ссылка на сообщение  Отправлено: 22.07.14 21:48. Заголовок: Scriptong пишет: Де..


Scriptong пишет:

 цитата:
Действительно, забыл. Дело в том, что буква i в квадратных скобках - это один из BB-кодов форума, который означает начало выделения слов курсивом.
Тогда вопрос по массивам снимается. Остается только IndicatorCounted и вопрос нахождения баров 1 и 2 вместо 0 и 1, как сейчас в коде.


Я не забыл, на форумах только что пришёл, ни разу не пользовался. А так работает не плохо мой индикатор, но есть нюансы. Хочу спросить, как загрузит файлы или/и рисунки, чтобы показать. Я сейчас устал, мне нужно отдохнут завтра другой день.

Спасибо: 0 
Профиль
Scriptong





Сообщение: 641
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 23.07.14 14:17. Заголовок: Anatoliy пишет: Я н..


Anatoliy пишет:

 цитата:
Я не забыл, на форумах только что пришёл, ни разу не пользовался.


Я не про Вас, а про себя. Это я забыл о BB-кодах, сам недавно на эти грабли наступал.

Спасибо: 0 
Профиль
Anatoliy



Сообщение: 5
Зарегистрирован: 13.07.14
Репутация: 0
ссылка на сообщение  Отправлено: 22.07.14 21:30. Заголовок: То есть do..


То есть

double mainStoc_0 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,i+1);
double signalStoc_0 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,i+1);
double mainStoc_1 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,i+2);
double signalStoc_1 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,i+2);


Спасибо: 0 
Профиль
Scriptong





Сообщение: 642
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 23.07.14 14:21. Заголовок: Anatoliy пишет: То ..


Anatoliy пишет:

 цитата:
То есть

double mainStoc_0 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,i+1);
double signalStoc_0 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,i+1);
double mainStoc_1 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,i+2);
double signalStoc_1 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,i+2);


Правильно. Таким образом, на баре с индексом i, который в данный момент времени можно условно называть "текущим баром", Вы получаете значения линий стохастика на двух последних сформированных барах. Бар с индексом (i + 1) - это условно первый бар, а (i + 2) - условно второй.

Далее посмотрите, пожалуйста, пример с работой функции IndicatorCounted. Если что-то будет непонятно, то задайте вопрос, попробую разъяснить.

Спасибо: 0 
Профиль
Anatoliy



Сообщение: 7
Зарегистрирован: 13.07.14
Репутация: 0
ссылка на сообщение  Отправлено: 23.07.14 18:43. Заголовок: Добрый суток, Игорь...


Добрый суток, Игорь.

Scriptong пишет:

 цитата:
Далее посмотрите, пожалуйста, пример с работой функции IndicatorCounted. Если что-то будет непонятно, то задайте вопрос, попробую разъяснить.


Я пока в голову не дошел, давайте разберемся все по порядку. Перед тем понять, как работает, я воспользовался с помощью скрипта, но результат отличает.

1 пример.

 цитата:

int total = Bars - 1;
for(int i=total;i>=0;i--)
{
//.....
}


Bars это общее количество баров на текущем графике и отнимаем на один бар, зачем отнимать бар?
Или можно попроще for(int i=Bars; i>=0; i--). Далее, цикл зацикливает, берет от начала исторического баров до текущего бар.
Правильно я понял?

2 пример.

 цитата:

int limit;
int counted_bars=IndicatorCounted();
//---- последний посчитанный бар будет пересчитан
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
//---- основной цикл
for(int i=0; i<limit; i++)
{
//.....
}



IndicatorCounted() это возвращает количество баров, не измененных после последнего вызова индикатора. Посмотрел, как работает в скрипте, что это -1, то есть еще один бар перед 0 бара. Цикл зацикливает наоборот, смылено представил, но этот код у меня не работает в пользовательском индикаторе, и не могу понять.

Спасибо: 0 
Профиль
Scriptong





Сообщение: 645
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 23.07.14 22:11. Заголовок: Anatoliy пишет: Bar..


Anatoliy пишет:

 цитата:
Bars это общее количество баров на текущем графике и отнимаем на один бар, зачем отнимать бар?


Bars - это количество, а индексация баров начинается с нуля. Так, если баров на графике 3, то их индексы будут 0, 1 и 2. Если обратиться к бару №3, то получим фатальную ошибку - выход за пределы массива баров.

Anatoliy пишет:

 цитата:
Цикл зацикливает наоборот, смылено представил, но этот код у меня не работает в пользовательском индикаторе, и не могу понять.


Да, в этом примере цикл идет от конца истории к ее началу. В большинстве случаев лучше использовать обратную нумерацию.

Сама же функция IndicatorCounted работает следующим образом:
1. Запуск индикатора. Функция возвращает значение 0 - еще не было посчитанных баров. В итоге переменная limit будет иметь значение Bars. В показанном примере будут рассчитаны все бары от 0 до Bars, не включая бара с индексом Bars (такого попросту нет). Индикатор рассчитывает все исторические значения.
2. Следующий тик. Функция возвращает значение Bars (на предыдущем тике были рассчитаны все бары). В итоге limit получает значение 1. Индикатор пересчитывает значения на баре с индексом 0 - текущий бар.
3. В момент формирования нового бара IndicatorCounted выдаст значение, на 1 меньше Bars. Переменная limit получит значение 2. Индикатор заново рассчитает значения на барах с индексами 0 и 1.

Спасибо: 0 
Профиль
Anatoliy



Сообщение: 8
Зарегистрирован: 13.07.14
Репутация: 0
ссылка на сообщение  Отправлено: 14.08.14 18:22. Заголовок: Добрый суток, Игорь ..


Добрый суток, Игорь и любители трейдинга.

У меня все новые и новые проблемы в процессе работы программировании, оптимизации и тестировании. Больше всего в популярности я пользуюсь ноутбуком и иногда у знакомых, но это не так комфортно и каждый раз ломаю голову. В первом деле хочу приобрести ПК, но я не тороплюсь без знания системного блока и не хочу просто так приобрести ПК, а потом возникали множественные вопросы.

Я обращаю, поделите и позвольте мне собрать информации о железе для системного блока.

Я написал консольное приложения для проверки быстродействия ПК в Visual Studio 2010 Express, но возникла ошибка, пока не могу устранить, эта ошибка не синтетическая и не компиляторная, на мой взгляд, скорей все Windows или ноутбук, пока не известно. Как только я обнаружу, исправлю и вложу файл (приложения для проверки быстродействия ПК).

Я еще раз обращаю, поделите и позвольте мне собрать информации о железе для работы программировании, оптимизации и тестировании.



Спасибо: 0 
Профиль
Scriptong





Сообщение: 708
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 15.08.14 16:52. Заголовок: Anatoliy пишет: Я о..


Anatoliy пишет:

 цитата:
Я обращаю, поделите и позвольте мне собрать информации о железе для системного блока.


Если речь идет о комфортной работе с MQL4/MQL5 (программировании), то особых требований к железу и нет. В свое время мне было достаточно вот такого дедушки:
    1. Процессор AMD Sempron 3200+ Socket AM2
    2. Материнская плата Biostar NF520-A2, Socket AM2, PCI-E, sound int, LAN int
    3. Модуль памяти DDR-II 1Gb
    4. Модуль памяти DDR-II 2Gb
    5. Видеокарта Inno3D PCI-E GeForce 7300GS-F4E3 128Mb DDR2
    6. HDD Seagate 500GB

Естественно, если речь идет о тестировании и оптимизации экспертов, то такой компьютер решает поставленные задачи ну о-о-очень долго.
То же самое можно сказать и о работе в Visual Studio. На указанном железе компиляция проектов нередко занимала 5 минут и больше. Это серьезно сбивало ритм работы.

Более-менее современные конфигурации это:
    1. Процессор 64-бит от 4-х ядер с тактовой частотой каждого ядра 3GHz и более
    2. Материнская плата с поддержкой памяти DDR3 и частотой шины данных не менее 2GHz
    3. Оперативная память не менее 8Gb
    4. Видеокарта на памяти DDR3 - DDR5 с объемом от 1 Гб и разрядностью шины данных не менее 256 бит
    5. Жесткий диск - система на SSD, данные на HDD


Спасибо: 0 
Профиль
Anatoliy



Сообщение: 9
Зарегистрирован: 13.07.14
Репутация: 0
ссылка на сообщение  Отправлено: 18.08.14 11:04. Заголовок: Scriptong пишет: Бо..


Scriptong пишет:

 цитата:
Более-менее современные конфигурации это:


Игорь, спасибо за совет.

Во время тестирования в режиме визуализации там есть прокрутка режимы скорости. Если поставит 31, то еле-еле, а если поставит 32, то я сам не успеваю визуально проанализировать.

Как регулировать скорость по себя?


Спасибо: 0 
Профиль
Scriptong





Сообщение: 712
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 18.08.14 17:03. Заголовок: Anatoliy пишет: Как..


Anatoliy пишет:

 цитата:
Как регулировать скорость по себя?


К сожалению, в МТ4 никак. Об этом разработчиков терминала просят уже много лет. Пока они отреагировали на эту просьбу в МТ5 - там прокрутка более плавная, хотя тоже не идеальная. Плюс к этому в МТ5 скорость визуализации можно настраивать более точно - есть специальные кнопки увеличения скорости на одно деление и уменьшение на одно деление.

Спасибо: 0 
Профиль
Anatoliy



Сообщение: 10
Зарегистрирован: 13.07.14
Репутация: 0
ссылка на сообщение  Отправлено: 18.08.14 21:19. Заголовок: В MQL5 есть минус, т..


В MQL5 есть минус, т.е. нельзя скрипт присоединить на ценовом графике.

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

Спасибо: 0 
Профиль
Scriptong





Сообщение: 713
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 19.08.14 19:30. Заголовок: Anatoliy пишет: В M..


Anatoliy пишет:

 цитата:
В MQL5 есть минус, т.е. нельзя скрипт присоединить на ценовом графике.


Возможно, не совсем понял. Если же в прямом смысле, то в МТ5 можно присоединить скрипт к ценовому графику. Если же речь идет о программном присоединении скрипта к графику, то это также не было доступно и в MQL4 - нет такой функции. Для этого используются недокументированные возможности платформ.
В МТ5 можно программно присоединить скрипт косвенно - путем загрузки шаблона. Есть такая функция - ChartApplyTemplate. Перед ее использованием заготавливаете шаблон, в котором уже есть скрипт. Причем, если не хочется изменять текущие настройки графика, то можно и вовсе красиво сделать:
1. Сохранить текущие настройки при помощи ChartSaveTemplate.
2. Внести изменения в сохраненный шаблон, добавив туда скрипт.
3. Загрузить шаблон.

Anatoliy пишет:

 цитата:
Игорь, подскажи мне, где статьи описаны, например, рисует фон на ценовом графике. Я хочу попробовать написать пользовательский индикатор на основе пересечение 2MA, а фон будет рисоваться начала пересечения 2MA, максимум, минимум и конец пересечения 2MA в виде прямоугольника.


Можно взять пример из документации: MQL5 и MQL4. Хотя, по-моему, оба примера одинаковы

Спасибо: 0 
Профиль
Anatoliy



Сообщение: 11
Зарегистрирован: 13.07.14
Репутация: 0
ссылка на сообщение  Отправлено: 31.08.14 17:11. Заголовок: Добрый суток, Игорь...


Добрый суток, Игорь.

Как создать объект прямоугольник (OBJ_RECTANGLE) с учётом двумя скользящей средней? В справочнике, в форуме с трудом ломаю голову, а как создать OBJ_LABEL для меня уже легко, потому что в учебнике хорошо написано, а вот прямоугольник .

Например, зелёный треугольник начинает рисовать когда быстрая МА пересекает медленная МА снизу вверх, а красный треугольник зеркально. Вот, я изобразил рисунок OBJ_RECTANGLE

Спасибо: 0 
Профиль
Scriptong





Сообщение: 745
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 01.09.14 09:21. Заголовок: Прямоугольник создае..


Прямоугольник создается достаточно простой функцией (она есть во многих моих индикаторах):

 цитата:
void ShowRectangle(string name, int windowIndex, datetime time1, double price1, datetime time2, double price2, color clr, string descr, bool back = true)
{
if (ObjectFind(name) < 0)
{
ObjectCreate(name, OBJ_RECTANGLE, windowIndex, time1, price1, time2, price2);
ObjectSet(name, OBJPROP_COLOR, clr);
ObjectSet(name, OBJPROP_BACK, back);
ObjectSetText(name, descr);
return;
}

ObjectMove(name, 0, time1, price1);
ObjectMove(name, 1, time2, price2);
}



или на новый лад вот так:

 цитата:
void ShowRectangle(string name, int windowIndex, datetime time1, double price1, datetime time2, double price2, color clr, string descr, bool back = true)
{
if (ObjectFind(name) < 0)
{
ObjectCreate(0, name, OBJ_RECTANGLE, windowIndex, time1, price1, time2, price2);
ObjectSetInteger(0, name, OBJPROP_COLOR, (int)clr);
ObjectSetInteger(0, name, OBJPROP_BACK, (int)back);
ObjectSetString(0, name, OBJPROP_TEXT, descr);
return;
}

ObjectMove(name, 0, time1, price1);
ObjectMove(name, 1, time2, price2);
}



Как только зарегистрировали пересечение, вызываете функцию, передавая ей нужный цвет прямоугольника. При этом нужно учесть, что последнее пересечение находится в активной фазе, а значит последний прямоугольник нужно не создавать заново, а просто обновлять. Чтобы обновить прямоугольник, нужно вызвать указанную функцию с тем же именем объекта. В результате получаем алгоритм, который в качестве имени объектов должен использовать время пересечения средних. Это позволяет различать прямоугольники между собой, а также не создавать несколько прямоугольников на одно и тоже пересечение.

Спасибо: 0 
Профиль
Anatoliy



Сообщение: 13
Зарегистрирован: 13.07.14
Репутация: 0
ссылка на сообщение  Отправлено: 01.09.14 13:25. Заголовок: Для себя заготовил и..


Для себя заготовил индикатор с двумя скользящей средней и питаюсь добавит OBJ_RECTANGLE. Я выбрал 1-й вариант Scriptong пишет:

 цитата:
void ShowRectangle(string name, int windowIndex, datetime time1, double price1, datetime time2, double price2, color clr, string descr, bool back = true)
{
if (ObjectFind(name) < 0)
{
ObjectCreate(name, OBJ_RECTANGLE, windowIndex, time1, price1, time2, price2);
ObjectSet(name, OBJPROP_COLOR, clr);
ObjectSet(name, OBJPROP_BACK, back);
ObjectSetText(name, descr);
return;
}

ObjectMove(name, 0, time1, price1);
ObjectMove(name, 1, time2, price2);
}



Вот текстовой файл ShowRectangle
Игорь, посмотрите, это код не правильно, что надо изменит или/и добавит?

Спасибо: 0 
Профиль
Scriptong





Сообщение: 752
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 02.09.14 14:37. Заголовок: Anatoliy пишет: Иго..


Anatoliy пишет:

 цитата:
Игорь, посмотрите, это код не правильно, что надо изменит или/и добавит?


1. Вы используете один и тот же прямоугольник. То есть с каждым новым пересечением он перемещается, вместо того, чтобы остаться на месте пересечения.
2. Неправильное написание условия пересечения средних.
3. Время начала и окончания прямоугольника (time1 и time2) одно и то же. В итоге прямоугольник вырождается в вертикальную линию, которую на графике можно и не заметить.

Решение
Для каждого нового пересечения необходимо изменять имя объекта. Соответственно, для этого нужно запоминать время последнего пересечения, а при формировании прямоугольника указывать разные время начала и окончания объекта:

 цитата:

#define PREFIX "CRSMA_"
...
datetime lastCrossTime = 0;
double lastHigh, lastLow;
...
while (i >= 0)
{
...
if(Buffer_fast_MA_1[i + 1] > Buffer_average_MA_2[i + 1] && Buffer_fast_MA_1[i + 2] < Buffer_average_MA_2[i + 2])
{
lastCrossTime = Time[i + 1];
lastHigh = High[ i ];
lastLow = Low[ i ];
ShowRectangle(PREFIX + IntegerToString(lastCrossTime), 0, lastCrossMA, lastHigh, Time[ i ], lastLow, clrLime);
}

if(Buffer_fast_MA_1[i + 1] < Buffer_average_MA_2[i + 1] && Buffer_fast_MA_1[i + 2] > Buffer_average_MA_2[i + 2])
{
lastCrossTime = Time[i + 1];
lastHigh = High[ i ];
lastLow = Low[ i ];
ShowRectangle(PREFIX + IntegerToString(lastCrossTime), 0, lastCrossMA, lastHigh, Time[ i ], lastLow, clrLime);
}
}



Этот код формирует только начальные прямоугольники на пересечениях средних. Нужно еще добавить слежение за развитием ситуации, когда не выполняется ни одно из условий пересечения, чтобы прямоугольники занимали пространство между пересечениями. В этом Вам помогут данные, уже записанные в переменных lastCrossTime, lastHigh и lastLow. Это уже проще.

P. S. Представляйте код в файлах формата mq4, а не docx.

Спасибо: 0 
Профиль
Anatoliy



Сообщение: 15
Зарегистрирован: 13.07.14
Репутация: 0
ссылка на сообщение  Отправлено: 02.09.14 20:50. Заголовок: Вот, я вложил исходн..


Вот, я вложил исходный файл ObjRectangle_2MA, но он ни чего не изображает, а зато компилятор не ругается.

Спасибо: 0 
Профиль
Scriptong





Сообщение: 757
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 03.09.14 10:50. Заголовок: Anatoliy пишет: но ..


Anatoliy пишет:

 цитата:
но он ни чего не изображает, а зато компилятор не ругается.


Еще как ругается Только не компилятор, а интерпретатор:

 цитата:
array out of range in 'ObjRectangle_2MA v.1.mq4' (64,29)



Первый индекс бара, которым оперирует индикатор в цикле, равен Bars - 1 (значение переменной цикла i). Далее же в коде мы обращаемся к барам (i + 1) и (i + 2), то есть это должны быть бары с индексами Bars и Bars + 1. Но таких баров не существует, т. к. всего на графике количество баров равно Bars, т. е. последний бар имеет индекс Bars - 1.

Для этого в цикл нужно передавать значение i, которое является корректным для любых действий в цикле далее:

 цитата:
i = MathMin(Bars-Counted_bars-1, Bars - 3);



В итоге индикатор будет отображать пересечения средних, помеченных тонкими вертикальными линиями. Чтобы их увидеть, нужно присмотреться - они есть. Эти линии - начало формирования прямоугольников. Если бы Вы последовали моему предыдущему совету в точности (установили бы lastCrossTime = Time[i + 1], а не Time[ i ]), то увидели бы именно прямоугольники.

Ну а чтобы прямоугольники указывали всю область пересечения, нужно еще доработать код (см. советы в моем предыдущем сообщении). Для этого в нем уже почти все предусмотрено.

P. S. ну и не забудьте, что прямоугольники Вы хотели видеть закрашенными. Для этого последний параметр при вызове функций ShowRectangle должен быть true, а не false.

Спасибо: 0 
Профиль
Anatoliy



Сообщение: 16
Зарегистрирован: 13.07.14
Репутация: 0
ссылка на сообщение  Отправлено: 03.09.14 14:46. Заголовок: Scriptong пишет: Ещ..


Scriptong пишет:

 цитата:
Еще как ругается Только не компилятор, а интерпретатор:

Т.е. нажать клавиш не F7, а на F5!!!

Все что нужно я исправил ObjRectangle_2MA, но кое-что доработать.
Scriptong пишет:

 цитата:
Ну а чтобы прямоугольники указывали всю область пересечения, нужно еще доработать код (см. советы в моем предыдущем сообщении). Для этого в нем уже почти все предусмотрено.


Советы в твоем предыдущем сообщении есть еще одна переменная lastCrossMA?
По моему, надо добавит еще один цикл для подсчет от пересечения до пересечения

Спасибо: 0 
Профиль
Scriptong





Сообщение: 761
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 03.09.14 20:50. Заголовок: Anatoliy пишет: Т.е..


Anatoliy пишет:

 цитата:
Т.е. нажать клавиш не F7, а на F5!!!


Я имел в виду, что нужно смотреть содержимое вкладки "Эксперт" окна "Терминал" после запуска индикатора. Это уже работает интерпретатор.

Anatoliy пишет:

 цитата:
По моему, надо добавит еще один цикл для подсчет от пересечения до пересечения


Нет, не нужно. Я же писал:

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



То есть дело всего в одном условии, которое выполняется в тех случах, когда не выполняются условия пересечения.

Спасибо: 0 
Профиль
Anatoliy



Сообщение: 17
Зарегистрирован: 13.07.14
Репутация: 0
ссылка на сообщение  Отправлено: 04.09.14 20:28. Заголовок: Вот скринщот после и..


Вот скринщот после изменения GBPUSDH1, NZDUSDH1,
Я продолжаю дорабатывать, ещё нужно найти высоту прямоугольника в отрезке (от пересечения до пересечения 2МА), т.е. найти в отрезке самый максимальный бар и самый минимальный бар. Копался, били варианты той-иной не дали результаты.

Как найти в отрезке максимальный бар и самый минимальный бар? С помощью функцию ArrayMaximum() и ArrayMinimum()???

Спасибо: 0 
Профиль
Scriptong





Сообщение: 769
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 04.09.14 20:36. Заголовок: Anatoliy пишет: Вот..


Anatoliy пишет:

 цитата:
Вот скринщот после изменения GBPUSDH1, NZDUSDH1,


Вы рисуете несколько прямоугольников на интервале пересечения. Нужно же просто модифицировать один последний. Его начальное время формирования мы уже записали в lastCrossTime. Это его уникальный идентификатор.

Anatoliy пишет:

 цитата:
Как найти в отрезке максимальный бар и самый минимальный бар?


Для этого уже предусмотрены переменные lastHigh и lastLow. Их нужно лишь обновлять на каждом баре.



Спасибо: 0 
Профиль
Anatoliy



Сообщение: 19
Зарегистрирован: 13.07.14
Репутация: 0
ссылка на сообщение  Отправлено: 07.09.14 18:40. Заголовок: У меня не получается..


У меня не получается, вот скрин EURUSDM1, сюда я добавил iHighest() и iLowest() получилось такой вид. Как правильно чтоб прямоугольники били???

Спасибо: 0 
Профиль
Scriptong





Сообщение: 781
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 07.09.14 18:54. Заголовок: Anatoliy пишет: У м..


Anatoliy пишет:

 цитата:
У меня не получается, вот скрин EURUSDM1, сюда я добавил iHighest() и iLowest() получилось такой вид. Как правильно чтоб прямоугольники били???


По всей видимости, прямоугольники Вы не обновляете, создавая новые. Покажите код, пожалуйста.

Спасибо: 0 
Профиль
Anatoliy



Сообщение: 20
Зарегистрирован: 13.07.14
Репутация: 0
ссылка на сообщение  Отправлено: 07.09.14 19:00. Заголовок: ObjRectangle_2MA..

Спасибо: 0 
Профиль
Anatoliy



Сообщение: 21
Зарегистрирован: 13.07.14
Репутация: 0
ссылка на сообщение  Отправлено: 07.09.14 19:02. Заголовок: Anatoliy пишет: По ..


Anatoliy пишет:

 цитата:
По всей видимости, прямоугольники Вы не обновляете, создавая новые.


Я не знаю как!

Спасибо: 0 
Профиль
Scriptong





Сообщение: 782
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 07.09.14 19:58. Заголовок: Anatoliy пишет: Я н..


Anatoliy пишет:

 цитата:
Я не знаю как!


Два раза уже писал Вам: необходимо оформить еще одно условие, которое будет выполняться в теле цикла, если нет пересечений. А Вы зачем-то убрали условия пересечения и на каждом новом баре создаете новый прямоугольник.
Всего-то нужно было добавить три строки:

 цитата:
lastHigh = MathMax(lastHigh, High[ i ]);
lastLow = MathMin(lastLow, Low[ i ]);

ShowRectangle(PREFIX + IntegerToString(lastCrossTime), 0, lastCrossTime, lastHigh, Time[ i ], lastLow);



В итоге получаем такой индикатор.

P. S. Ну и удалять все объекты при деинициализации индикатора нельзя. Удалять можно только то, что сама же программа и создала. Для этого существует пользовательская функция DeleteObjectsAll (не путать со штатной ObjectsDeleteAll).

Спасибо: 1 
Профиль
Anatoliy



Сообщение: 22
Зарегистрирован: 13.07.14
Репутация: 0
ссылка на сообщение  Отправлено: 08.09.14 18:27. Заголовок: Игорь, спасибо! :sm3..


Игорь, спасибо!

У меня не опыты, не давно я прошёл на Си. Оказалось не так просто, но и надо знать хорошо по математике, не хорошо надо знать, а отлично знать по математике. И я начал в MQL4, брал простейшие примеры в сайте MQL4 и придумывал что-то иногда не получается.

Спасибо: 0 
Профиль
Scriptong





Сообщение: 786
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 08.09.14 18:31. Заголовок: Anatoliy пишет: И я..


Anatoliy пишет:

 цитата:
И я начал в MQL4, брал простейшие примеры в сайте MQL4 и придумывал что-то иногда не получается.


Штудируйте учебник от корки до корки, пока он не станет для Вас полностью понятным. Несмотря на то, что язык обновился, учебник не потерял свою актуальность - это как раз та информация, которая необходима для начального уровня программирования.

Спасибо: 0 
Профиль
Anatoliy



Сообщение: 23
Зарегистрирован: 13.07.14
Репутация: 0
ссылка на сообщение  Отправлено: 08.09.14 18:52. Заголовок: Я посмотрел, на мног..


Я посмотрел, на много отличается:

1) да, не надо убрать условия пересечения.
2) lastHigh и lastLow инициализированы нули для того чтобы обновит и были добавлены две строки в конце теле цикла для того чтобы присвоит максимальное и минимальное число из двух значений.
3) был заменён на for, на сколько я знаю самые популярные операторы это for и if. И добавлены операторы continue для того чтобы пропустит.
4) заметны ShowRectangle() параметры
5) DeleteObjectsAll() чем отличие от стандартного ObjectsDeleteAll?

Я ещё хочу добавит временной период, а прямоугольники показывает везде, т.е ShowRectangle() добавит ещё один параметр?

И кое-что я обнаружил, что прямоугольник не дорисовывает, значит добавит стандартного функция WindowRedraw() для того чтобы перерисовал прямоугольник?

Спасибо: 0 
Профиль
Scriptong





Сообщение: 789
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 08.09.14 19:15. Заголовок: Anatoliy пишет: las..


Anatoliy пишет:

 цитата:
lastHigh и lastLow инициализированы нули для того чтобы обновит и были добавлены две строки в конце теле цикла для того чтобы присвоит максимальное и минимальное число из двух значений.


Фактически не влияет на результат. Просто правило хорошего тона, которое в некоторых случаях (не предусмотришь, когда) избавит от неуловимых багов.

Anatoliy пишет:

 цитата:
был заменён на for, на сколько я знаю самые популярные операторы это for и if. И добавлены операторы continue для того чтобы пропустит.


Экономит три строки на переходе к новой итерации цикла. Иначе везде, где стоит continue, пришлось бы еще и i++ писать.

Anatoliy пишет:

 цитата:
заметны ShowRectangle() параметры


Не заменены, а использованы умолчательные значения для использования более коротких вызовов функции.

Anatoliy пишет:

 цитата:
DeleteObjectsAll() чем отличие от стандартного ObjectsDeleteAll?


Посмотрите тело функции. При использовании ObjectsDeleteAll удаляются все объекты на графике, в том числе те, которые созданы другими программами. Так поступать нельзя. Удалять можно лишь те объекты, которые программа сама создала.

Спасибо: 0 
Профиль
Anatoliy



Сообщение: 24
Зарегистрирован: 13.07.14
Репутация: 0
ссылка на сообщение  Отправлено: 22.09.14 20:35. Заголовок: Добрый суток, Игорь...


Добрый суток, Игорь.

Как правильно записать условии, например, 3 МА смотрит вверх, вот код:


 цитата:

double ma_Red_1 = iMA(NULL, 0, period_1, 0, method, price, i+1);
double ma_Green_1 = iMA(NULL, 0, period_1, 0, method, price, i+1);
double ma_Blue_1 = iMA(NULL, 0, period_1, 0, method, price, i+1);

double ma_Red_2 = iMA(NULL, 0, period_1, 0, method, price, i+2);
double ma_Green_2 = iMA(NULL, 0, period_1, 0, method, price, i+2);
double ma_Blue_2 = iMA(NULL, 0, period_1, 0, method, price, i+2);
//---------------------------------------------------------------------------------
if(ma_Red_0 > ma_Green_0 && ma_Green_0 > ma_Blue_0 && ma_Red_0 > ma_Blue_0 &&
ma_Red_1 < ma_Green_1 && ma_Green_1 < ma_Blue_1 && ma_Red_1 < ma_Blue_1)
{
// Buy
}



Спасибо: 0 
Профиль
Scriptong





Сообщение: 816
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 23.09.14 09:02. Заголовок: Anatoliy пишет: Как..


Anatoliy пишет:

 цитата:
Как правильно записать условии, например, 3 МА смотрит вверх, вот код:


Для пересечения трех МА "правильного" алгоритма не существует, т. к. в этом случае возможно несколько подходов к определению момента пересечения. Ведь очевидно, что пересекаются три линии не в одной точке. Сначала пересекается две линии, а потом к ним подтягивается (или не подтягивается до обратного пересечения) третья линия.
Поэтому правильность будет определяться только постановкой условия пересечения вверх и пересечения вниз. Какие критерии для определения каждого из состояний хотите описать Вы?

Спасибо: 0 
Профиль
Anatoliy



Сообщение: 25
Зарегистрирован: 13.07.14
Репутация: 0
ссылка на сообщение  Отправлено: 23.09.14 19:34. Заголовок: Scriptong пишет: Дл..


Scriptong пишет:

 цитата:
Для пересечения трех МА "правильного" алгоритма не существует, т. к. в этом случае возможно несколько подходов к определению момента пересечения. Ведь очевидно, что пересекаются три линии не в одной точке. Сначала пересекается две линии, а потом к ним подтягивается (или не подтягивается до обратного пересечения) третья линия.


Я понял.

Вначале хочу построит индикатор для исследования, и самому определить критерии на основе Alligator с тремя прямоугольниками (как ObjRectangle_2MA v.1) рис. 1
  • Зелёный прямоугольник (Быстрая МА > Средняя МА > Медленная МА)
  • Красный прямоугольник (Быстрая МА < Средняя МА < Медленная МА)
  • Серый прямоугольник (не соотвествует, Быстрая МА < Средняя МА > Медленная МА и
    Быстрая МА > Средняя МА < Медленная МА)

    Игорь, почему прямоугольник не дорисовывает (инд. ObjRectangle_2MA v.1) рис. 2

  • Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 818
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 2
    ссылка на сообщение  Отправлено: 24.09.14 09:56. Заголовок: Anatoliy пишет: Зел..


    Anatoliy пишет:

     цитата:
    Зелёный прямоугольник (Быстрая МА > Средняя МА > Медленная МА)
    Красный прямоугольник (Быстрая МА < Средняя МА < Медленная МА)
    Серый прямоугольник (не соотвествует, Быстрая МА < Средняя МА > Медленная МА и
    Быстрая МА > Средняя МА < Медленная МА)


    Тогда так:

     цитата:
    if(ma_Red_1 > ma_Green_1 && ma_Green_1 > ma_Blue_1
    {
    // Зеленый прямоугольник (начало формирования или продолжение)
    }
    else
    if(ma_Red_1 < ma_Green_1 && ma_Green_1 < ma_Blue_1
    {
    // Красный прямоугольник (начало формирования или продолжение)
    }
    else
    {
    // Серый прямоугольник (начало формирования или продолжение)
    }


    В этом случае проверять пересечения попросту не нужно. Нужно лишь следить за тем, какой объект сейчас отображается.

    Anatoliy пишет:

     цитата:
    Игорь, почему прямоугольник не дорисовывает (инд. ObjRectangle_2MA v.1)


    Потому что эта версия индикатора не предназначена для работы онлайн. Для онлайн в ней еще много неучтенностей, рассказывать о которых Вам преждевременно как минимум до тех пор, пока не Вы научитесь самостоятельно формализовать простейшие задачи типа пересечения МА.

    Промежуточным решением может быть следующее изменение в коде:

     цитата:
    static datetime lastCrossTime = 0;
    static double lastHigh = 0, lastLow = 0;


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

    Спасибо: 0 
    Профиль
    Anatoliy



    Сообщение: 26
    Зарегистрирован: 13.07.14
    Репутация: 0
    ссылка на сообщение  Отправлено: 05.10.14 19:07. Заголовок: Добрый суток, Игорь...


    Добрый суток, Игорь.

    Я почти научился создавать простейшие пользовательские индикаторы, а, вот, когда усложняю я его, то у меня возникает трудности понимание , т.е. в интерпретаторе ругается, например:
     цитата:
    2014.10.05 19:40:24.438 array out of range in 'i_arrowSignals_v1.mq4' (89,15)

    Как вы сами разбираете, подсчитываете и так далее? Как мне самому понимать?

    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 829
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 2
    ссылка на сообщение  Отправлено: 07.10.14 08:03. Заголовок: Когда в программе пр..


    Когда в программе происходит что-то, недоступное пониманию, необходимо прибегать к ее отладке - документированию каждого ее шага. В самом сложном случае достаточно расположить операторы Print после каждой строки программы с выводом в журнал значений всех переменных, которые используются на данном шаге программы. Это поможет наглядно представить выполнение программы.

    В приведенном примере интерпретатор указывает на выход за пределы массива в строке 89, символ 15. Скорее всего, использован индекс массива-таймсерии (High, Los, Open Close, Volume), который больше или равен Bars. Такая ошибка устраняется проведением проверки на корректность индекса перед его использованием в массиве. К примеру:

     цитата:

    int index = ...;
    ...
    if (index >= 0 && index < Bars)
    price = High[index];





    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 101
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 14.10.14 17:32. Заголовок: Добрый вечер, Игорь!..


    Добрый вечер, Игорь!

    Сегодня у меня «настроение» - вроде 722 билд нормально работает.
    Просто «под настроение по наглею» и несколько консультаций попрошу.
    Понятно, что для участников форума это некорректно и их покоробит.
    Но ты умеешь доступно и заинтересованно для других объяснять.

    Речь о MultiIndicators_AutoOptimize_Expert (такая тема в статьях у тебя была).

    1. Пытаясь перейти на МТ5, для решения проблемы «накопления памяти» - есть ли смысл?
    Т.е. невозможность импорта котировок (только навязанный сервер) приведет к « тупику» «Хвостов» - это ВТБ в свое время прошли с Онлайнброкером (мне понравилось, что в Маркете («Хвостов») у тебя = 0 и вообще они превратили свой форум в рынок (базар – книжки, журналы, заказы и прочее), но это их проблемы). Возникает вопрос – есть ли смысл заниматься МТ5 в свете их политики (это им не базар и их в конечном итоге «пошлют») , но сиюминутно решит ли мою проблему МТ5, в части накопления памяти в реале без перезагрузки (чем тогда МТ от Квика отличается)?

    2. Чисто технические моменты по МТ4.

    //while (!IsStopped())
    //{
    // start();
    // Sleep(i_pause);
    //}
    Вот эта твоя часть, четко работает в офлайне (не требуется принудительный тик),
    но для реала ее надо комментировать (с задержкой разбираться проблемно).
    Можно ли организовать программное отключение в реале – критерий?


    Работа советника, с т.з. программиста – Какой вариант более предпочтительней?
    Связанно ( к примеру) с моим недопониманием по МТ5 и твоим объяснениями.

    if(IsTesting())
    {
    if(TimeCurrent()<StrToTime(i_TesterStartDateTime))
    {
    Print(" TestingXXXXXXXXXXXX: = ",1," TimeCurrent(): = ",TimeCurrent());
    return (0);
    }
    }

    // if(IsTesting())
    // {
    // if(iBars(NULL,PERIOD_D1)<i_optimizeDaysAmount)
    // {
    // Print(" TestingXXXXXXXXXXXX: = ",1," TimeCurrent(): = ",TimeCurrent());
    // return (0);
    // }
    // }

    // if(IsTesting())
    // {
    // if(Bars < (PERIOD_D1*i_optimizeDaysAmount))
    // {
    // Print(" TestingXXXXXXXXXXXX: = ",1," TimeCurrent(): = ",TimeCurrent());
    // return (0);
    // }
    // }

    В связи с предварительным обменом мнениями вытекает , что «сбросить память» советником в реале без перезагрузки проблемно.
    Тогда логически вытекает – идем к полуавтомату.
    Тогда на первое место (особенно в свете МТ5) выходит твоя тема – «Тестирование на реальной истории» ,
    но на нестандартных графиках я ее еще не проверял (думаю работать будет).
    Штатный тестер «сбрасывает память» (серьезное и принципиальное отличие) и половину ты сделал,
    но тогда частный вопрос: «А как с этим –
    «Нет, не нужно. В пределах истории, которая существует в FXT-файле тестер может обращаться к данным любого ТФ. Ведь FXT-файл - это тиковый файл, из которого можно получить любой ТФ, что тестер и делает.

    P. S. Для успокоения совести проверил этот момент в двух опытах:
    1. На М1 FXT-файле правильно прочитаны данные со всех старших ТФ.
    2. На D1 FXT-файле правильно прочитаны данные со всех младших ТФ.» -
    половина «ручной работы уже решено, а вместо «ручек» запустить советник,
    а ему нужен штатный ТФ 1 (1440 баров) день и «загнать» результаты в реал?»
    И на перспективу –
    А можно ли результаты тестирования штатного тестера «загнать» в советник автоматом (я понимаю, что при желании все можно).


    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 837
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 2
    ссылка на сообщение  Отправлено: 14.10.14 18:33. Заголовок: Balbesik пишет: Воз..


    Balbesik пишет:

     цитата:
    Возникает вопрос – есть ли смысл заниматься МТ5 в свете их политики (это им не базар и их в конечном итоге «пошлют») ,



    На сегодняшний день их (компании Meta Quotes) позиции крепки. Но так как жизнь полна сюрпризов, то прогнозирование (сколько еще просуществует компания) дело неблагодарное.


     цитата:

    но сиюминутно решит ли мою проблему МТ5, в части накопления памяти в реале без перезагрузки (чем тогда МТ от Квика отличается)?


    Не решит, т. к. подход там такой же - индикаторы не выгружаются до конца тестирования.

    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 838
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 2
    ссылка на сообщение  Отправлено: 14.10.14 18:37. Заголовок: Balbesik пишет: 2. ..


    Balbesik пишет:

     цитата:
    2. Чисто технические моменты по МТ4.

    //while (!IsStopped())
    //{
    // start();
    // Sleep(i_pause);
    //}
    Вот эта твоя часть, четко работает в офлайне (не требуется принудительный тик),
    но для реала ее надо комментировать (с задержкой разбираться проблемно).
    Можно ли организовать программное отключение в реале – критерий?


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

     цитата:
    int OnInit()
    {
    ...
    EventSetMillisecondTimer(пауза в миллисекундах);
    ...
    }
    void OnTimer()
    {
    // код для выполнения каждые "пауза в миллисекундах" миллисекунд
    }



    Что подразумевается под программным отключением и о каком критерии ты спрашиваешь?

    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 839
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 2
    ссылка на сообщение  Отправлено: 14.10.14 18:49. Заголовок: Balbesik пишет: Раб..


    Balbesik пишет:

     цитата:
    Работа советника, с т.з. программиста – Какой вариант более предпочтительней?
    Связанно ( к примеру) с моим недопониманием по МТ5 и твоим объяснениями.

    if(IsTesting())
    {
    if(TimeCurrent()<StrToTime(i_TesterStartDateTime))
    {
    Print(" TestingXXXXXXXXXXXX: = ",1," TimeCurrent(): = ",TimeCurrent());
    return (0);
    }
    }

    // if(IsTesting())
    // {
    // if(iBars(NULL,PERIOD_D1)<i_optimizeDaysAmount)
    // {
    // Print(" TestingXXXXXXXXXXXX: = ",1," TimeCurrent(): = ",TimeCurrent());
    // return (0);
    // }
    // }

    // if(IsTesting())
    // {
    // if(Bars < (PERIOD_D1*i_optimizeDaysAmount))
    // {
    // Print(" TestingXXXXXXXXXXXX: = ",1," TimeCurrent(): = ",TimeCurrent());
    // return (0);
    // }
    // }


    Из трех приведенных вариантов по смыслу похожи только первые два. Первый вариант обладает большей точностью (до секунды), второй - меньшей (до суток). Третий вариант будет похож на второй только при условии запуска советника на минутном графике.

    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 840
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 2
    ссылка на сообщение  Отправлено: 14.10.14 18:52. Заголовок: Balbesik пишет: пол..


    Balbesik пишет:

     цитата:
    половина «ручной работы уже решено, а вместо «ручек» запустить советник,
    а ему нужен штатный ТФ 1 (1440 баров) день и «загнать» результаты в реал?»


    Не понял мысль.

    Balbesik пишет:

     цитата:
    А можно ли результаты тестирования штатного тестера «загнать» в советник автоматом (я понимаю, что при желании все можно).


    Можно, но достаточно сложно.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 103
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 15.10.14 16:09. Заголовок: «…Из трех приведенны..


    «…Из трех приведенных вариантов по смыслу похожи только первые два. Первый вариант обладает большей точностью (до секунды), второй - меньшей (до суток). Третий вариант будет похож на второй только при условии запуска советника на минутном графике…»

    Главное я не напортачил с т.з. программирования.

    «…Не понял мысль…»

    «…половина «ручной работы»…» - чтобы поставить на тестер нестандартный ТФ приходилось делать массу шагов, а в рамках темы «Тестирование на реальной истории», я так понял, эта задача решена в автомате.

    А вот далее «мысль» - «…запустить советник…» - не проходит – проверил.

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

    Сейчас Альпари откатили с 711 до 670 билда – нормально.

    Проверил 670 и 722 билды (сменил сам на 722 у Альпари) мне хватает памяти на 9 дней – это уже что-то – в выходные советник можно переустановить , чтобы «сбросить» память.
    Именно в этом плане считаю тему «Тестирование на реальной истории» очень интересной или каким-то образом «скидывать» память у советника в автомате - без переустановки, но, как я понял, это невозможно.


    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 842
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 2
    ссылка на сообщение  Отправлено: 15.10.14 17:48. Заголовок: Balbesik пишет: «…п..


    Balbesik пишет:

     цитата:
    «…половина «ручной работы»…» - чтобы поставить на тестер нестандартный ТФ приходилось делать массу шагов, а в рамках темы «Тестирование на реальной истории», я так понял, эта задача решена в автомате.


    Не проверял. Но, чисто интуитивно, думаю, что не получится, т. к. МТ4 вряд ли может так просто работать с нестандартными ТФ. Чуть освобожусь - проверю.

    Balbesik пишет:

     цитата:
    Именно в этом плане считаю тему «Тестирование на реальной истории» очень интересной или каким-то образом «скидывать» память у советника в автомате - без переустановки, но, как я понял, это невозможно.


    Есть еще такая мысль: закрывать окошко тестера, а не весь терминал. По крайней мере, с DLL такой способ работает. Если такой способ подойдет, то можно автоматизировать.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 104
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 16.10.14 14:19. Заголовок: Добрый вкчкр, Игорь!..


    Добрый вечер, Игорь!

    «…Не проверял. Но, чисто интуитивно, думаю, что не получится, т. к. МТ4 вряд ли может так просто работать с нестандартными ТФ. Чуть освобожусь – проверю...»

    Большая просьба проверить на равно высоких барах.

    Лет 5 – 10 назад было много дебатов по кандидатской «О некоторых вероятностно-статистических методах в техническом анализе»
    Автор: Пастухов С. В. , а там Kagi, renko -построения, анализ, т.е. «где-то рядом».

    Пытался сам набрать историю TicksCollector_build625_v2 , но
    2014.10.16 17:53:20.125 HistoryBase: 7 errors in 'EURUSD313'
    это я уже проходил, удаление из папки истории 313 ничего не дает, помню не смог «победить» и бросил,
    как решать проблему так и не понял.
    Не сносить же всю историю (стандартные котировки), т.е. да я закрывал – открывал терминал, разрывал связь .
    Переустановка индикатора, соответственно, ничего не дает.

    "...Есть еще такая мысль: закрывать окошко тестера, а не весь терминал. По крайней мере, с DLL такой способ работает. Если такой способ подойдет, то можно автоматизировать..."

    Далее там есть продолжения - была статья на Кодебазе по работе с штатным тестером терминала для тестмирвания и рабочим терминалом совместно.


    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 846
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 2
    ссылка на сообщение  Отправлено: 16.10.14 21:27. Заголовок: Balbesik пишет: Бол..


    Balbesik пишет:

     цитата:
    Большая просьба проверить на равно высоких барах.


    Применительно к тестеру тип представления графика ни к чему. Проверил доступ к нестандартному графику. Для примера взял М3. Все стандартные графики читаются, а нестандартные выдают нули.

    Затем сгенерировал нестандартный таймфрейм отдельно через TicksCollector и еще раз проверил в тестере - данные появились. Таким образом, как и раньше, для доступа к нестандартным таймфреймам в тестере необходимо предварительно создать нестандартный таймфрейм.


    Balbesik пишет:

     цитата:
    Пытался сам набрать историю TicksCollector_build625_v2 , но
    2014.10.16 17:53:20.125 HistoryBase: 7 errors in 'EURUSD313'


    Еще раз напоминаю алгоритм генерации нестандартных таймфреймов:
    1. Качается история тиков по интересующему символу: 1-ая часть и 2-ая часть.
    2. Если нужна полная история, склеенная из двух архивов, то история склеивается при помощи скрипта OneTicksFileMaker или при помощи TotalCommander (вторую часть дописать к первой).
    3. Полный файл истории помещается в папку MQL4\Files рабочего каталога терминала.
    4. На графике символа, для которого подготовлена история, запускается TicksCollector, взятый отсюда, с выбором того типа нестандартного графика, который необходим.
    5. Итоговый нестандартный график открывается через меню терминала "Файл" - "Открыть автономно". Период графика 312, 313 или 314 (смотря, что указывалось при запуске TicksCollector).

    В тестере необходимо обращаться к данным графика с периодом 312, 313 или 314 минут. Этот момент только что проверен в тестере.


    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 105
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 17.10.14 13:20. Заголовок: http://f6.s.qip.ru/2..




    Добрый день, Игорь!

    Еще раз пробую вернуться к TicksCollector.

    Как только он появился я пробовал с ним работать и еще тогда писал, что он у меня «слетает» и прикреплял картинку.
    Сейчас ситуация та же. Причину понять не могу. Картина та же – рис. EURUSDM313.png. (тогда я прекратил пытаться разобраться).

    Пробовал запустить FXTFileMaker_Script_AD –
    «…2014.10.17 15:01:28.296 FXTFileMaker_Script_AD EURUSD,M313: Alert: FXTFileMaker_Script_AD: ошибка (N5004) открытия файла EURUSD.tks. Скрипт отключен…»

    Тоже ничего не получается. Склейку делал. Обратил внимание, что в момент установки скрипта «глючит» TicksCollector -
    картинка – рис. EURUSDM313_0.

    Но возможно, при необходимости, со временем разберусь

    Главное по нестандартным ТФ.

    «…Таким образом, как и раньше, для доступа к нестандартным таймфреймам в тестере необходимо предварительно создать нестандартный таймфрейм…» -
    Не очень понятно, что это значит?

    В папке tester – папка history – должен появиться файл 313 (он выбран)?

    «…В тестере необходимо обращаться к данным графика с периодом 312, 313 или 314 минут...»

    В советнике тогда в ТФ ставим 313 и тестируем на 1 минуте?

    Как я понял –

    Если это так, замещения ТФ1, 5..и т.д. не происходит, это хорошо (для советника нужен Д1), возникает самое важное –
    в реале TicksCollector постоянно формирует файл типа ТКS,
    а скрипт FXTFileMaker_Script_AD –

    «…При этом следует учитывать, что границы дат должны находиться внутри того диапазона котировок, который присутствует в исходном файле типа TKS…»

    не очень ясно, будет ли аналогично, постоянно пополнять созданный файл в папке tester – папка history (в скрипте стоят границы дат).

    Цель всех этих вопросов – понять в перспективе возможность оптимизации советника штатным тестером в реале (автоматически).


    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 849
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 2
    ссылка на сообщение  Отправлено: 17.10.14 18:07. Заголовок: Balbesik пишет: Про..


    Balbesik пишет:

     цитата:
    Пробовал запустить FXTFileMaker_Script_AD –
    «…2014.10.17 15:01:28.296 FXTFileMaker_Script_AD EURUSD,M313: Alert: FXTFileMaker_Script_AD: ошибка (N5004) открытия файла EURUSD.tks. Скрипт отключен…»


    Скорее всего, файл EURUSD.tks отсутствует в папке MQL4\Files. Посмотри, в ту ли папку ты его копируешь. В терминале используй меню Файл - Открыть каталог данных. Далее зайди в MQL4\Files и проверь наличие файла там.

    Balbesik пишет:

     цитата:
    Тоже ничего не получается. Склейку делал. Обратил внимание, что в момент установки скрипта «глючит» TicksCollector -
    картинка – рис. EURUSDM313_0.


    Без дополнительных сведений тяжело понять, что в рисунках не так.
    1. Какая высота равновысоких баров используется?
    2. Собирает ли индикатор тики онлайн?

    И если по верхнему рисунку есть предположения того, что в нем не так, то на нижнем рисунке вроде бы все нормально. Даже неясно, что не устраивает.

    Balbesik пишет:

     цитата:
    «…Таким образом, как и раньше, для доступа к нестандартным таймфреймам в тестере необходимо предварительно создать нестандартный таймфрейм…» -
    Не очень понятно, что это значит?


    Означает, что перед тем, как использовать в тестере нестандартный таймфрейм, необходимо создать этот нестандартный таймфрейм при помощи TicksCollector. То есть нестандартный таймфрейм должен существовать в списке автономных графиков. Только тогда его сможет "увидеть" тестер. Без этого тестер не сможет работать с нестандартным таймфреймом.

    Balbesik пишет:

     цитата:
    «…В тестере необходимо обращаться к данным графика с периодом 312, 313 или 314 минут...»

    В советнике тогда в ТФ ставим 313 и тестируем на 1 минуте?


    Тестировать можно на любом периоде. Только если нужны данные нестандартного таймфрейма, то в коде нужно к ним обращаться так:

     цитата:
    double close = iClose(NULL, 313, 1); // Цена закрытия бара с индексом 1 на графике равновысоких баров




    Balbesik пишет:

     цитата:
    В папке tester – папка history – должен появиться файл 313 (он выбран)?


    Нет. Файл нестандартного таймфрейма (расширение hst) должен находиться в папке Рабочий каталог терминала\history\Брокер. TicksCollector автоматически поместит его туда. А вот файл, создаваемый скриптом FXTFileMaker (расширение fxt), попадает в папку tester\history.

    Balbesik пишет:

     цитата:
    «…При этом следует учитывать, что границы дат должны находиться внутри того диапазона котировок, который присутствует в исходном файле типа TKS…»

    не очень ясно, будет ли аналогично, постоянно пополнять созданный файл в папке tester – папка history (в скрипте стоят границы дат).


    Что имеется в виду под "будет ли аналогично постоянно пополнять созданный файл". Кто будет пополнять?



    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 106
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 20.10.14 16:37. Заголовок: Добрый вечер, Игорь!..


    Добрый вечер, Игорь!

    «…Без дополнительных сведений тяжело понять, что в рисунках не так.
    1. Какая высота равновысоких баров используется?
    2. Собирает ли индикатор тики онлайн?
    И если по верхнему рисунку есть предположения того, что в нем не так, то на нижнем рисунке вроде бы все нормально. Даже неясно, что не устраивает…»

    41 пункт.
    Собирает.
    При попытке установить FXTFileMaker_Script_AD изменилась высота бара (выделенный участок) – каким-то образом FXTFileMaker_Script_AD повлиял на TicksCollector, но возможно «глюк».

    Пока не забыл – в реале «проскочило» деление на «0» в MI_Trade (185,65 - кажется) (я к ней вообще не прикасался), изменил –
    double LotFloor(double value)
    {
    if (g_lotStep == 0)return (0);
    return(MathFloor(MathMin(MathMax(value, g_minLot), g_maxLot)/g_lotStep)*g_lotStep);
    }
    Возможно «глюк», еще посмотрю..

    «…Тестировать можно на любом периоде. Только если нужны данные нестандартного таймфрейма, то в коде нужно к ним обращаться так:…»

    Попробовал через твой советник (в нем предусмотрено обращение к ТФ) - разницы не заметил – корректировать индикаторы, видимо, нет необходимости.

    «…Скорее всего, файл EURUSD.tks отсутствует в папке MQL4\Files. Посмотри, в ту ли папку ты его копируешь. В терминале используй меню Файл - Открыть каталог данных. Далее зайди в MQL4\Files и проверь наличие файла там…»

    В папке история терминала файл EURUSD313.hst присутствует и в папке MQL4\Files файл EURUSD.tks присутствует.

    Сейчас набираю историю TicksCollector 313 и посмотрю, что получится с FXTFileMaker, но об этом ниже.

    Что получается –
    1. Советник в реале стоит на графике – в процессе оптимизации происходит остановка и появляется сообщение – невозможно выделить N….. буферов (или памяти – машинный перевод). Здесь все понятно – уменьшаем количество баров в окне, уменьшаем количество используемых индикаторов, уменьшаем количество проходов оптимизации и определяемся сколько дней возможна оптимизация без переустановки советника.
    2. Советник в реале, но запускаем на 1 минуте тестирование в тестере на нестандартном ТФ (без использования FXTFileMaker) в советнике ТФ = 313 и в индикаторах ТФ – 313. Советник (как я понял) видит ТФ = 313 и запускается оптимизация. Что интересно – оптимизация проходит без остановки – нет переполнения по памяти. НО просто «прогон» - очень – очень медленно, оптимизация тем более, если добавить количество используемых индикаторов, то можно ждать до бесконечности.
    Можно предположить, что независимо от установленных дат в тестере, в связи с объявлением переменных с пустым значением – [] советник проходит ВСЮ историю терминала хотя результат выводит согласно установленных дат (видимо), а то и меньше.
    3. Советник тестируется в терминале для тестера – заменяем ТФ1 мин на график нестандартного ТФ – тестирование проходит очень быстро количество сделок существенно больше (сравнение простым «прогоном» на тех же датах).

    Что получается, что реклама Метаквостов о том, что в МТ5 тестер лучше – это ни о чем, т.к.
    из результатов тестера не следует та же возможность в реале (согласен - нет смысла переходить на МТ5 – ничего не даст в данной проблеме).

    А теперь главное – что может дать FXTFileMaker?

    В тестере только 7 ТФ и возможность дополнительных похоже не предусмотрена или предусмотрена?

    «…А вот файл, создаваемый скриптом FXTFileMaker (расширение fxt), попадает в папку tester\history…»

    Если FXTFileMaker «заменяет» один из 7, то на нестандартный ТФ – «заменяет»?

    Я конечно буду пробовать FXTFileMaker.

    «…Что имеется в виду под "будет ли аналогично постоянно пополнять созданный файл". Кто будет пополнять? …»

    Да это, похоже, самое интересное – может ли в реале FXTFileMaker постоянно пополнять файл – в папке tester/history (расширение fxt, т.е. у FXTFileMaker нет границы даты в будущем)?


    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 856
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 2
    ссылка на сообщение  Отправлено: 20.10.14 19:16. Заголовок: Balbesik пишет: При..


    Balbesik пишет:

     цитата:
    При попытке установить FXTFileMaker_Script_AD изменилась высота бара (выделенный участок) – каким-то образом FXTFileMaker_Script_AD повлиял на TicksCollector


    Такого быть не должно. Это очень странный момент.

    Balbesik пишет:

     цитата:
    Пока не забыл – в реале «проскочило» деление на «0» в MI_Trade (185,65 - кажется) (я к ней вообще не прикасался), изменил –


    Да, посмотрел код. Проверку g_lotsStep на ноль при получении значений я не сделал. Отсюда и проблема. С другой стороны, эксперт и не должен продолжать работу, когда терминал выдает откровенно неправильное значение шага лота. Это относится к фатальным ошибкам. К примеру, когда величина пункта равна нулю, многие из моих программ попросту не запускаются, выдавая ошибку.

    Balbesik пишет:

     цитата:
    НО просто «прогон» - очень – очень медленно, оптимизация тем более, если добавить количество используемых индикаторов, то можно ждать до бесконечности.


    Тут даже не в количестве индикаторов дело. Достаточно указать диапазон оптимизации (я имею в виду оптимизацию не тестера стратегий, а именно ту, которая реализована в коде советника) параметров для одного индикатора достаточно большим. В итоге один этот индикатор будет загружен указанное количество раз, что требует большого расхода памяти и ресурсов. Отсюда и черепашьи темпы оптимизации. Как я и говорил ранее, для таких целей оптимальнее было бы оформить коды индикаторов в виде функций советника. Это резко сократит расход памяти и увеличит скорость обработки (как минимум, на порядок).

    Balbesik пишет:

     цитата:
    В тестере только 7 ТФ и возможность дополнительных похоже не предусмотрена или предусмотрена?


    Не предусмотрена.

    Balbesik пишет:

     цитата:
    Если FXTFileMaker «заменяет» один из 7, то на нестандартный ТФ – «заменяет»?


    Конкретно обговариваемый FXTFileMaker не сможет заменить, т. к. тут действует жесткая привязка к тем таймфреймам, которые перечислены в тестере. Ну а в принципе (теоретически; возможно, есть подводные камни) можно написать такой FXTFileMaker, который под видом стандартного ТФ будет проталкивать в тестер нужный нестандартный таймфрейм.

    Balbesik пишет:

     цитата:
    Да это, похоже, самое интересное – может ли в реале FXTFileMaker постоянно пополнять файл – в папке tester/history (расширение fxt, т.е. у FXTFileMaker нет границы даты в будущем)?


    Здесь, опять же, теоретически, такое тоже возможно, но при условии написания специального скрипта. Существующий скрипт такое не может.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 107
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 20.10.14 19:15. Заголовок: http://f5.s.qip.ru/1..




    С этим я разобрался.
    Это вопрос подхода.
    Мой вопрос снимается.

    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 857
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 2
    ссылка на сообщение  Отправлено: 20.10.14 19:19. Заголовок: Balbesik пишет: С э..


    Balbesik пишет:

     цитата:
    С этим я разобрался.
    Это вопрос подхода.
    Мой вопрос снимается.


    ОК.

    Ну а я ответил чуть раньше. Смотри ответ выше твоего последнего поста.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 108
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 21.10.14 12:24. Заголовок: Добрый день, Игорь! ..


    Добрый день, Игорь!

    А мое сообщение на минуту раньше.

    Советник при «зеро» и остановился.

    По теме - пока смотрится чуть другой вопрос.

    «…Здесь, опять же, теоретически, такое тоже возможно, но при условии написания специального скрипта.
    Существующий скрипт такое не может…»

    Специальный скрипт – это целая тема для нестандартных ТФ аналогична –

    http://articles.mql4.com/ru/336
    http://www.mql5.com/ru/code/7614
    это один автор.

    Что получается –

    1. Советник в тестере «видит» график нестандартного ТФ в истории терминала.

    2. Советник в тестере при «прогоне (тестировании)» «видит» ТЕКУЩЕЕ время.

    3. По окончании оптимизации «освобождается» память (видимо «выгружается»).

    4. НО советник в тестере «не видит» ДАТ – невозможно задать дату начала тестирования или
    тестирование на заданный интервал времени (баров) –
    т.к. невозможно задать дату начала тестирования.
    Тестирование проходит по всей существующей истории терминала.
    Ограничение по Мах баров истории ничего не дает - идет накопление и
    не всегда это удобно для построении на графике.

    Если «не замещать» штатные ТФ специальным скриптом, а
    в реале вероятно возникнет проблема «смешивания котировок различных ТФ»,
    можно ли, каким – либо образом (желательно программно),
    выйти (определять) на даты нестандартного ТФ и
    особенно в реале при работе в штатном тестере ("прогон" и оптимизация советником)?


    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 863
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 2
    ссылка на сообщение  Отправлено: 22.10.14 10:53. Заголовок: Balbesik пишет: 2. ..


    Balbesik пишет:

     цитата:
    2. Советник в тестере при «прогоне (тестировании)» «видит» ТЕКУЩЕЕ время.


    Не могу согласиться. В тестере советник оперирует моделируемым временем, если имеется в виду обращение к функции TimeCurrent(). То есть это не реальное текущее время, а то время, которое действует на момент тестирования.

    Balbesik пишет:

     цитата:
    НО советник в тестере «не видит» ДАТ – невозможно задать дату начала тестирования или
    тестирование на заданный интервал времени (баров) –
    т.к. невозможно задать дату начала тестирования.


    Также не могу понять, почему. Опиши подробно шаги, которые ты выполняешь перед началом тестирования. Возможно, имеется в виду какая-то специфическая ситуация. Если опишешь, то попробую воспроизвести и разобраться в вопросе.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 109
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 24.10.14 14:37. Заголовок: Здравствуй, Игорь! «..


    Здравствуй, Игорь!
    «Наковырквлся» - « мама не Горюй».
    «Не могу согласиться» - да правильно все, на старом билде не «сохранялись» даты.
    На 735 пошло совпадение на тесте (по датам).
    «…. Если опишешь, то попробую воспроизвести и разобраться в вопросе…»
    Да все тоже самое.
    Да банально все – вопрос память – В тестере дата – прогон по истории – история не нужна – нужна Дата, да и получишь прн старте всю историю.
    Другими словами при выгрузки советника, при старте ты получишь ту же историю плюс день – Да не нужна мне предыдущия история. Нужен один день.
    Задача - разгрузить память!
    Все, плюс твои индикаторы, - на покой!


    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 875
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 2
    ссылка на сообщение  Отправлено: 25.10.14 19:46. Заголовок: Balbesik пишет: Зад..


    Balbesik пишет:

     цитата:
    Задача - разгрузить память!


    Тогда вновь повторюсь. Решение проблемы существует. Просто нужно двигаться в другом направлении. Нужно думать не о том, как освободить память при тестировании, а написать такой советник, который не будет использовать внешние индикаторы, располагая необходимыми функциями внутри кода. Причем никто не призывает отказаться от использования индикаторов. Пусть будут. Просто по каждому такому индикатору написать аналог для внутреннего использования в коде советника.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 121
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 30.10.14 18:57. Заголовок: "....– а надо ли..


    "....– а надо ли...."
    Сегодня нет желание, что-то комментировать.
    Только картинки.
    Это "любимый" МТ в реале, в тесте и в "тесте2".
    Учитывая, что эти уголовники (а в любой другой стране их бы давно посадили)
    могли не сделать преемственность с 509 билда и я имею проблемы (точнее за мой счет - как они привыкли).
    Хотя смешно это писать - у меня нет с ними никаких отношений - терминалы у меня от ДЦ, а не от них
    (и когда ко мне "лезут" в комп ДЦ "не при делах" - просто наглый беспредел).
    А ДЦ, ну это наглецы с "островов" (они прикрывают"хвостов") считают,
    что никто не поедет на острова с ними разбираться.





    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 896
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 2
    ссылка на сообщение  Отправлено: 30.10.14 21:40. Заголовок: Ну пока да, без комм..


    Ну пока да, без комментариев не понять, какая проблема освещается.
    Если речь о расхождениях в номерах баров между онлайн-графиком и графиком визуализации, то у них элементарно разные начальные точки. У онлайн графика бар с индексом 0 открылся в 23:58, а у графика визуализации - в 22:43. Потому и индексы баров разные.
    А вот что такое СС_8933 и СС8914 - это тайна за семью печатями.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 122
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 31.10.14 19:29. Заголовок: "...Ну пока д..




    "...Ну пока да, без комментариев не понять, какая проблема освещается.
    Если речь о расхождениях в номерах баров между онлайн-графиком и графиком визуализации, то у них элементарно разные начальные точки. У онлайн графика бар с индексом 0 открылся в 23:58, а у графика визуализации - в 22:43. Потому и индексы баров разные.
    А вот что такое СС_8933 и СС8914 - это тайна за семью печатями..."


    Да проблема чуть другая, остальное следствие.
    К делу не относится (следствие) – СС_89 это просто я так обозначил номер бара, если по картинке посмотреть, то , где желтые стрелочки, к 31 бару добавить количество баров с соседней картинке мы и получим 33 бар (график один и тот же – это сделана пауза при моделировании в тестере).

    Суть проблемы – равно высокие бары –
    я использую старый индикатор равно высоких баров (509 билд) и у меня создается впечатление, что с новыми билдами он не согласовывается по prevCalculated . Когда идет реал лимит «прыгает» по очереди 0 и заданная величина -1500 например и i идет по циклу от МАХ к «0» аналогично верхняя картинка - эксперты. Третья картинка сверху это реал выводиться лимит. Последняя это тестер по значениям i на что-то похоже (вопрос номера бара – 14 - опускаем).

    Еще раз прикрепил картинку в ней есть доработка (самоделка) – это реал с появлением нового бара, где prevCalculated становится равен «0» вместо значения. Если с каждым появлением нового билда ждешь очередных проблем, это раздражает.

    Картинки доработки –


    Доработать под современные билды индикатора равно высоких баров не представляется возможным – там вообще «темный лес».
    Тут я вообще ничего не понимаю
    Как ведет себя твой индикатор не знаю, т.к. у него нет истории и это мне не очень удобно.
    Старый индикатор у тебя есть, сейчас сброшу еще раз (не знаю, как на форум прикрепить Экзе- файл) если его возможно доработать, то на твое усмотрение, может быть выложишь на форум (возможно кому-нибудь, как и мне, нужна история), а еще лучше сделать аналог TicksCollector под равно высокие бары (для сервиса - без тиков, но с историей и без «разрывов»(по возможности))


    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 900
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 2
    ссылка на сообщение  Отправлено: 31.10.14 20:11. Заголовок: Balbesik пишет: Еще..


    Balbesik пишет:

     цитата:
    Еще раз прикрепил картинку в ней есть доработка (самоделка) – это реал с появлением нового бара, где prevCalculated становится равен «0» вместо значения.


    Для оффлайн графиков это нормально. Ведь история этого графика при своем формировании переписывается заново полностью. Терминал считает, что история полностью подкачана. Потому и выдает 0. Тут не на что грешить.

    Balbesik пишет:

     цитата:
    не знаю, как на форум прикрепить Экзе- файл


    См. тему Вставка файлов и рисунков.

    Balbesik пишет:

     цитата:
    а еще лучше сделать аналог TicksCollector под равно высокие бары (для сервиса - без тиков, но с историей и без «разрывов»(по возможности))


    Без тиков - это что ли строить график по минутной истории? График нестандартного периода таким образом построить можно, а вот равновысокие и эквиобъемные строить проблематично - они будут врать на спорных моментах. Например, когда минутная свеча выше, чем высота равновысокого бара.
    Что такое "без разрывов" до сих пор не понял.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 123
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 31.10.14 20:49. Заголовок: «…Для оффлайн график..


    «…Для оффлайн графиков это нормально. Ведь история этого графика при своем формировании переписывается заново полностью.
    Терминал считает, что история полностью подкачана. Потому и выдает 0. Тут не на что грешить…»

    Bars - IndicatorCounted(); - теряется смысл старого, вместо расчета одного бара,
    идет вся история по i – что и наблюдаем – «…и i идет по циклу от МАХ к «0»…»

    Не понимаю.

    Я сбросил на почту.


    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 124
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 01.11.14 13:45. Заголовок: "...Что такое &#..


    "...Что такое "без разрывов" до сих пор не понял.,,"

    Кажется разобрался.
    Моя проблема (старые билды не работают корректно)
    График с реала - без "разрывов"

    Тот же график после импорта в тестер.

    Нет корректных исходных данных = нет результата.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 125
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 02.11.14 01:53. Заголовок: "...См. тему Вст..


    "...См. тему Вставка файлов и рисунков..." -

    "Вставка файла
    1. Закачать нужный файл на любой файловый сервер. Например, http://gfile.ru/. .." -

    "Сервер не найден
    Firefox не может найти сервер gfile.ru..." -

    других я не знаю.

    Предполагаю, что проблема "разрывов", в данном случае для тестера, в скрипте для закачки в тестер.
    Он короткий, поэтому выкладываю прямо здесь -


    int start(){
    int h=FileOpen(Symbol()+Period()+".csv",FILE_WRITE|FILE_CSV,",");
    for(int i=Bars-1;i>=0;i--){
    FileWrite(h,TimeToStr(Time,TIME_DATE),TimeToStr(Time,TIME_MINUTES),Open,High,Low,Close,Volume);
    }
    FileClose(i);
    return(0);
    }

    Согласно описания uint FileWrite вроде все нормально, почему "глючит" не пойму.
    Где я "не догоняю"?

    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 905
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 2
    ссылка на сообщение  Отправлено: 02.11.14 15:01. Заголовок: Balbesik пишет: Bar..


    Balbesik пишет:

     цитата:
    Bars - IndicatorCounted(); - теряется смысл старого, вместо расчета одного бара,
    идет вся история по i – что и наблюдаем


    Так и есть. При работе с оффлайн графиками приходится использовать другие схемы отслеживания моментов появления нового бара. Но в этом нет ничего страшного, т. к. оффлайн графики, чаще всего, формируются собственными программами, а не терминалом. Потому в оффлайн-графике нет такого события, как "докачка данных". Оффлайн-график обычно формируется на старте полностью, а затем просто обновляется (0-й бар или добавление одного бара).

    Balbesik пишет:

     цитата:
    "...См. тему Вставка файлов и рисунков..." -

    "Вставка файла
    1. Закачать нужный файл на любой файловый сервер. Например, http://gfile.ru/. .." -

    "Сервер не найден
    Firefox не может найти сервер gfile.ru..." -

    других я не знаю.


    В google по ключевым словам "бесплатный файловый сервер" можно найти много подобных. Я сейчас пользуюсь dropmefiles.com. Там, правда, слишком ограничено время хранения - неделя. Но для текущих задач этого достаточно.

    Balbesik пишет:

     цитата:
    Предполагаю, что проблема "разрывов", в данном случае для тестера, в скрипте для закачки в тестер.
    Он короткий, поэтому выкладываю прямо здесь -


    int start(){
    int h=FileOpen(Symbol()+Period()+".csv",FILE_WRITE|FILE_CSV,",");
    for(int i=Bars-1;i>=0;i--){
    FileWrite(h,TimeToStr(Time,TIME_DATE),TimeToStr(Time,TIME_MINUTES),Open,High,Low,Close,Volume);
    }
    FileClose(i);
    return(0);
    }

    Согласно описания uint FileWrite вроде все нормально, почему "глючит" не пойму.
    Где я "не догоняю"?



    При открытии файлов совместно с флагами FILE_WRITE и FILE_READ лучше использовать флаги: FILE_SHARE_WRITE и FILE_SHARE_READ соответственно.
    Также при работе с текстовыми файлами следует явно указывать кодировку. Это флаги FILE_ANSI и FILE_UNICODE.
    К сожалению, в документации по MQL есть множество подобных белых пятен. Хотя, ради справедливости отмечу, что и у Microsoft дело обстоит не намного лучше. О многих вещах приходится догадываться, набивая огромные шишки опыта.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 126
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 02.11.14 19:29. Заголовок: Scriptong пишет: &#..


    Scriptong пишет:

    "...При открытии файлов совместно с флагами FILE_WRITE и FILE_READ лучше использовать флаги: FILE_SHARE_WRITE и FILE_SHARE_READ соответственно.
    Также при работе с текстовыми файлами следует явно указывать кодировку. Это флаги FILE_ANSI и FILE_UNICODE.
    К сожалению, в документации по MQL есть множество подобных белых пятен. Хотя, ради справедливости отмечу, что и у Microsoft дело обстоит не намного лучше. О многих вещах приходится догадываться, набивая огромные шишки опыта..."

    Спасибо, Игорь!

    Все попробовал.
    Но похоже равновысокие бары невозможно в тестере моделировать.
    При загрузке они появляются почти все на графике, но после 1 "прогона" или перезагрузки терминала -
    "слетают" и весь график в "разрывах", плюс "разрывы" (бывают) с реала -
    в общем полная ерунда с котировками в тестере.
    Жаль.
    Давным давно писал тебе, что мне надо уходить на Эксель или Матлаб,
    но мозгов не хватает, да и время потеряно.


    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 913
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 2
    ссылка на сообщение  Отправлено: 03.11.14 19:12. Заголовок: Balbesik пишет: Все..


    Balbesik пишет:

     цитата:
    Все попробовал.
    Но похоже равновысокие бары невозможно в тестере моделировать.
    При загрузке они появляются почти все на графике, но после 1 "прогона" или перезагрузки терминала -
    "слетают" и весь график в "разрывах", плюс "разрывы" (бывают) с реала -
    в общем полная ерунда с котировками в тестере.


    Распиши пошагово, как подготавливаешь данные и тестируешь. Я, к примеру, не пытался еще заниматься тестированием на нестандартных таймфреймах в новом терминале. Попробую по твоим шагам и возможно, смогу установить причину. В крайнем случае попробую обосновать, почему невозможно тестирование на нестандартных ТФ. Хоть ясность какая-то будет.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 127
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 03.11.14 23:14. Заголовок: Scriptong пишет: ..


    Scriptong пишет:

     цитата:
    ... Хоть ясность какая-то будет....



    Добрый вечер, Игорь!

    Это индикатор равновысоких баров уже переделан (прошу не смеяться) под новые билды –
    индикатор
    http://dropmefiles.com/5V6Vf

    С ним проблем нет, хотя, т.к. я с этими форматами вообще ничего не понимаю,
    он может пригодиться (возможно, если запись в нем – хотя врятли).
    Нормально работает – без вопросов (даже лучше, на мой взгляд, с т.з. «разрывов» чем ЭКЗ-ник 509 билда).

    Устанавливаю индикатор на 1 минуту – открыть автономно (81) – получаем график.
    Графики рисуются корректно (вопросов никаких).

    Теперь в окне есть корректный график и на него «бросаем» скрипт (просто – Исполнить на графике) –
    скрипт описан выше постом – в МКЛ4 в папке Файл получаем файл графика (csv).

    В терминале для тестирования (он отключен от интернета, ВСЯ история удалена – чистый) –
    Сервис – архив котировок (выбираем 1 минуту, да любой ТФ) – импорт – этот файл - ОК.
    Загрузили!

    А вот тут начинаются проблемы.

    Если сразу, терминал не закрываем, просто поменять ТФ 1 мин. – 5 мин – 1 мин. то увидим ПОЧТИ корректный график и
    если на бары поставить вертикальные линии между двумя минутами (а линии по другому и не встанут),
    то можно увидеть участки МЕЖДУ этими линиями на которых находятся бары.

    Если теперь перезагрузить терминал или включить моделирование (старт) эти бары «вырежуться» и
    более их не будет – сплошные «разрывы».

    Т.к. внешний вид графика меня не интересует,
    а интересуют номера баров и цены попытался «перепривязать» минутки, как-то так –


    Но вообще ничего не работает, а эти форматы записи или чтения для меня «караул».

    Вопрос скрипта!



    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 128
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 04.11.14 15:28. Заголовок: Scriptong пишет: Хо..


    Scriptong пишет:

     цитата:
    Хоть ясность какая-то будет



    Добрый день, Игорь!

    Сделал в дополнение в виде картинок и Эксель.

    «…а интересуют номера баров и цены попытался «перепривязать» минутки, как-то так…»
    Брал старый скрипт и переделанный - «перепривязанный» к барам, а так же 625 билд.
    Сделал файлы.

    Старый скрипт –




    Переделанный –




    А это 625 балд старый и переделланный –




    Выводы не делаю, т.к. тут «туплю» и просто – что вижу – по объёму расхождение.
    Переделанный скрипт на 625 билде строит на тестере графики БЕЗ ВОПРОСОВ!

    Может это, что-то даст.

    Т.к. постоянно меняют билды, сменили правила написания алгоритма,
    я ничего не понимаю.

    Могу утверждать одно – на 625 все нормально.



    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 129
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 05.11.14 19:28. Заголовок: Игорь! Просто вариан..




    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 924
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 2
    ссылка на сообщение  Отправлено: 06.11.14 21:29. Заголовок: Balbesik пишет: Эт..


    Balbesik пишет:

     цитата:

    Это индикатор равновысоких баров уже переделан (прошу не смеяться) под новые билды –
    индикатор
    http://dropmefiles.com/5V6Vf


    Файл почему-то удален с сервера. Хотя неделя то еще не прошла, чтобы последовало автоматическое удаление.

    Balbesik пишет:

     цитата:
    Теперь в окне есть корректный график и на него «бросаем» скрипт (просто – Исполнить на графике) –
    скрипт описан выше постом – в МКЛ4 в папке Файл получаем файл графика (csv).


    Все-таки непонятно, что за скрипт. Хотя ясно, что таким образом ты переписываешь данные с нестандартного графика в csv-файл для последующего импорта через Архив котировок.

    Balbesik пишет:

     цитата:
    Если сразу, терминал не закрываем, просто поменять ТФ 1 мин. – 5 мин – 1 мин. то увидим ПОЧТИ корректный график и


    Ты писал, что вся история в терминале удалена. После этого была закачана минутная история. Каким образом будет сформирован график М5, если терминал отключен от интернета? На мой взгляд, здесь и кроется ошибка.


    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 130
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 06.11.14 21:43. Заголовок: Scriptong пишет: Фа..


    Scriptong пишет:

     цитата:
    Файл почему-то удален с сервера. Хотя неделя то еще не прошла, чтобы последовало автоматическое удаление.



    Не знаю, мне дали 2 дня.
    Сейчас повторю и опишу.

    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 927
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 2
    ссылка на сообщение  Отправлено: 06.11.14 21:54. Заголовок: Balbesik пишет: Не ..


    Balbesik пишет:

     цитата:
    Не знаю, мне дали 2 дня.
    Сейчас повторю и опишу.


    Особой необходимости в индикаторе нет. Пока интересует вопрос, откуда берутся данные другого ТФ, если закачаны только минутки, интернет отключен, а вся история была предварительно удалена?

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 132
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 06.11.14 22:21. Заголовок: Scriptong пишет: Вс..


    Scriptong пишет:

     цитата:
    Все-таки непонятно, что за скрипт. Хотя ясно, что таким образом ты переписываешь данные с нестандартного графика в csv-файл для последующего импорта через Архив котировок.



    int start()
    {
    int h=FileOpen(Symbol()+(string)Period()+"v1"+".csv",FILE_WRITE|FILE_ANSI|FILE_SHARE_WRITE|FILE_CSV,",");

    int i_Time=(int)Time[0];

    for(int i=0;i<Bars-1;i++) //
    {

    FileWrite((int)h,TimeToStr(i_Time,TIME_DATE),TimeToStr(i_Time,TIME_MINUTES),Open,High,Low,Close,Volume);

    i_Time-=60;

    }

    FileClose((int)h);

    return(0);

    }

    Я его чуть переделал под себя - наверху есть картинка, где исходный код (509 билд) и эта переделка.

    Scriptong пишет:

     цитата:
    Ты писал, что вся история в терминале удалена. После этого была закачана минутная история. Каким образом будет сформирован график М5, если терминал отключен от интернета? На мой взгляд, здесь и кроется ошибка.



    Да это просто переключение - график 5 мин и не нужен.
    Вся эта "свистопляска" на 745 билде, т.к. на 625 билде закачивает нормально,
    предполагаю, что импорт не работает на 745.
    Хотя я мог некорректно править скрипт, хотя 509 тоже закачивается нормально.
    Обратная установка 745 не портит закаченную историю - 625.
    Проверил на другом компе, другой участок истории на 745 в сравнении с экселем - ерунду 745 показывает при импорте.
    Коротко или импорт не работает на 745 или написание скрипта не соответствует новым правилам.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 131
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 06.11.14 21:53. Заголовок: Сейчас дали 7 дней. ..


    Сейчас дали 7 дней.
    http://dropmefiles.com/xJAzC
    индикатор

    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 928
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 2
    ссылка на сообщение  Отправлено: 06.11.14 22:05. Заголовок: Balbesik пишет: Сей..


    Balbesik пишет:

     цитата:
    Сейчас дали 7 дней.
    http://dropmefiles.com/xJAzC
    индикатор


    Ну да. Это обычный synbar, немного переделанный на новый лад (под новый MQL4), хотя и не досконально переделанный.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 133
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 06.11.14 22:28. Заголовок: Scriptong пишет: Ну..


    Scriptong пишет:

     цитата:
    Ну да. Это обычный synbar, немного переделанный на новый лад (под новый MQL4), хотя и не досконально переделанный.



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

    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 930
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 2
    ссылка на сообщение  Отправлено: 07.11.14 21:09. Заголовок: Скрипт для сохранени..


    Скрипт для сохранения данных с графика в csv-файл не нужен. Существует штатный способ: активировать нужный график, меню Файл - Сохранить как.

    Balbesik пишет:

     цитата:
    в качестве обучения, если это недолго, как он должен быть поправь пожалуйста.


    По сути все переделано верно. Особо то и придраться не к чему. Просто резануло глаз использование класса класса памяти extern, а не input, а также возврат из функции OnInit значения -1, а не INIT_FAILED. Вот в принципе и все, т. е. косметика, не меняющая сути.



    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 134
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 07.11.14 22:13. Заголовок: Scriptong пишет: По..


    Scriptong пишет:

     цитата:
    По сути все переделано верно. Особо то и придраться не к чему. Просто резануло глаз использование класса класса памяти extern, а не input, а также возврат из функции OnInit значения -1, а не INIT_FAILED. Вот в принципе и все, т. е. косметика, не меняющая сути.



    Спасибо, Игорь!

    Scriptong пишет:

     цитата:
    Скрипт для сохранения данных с графика в csv-файл не нужен. Существует штатный способ: активировать нужный график, меню Файл - Сохранить как.



    Мне нужен.
    "Равновысокие бары" как таковые не имеют время.
    Тестер - как бы "привязывает" время - этот момент "обхожу" скриптом.
    Две картинки - 625 билд (иногда врет - но не так как 745,
    на 745 - даже "скрипт - переделка" не работает)
    Файл - "Сохранен как"


    и скриптом.



    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 937
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 2
    ссылка на сообщение  Отправлено: 09.11.14 16:50. Заголовок: Balbesik пишет: Мне..


    Balbesik пишет:

     цитата:
    Мне нужен.
    "Равновысокие бары" как таковые не имеют время.
    Тестер - как бы "привязывает" время - этот момент "обхожу" скриптом.


    Да, действительно. Ведь если на графике несколько баров с одинаковым временем формирования, то при импорте CSV-файла они считаются за повторяющиеся, и во внимание принимается только один из них.
    Тогда немного поправь скрипт, чтобы последовательность баров была правильной - от большего к меньшему по индексу, несмотря на то, что это не влияет на операцию импорта:


     цитата:
    void OnStart()
    {
    int h = FileOpen(Symbol()+(string)Period()+"v1"+".csv",FILE_WRITE|FILE_ANSI|FILE_SHARE_WRITE|FILE_CSV,",");
    if (h == INVALID_HANDLE)
    {
    Alert("Ошибка создания файла №", GetLastError());
    return;
    }

    datetime time = Time[0] - (Bars - 1) * 60;
    for (int i = Bars - 1; i >= 0; i--, time += 60)
    FileWrite(h, TimeToStr(time, TIME_DATE), TimeToStr(time, TIME_MINUTES), DoubleToString(Open[ i ], _Digits),
    DoubleToString(High[ i ], _Digits), DoubleToString(Low[ i ], _Digits), DoubleToString(Close[ i ], _Digits), Volume[ i ]);

    FileClose(h);

    }



    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 135
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 10.11.14 13:55. Заголовок: Scriptong пишет: То..


    Scriptong пишет:

     цитата:
    Тогда немного поправь скрипт, чтобы последовательность баров была правильной...



    Спасибо, Игорь!
    Появляется инструмент для работы, т.к.
    без соответствия реальному графику это было бессмысленно.


    Спасибо: 0 
    Профиль
    Anatoliy



    Сообщение: 27
    Зарегистрирован: 13.07.14
    Репутация: 0
    ссылка на сообщение  Отправлено: 09.11.14 17:45. Заголовок: Добрый суток, Игорь...


    Добрый суток, Игорь.

    Как получить свойства позиции???
    Открытая сделка, например: магический номер, символ, комментарий, своп, комиссия, текущая цена, цена открытая сделка, прибыль/убыток, объём, Stop Loss, Take Profit, время открытия, идентификатор и тип позиции.

    У MQL5 есть спец. функции PositionGetString(), PositionGetInteger(), PositionGetDouble(), а в MQL4 нет, т.е. самим написать? Как?

    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 938
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 2
    ссылка на сообщение  Отправлено: 09.11.14 18:24. Заголовок: Добрый день, Anatoli..


    Добрый день, Anatoliy.

    Anatoliy пишет:

     цитата:
    Как получить свойства позиции???


    В MT4 и MT5 разная терминология. У МТ4 - ордера (рыночные и отложенные), у МТ5 - позиции (эквивалент рыночных ордеров МТ4) и ордера (эквивалент отложенных ордеров МТ4).
    В МТ4 параметры ордера можно получить одинаковым способом для рыночного и отложенного ордера. Для этого ордер сначала выбирается (OrderSelect), а потом вызываются нужные функции для запроса конкретных параметров: OrderProfit, OrderSwap, OrderStopLoss и т. д (см. здесь).

    Спасибо: 0 
    Профиль
    Anatoliy



    Сообщение: 28
    Зарегистрирован: 13.07.14
    Репутация: 0
    ссылка на сообщение  Отправлено: 09.11.14 20:03. Заголовок: Функция OrderSelect(..


    Функция OrderSelect() имеет три параметры, два последняя параметра понятна, а первый параметр ticket откуда мне знать какой-то номер тикета или порядковый номер ордера в списке?

    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 939
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 2
    ссылка на сообщение  Отправлено: 09.11.14 22:50. Заголовок: Anatoliy пишет: а п..


    Anatoliy пишет:

     цитата:
    а первый параметр ticket откуда мне знать какой-то номер тикета или порядковый номер ордера в списке?


    Когда тикет неизвестен, используется перебор всего списка ордеров:

     цитата:
    for (int i = OrdersTotal() - 1; i >= 0; i--)
    {
    if (!OrderSelect(i, SELECT_BY_POS))
    continue;
    // критерии выбора ордера
    }


    или:

     цитата:
    for (int i = OrdersHistoryTotal() - 1; i >= 0; i--)
    {
    if (!OrderSelect(i, SELECT_BY_POS, MODE_HYSTORY))
    continue;
    // критерии выбора ордера
    }



    Критерии выбора ордера бывают разные. Например, нас могут интересовать все ордера по текущему символу. В этом случае используем условие OrderSymbol() == Symbol(). Или, что чаще, нужны ордера с некоторым MAgic Number, который используется нашим советником для дальнейшего опознания своих ордеров. Тогда нужно условие OrderMagicNumber() == magicNumber.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 136
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 11.11.14 18:34. Заголовок: Здравствуй, Игорь! П..


    Здравствуй, Игорь!
    Пара-тройка вопросов?
    1. Так или иначе ты «вник» в синбар (равновысокий).
    Правильно ли я понимаю,
    что «отсечка» по времени у равновысокого бара идет,
    в отличии от «штатного» по Closе?
    2. У тебя была ссылка на тему – «Вписать индикатор в советник».
    Найти не могу, все статьи пересмотрел – подскажи, пожалуйста.
    Хочу попробовать (проблема памяти).
    3. Можешь ли МТ4 связать с МТ5 – котировки, их контроль и прочь.
    Это отдельно в почте, если возможно, то сориентируешь по работе.


    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 949
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 2
    ссылка на сообщение  Отправлено: 11.11.14 19:33. Заголовок: Добрый вечер, Евгени..


    Добрый вечер, Евгений.

    Balbesik пишет:

     цитата:
    1. Так или иначе ты «вник» в синбар (равновысокий).
    Правильно ли я понимаю,
    что «отсечка» по времени у равновысокого бара идет,
    в отличии от «штатного» по Closе?


    Немного подробнее, пожалуйста. Что такое отсечка и что такое штатный равновысокий бар?

    Balbesik пишет:

     цитата:
    2. У тебя была ссылка на тему – «Вписать индикатор в советник».
    Найти не могу, все статьи пересмотрел – подскажи, пожалуйста.
    Хочу попробовать (проблема памяти).


    Это мы вот здесь обсуждали. Но никакого универсального алгоритма встраивания индикатора в советник не существует. К этому процессу нужно подходить индивидуально, в зависимости от индикатора.

    Balbesik пишет:

     цитата:
    3. Можешь ли МТ4 связать с МТ5 – котировки, их контроль и прочь.
    Это отдельно в почте, если возможно, то сориентируешь по работе.


    Какого типа связь между МТ4 и МТ5 интересует?

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 137
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 11.11.14 21:59. Заголовок: Scriptong пишет: ..


    Scriptong пишет:

     цитата:


    Немного подробнее, пожалуйста. Что такое "отсечка" и что такое штатный равновысокий бар


    Насколько я понимаю, обычный штатный бар, время бара - по Опен, а равноаысокий по Клозе.
    В чем и хотел убедится.

    По второму спасибо - это и искал!

    Scriptong пишет:

     цитата:
    Какого типа связь между МТ4 и МТ5 интересует?


    Нет как таковая связь не нужна.
    На МТ5 нет импорта, а хотелось бы "поиграться" -
    это отдельная тема не для форума.
    Завтра постараюсь на почте изложить (если у тебя будет время).



    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 950
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 2
    ссылка на сообщение  Отправлено: 11.11.14 23:38. Заголовок: Balbesik пишет: Нас..


    Balbesik пишет:

     цитата:
    Насколько я понимаю, обычный штатный бар, время бара - по Опен, а равноаысокий по Клозе.
    В чем и хотел убедится.


    В каком-то смысле - да. Это вытекает из алгоритма построения равновысоких баров: закрытие равновысокого бара - это всегда его максимум или минимум. А вот время бара все равно соответствует цене открытия бара.

    Balbesik пишет:

     цитата:
    На МТ5 нет импорта, а хотелось бы "поиграться"


    В МТ5 не дали играться с историей. Приходится использовать ту, что дает терминал. В итоге все нестандартные ТФ там можно делать не штатным, а только синтетическим образом - через отображение графического объекта "Чарт". Хотя, возможно, и это не получится, т. к. сам не пробовал.
    Поэтому в МТ5 с нестандартными ТФ все гораздо сложнее. Хотя по логике должно было быть наоборот.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 138
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 12.11.14 17:57. Заголовок: Scriptong пишет: В ..


    Scriptong пишет:

     цитата:
    В МТ5 не дали играться с историей. Приходится использовать ту, что дает терминал. В итоге все нестандартные ТФ там можно делать не штатным, а только синтетическим образом - через отображение графического объекта "Чарт". Хотя, возможно, и это не получится, т. к. сам не пробовал.
    Поэтому в МТ5 с нестандартными ТФ все гораздо сложнее. Хотя по логике должно было быть наоборот.



    Даа…,
    Другими словами вариант «подмены ТФ» не смотрится.

    Все рушится по фондовки (там Мт5).

    А тогда вариант, что-то типа моста на МТ4?

    Если рано или поздно этого Рената посадят,
    не поленюсь съезжу свечку поставлю.


    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 951
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 2
    ссылка на сообщение  Отправлено: 12.11.14 20:18. Заголовок: Balbesik пишет: Дру..


    Balbesik пишет:

     цитата:
    Другими словами вариант «подмены ТФ» не смотрится.


    Ну почему же? Просто в МТ5 будет несколько другой подход, не такой как в МТ4. Я еще на этот счет всерьез не думал, но, как минимум, пользовательские чарты в МТ5 есть. В МТ4, к примеру, такого нет.

    Balbesik пишет:

     цитата:
    А тогда вариант, что-то типа моста на МТ4?


    Можно. Но, на мой взгляд, это лишнее усложнение. Все можно сделать на одном МТ5. К примеру, для него можно сделать свой TicksCollector, который будет строить нестандартные ТФ в специальном чарте. Хотя это пока только догадки. Нужно пробовать.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 139
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 13.11.14 22:45. Заголовок: Scriptong пишет: Ну..


    Scriptong пишет:

     цитата:
    Ну почему же? Просто в МТ5 будет несколько другой подход, не такой как в МТ4. Я еще на этот счет всерьез не думал,
    но, как минимум, пользовательские чарты в МТ5 есть. В МТ4, к примеру, такого нет.




    Файл - Открыть автономно..., такого нет.
    Если "накладывать" поверх штатного графика, то как будет работать советник в реале.
    Вот этого я вообще не знаю.

    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 954
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 2
    ссылка на сообщение  Отправлено: 14.11.14 20:44. Заголовок: Balbesik пишет: Фай..


    Balbesik пишет:

     цитата:
    Файл - Открыть автономно..., такого нет.


    Да, я именно об этом и говорю - нет поддержки пользовательской истории. Видимо, разработчики МТ слишком ревностно относятся к нестандартным графикам.

    Balbesik пишет:

     цитата:
    Если "накладывать" поверх штатного графика, то как будет работать советник в реале.


    Что-то типа такого, но смотрится удобоваримо - вот так. Ну а работать придется с котировками из специально создаваемого файла. Проще говоря, вести свою бухгалтерию. Терминал в этом случае нужен только для отправки торговых приказов. На этот счет в МТ4 простор больше.

    P. S. Посмотрел внимательнее на этот OBJ_CHART. Он тоже с ограничениями. Ему нельзя скормить собственную историю. Объект "чарт" берет данные из истории, предоставляемой терминалом. Так что торговля по нестандартным графикам в МТ5 - это создание практически второй копии клиентского терминала.



    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 140
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 17.11.14 21:26. Заголовок: Scriptong пишет: Та..


    Scriptong пишет:

     цитата:
    Так что торговля по нестандартным графикам в МТ5 - это создание практически второй копии клиентского терминала.



    Добрый вечер!

    Я помню твою позицию, но все равно интересен твой взгляд.

    Если я только правильно предполагаю, то совместно с МТ5 (как брокер)
    использовать Trader68 - в свободном доступе ( http://www.trader68.com/ ),
    а вместо TradingSolutions использовать МТ4.

    Может , что–либо получиться (что твой опыт говорит)?
    Само по себе это направление может иметь место или пустая трата времени?

    Помню, ты писал, что можно «увязнуть» и не решить проблему.

    Встречались ли где – либо готовые «мосты» (примеры) для МТ5?

    Естественно, речь идет о доработке. Например котировки с МТ5
    путем "Сохранить как.." не идут в МТ4 и не идут скриптом,
    но если переделать скрипт в индикатор,
    то в МТ4 закачиваются (история для тестера).

    Другими словами если доработка незначительная.


    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 968
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 18.11.14 09:56. Заголовок: Добрый день. Balbes..


    Добрый день.

    Balbesik пишет:

     цитата:
    Я помню твою позицию, но все равно интересен твой взгляд.

    Если я только правильно предполагаю, то совместно с МТ5 (как брокер)
    использовать Trader68 - в свободном доступе ( http://www.trader68.com/ ),
    а вместо TradingSolutions использовать МТ4.

    Может , что–либо получиться (что твой опыт говорит)?


    К сожалению ни с первым, ни со вторым не работал. Только слышал и, наверное, только от тебя. Поэтому тут опыта 0.

    Balbesik пишет:

     цитата:
    Само по себе это направление может иметь место или пустая трата времени?


    Направление с нестандартными ТФ? На мой взгляд перспективное. Именно его я сейчас и разрабатываю. Правда, опустился до тиков и пытаюсь анализировать не какой-либо конкретный ТФ, а чистый тиковый поток. К тому же, когда имеешь дело с тиковым потоком, время действительно теряет значение, как ты и характеризовал равновысокие бары.

    Balbesik пишет:

     цитата:
    Например котировки с МТ5
    путем "Сохранить как.." не идут в МТ4 и не идут скриптом,
    но если переделать скрипт в индикатор,
    то в МТ4 закачиваются (история для тестера).


    Ну а это уже есть. Потратил 10 мин на поиск и нашел скрипт от Юрия Зайцева или подобный от Андрея Хатимлянского.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 141
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 18.11.14 20:01. Заголовок: индикатор Scriptong ..


    индикатор
    Scriptong пишет:

     цитата:
    Ну а это уже есть. Потратил 10 мин на поиск и нашел скрипт от Юрия Зайцева или подобный от Андрея Хатимлянского.



    Добрый вечер!

    Да это я к простоте переделки – скрипт – индикатор – работает.
    индикатор (http://dropmefiles.com/gQVAi)

    Интересная идеология Метаквостов – выполняя «пожелания» Заказчиков (ДЦ) –
    «отсекается» на форумах связка МТ4-МТ5. Т.е., по логике, для пользователя (старого)
    имеющего наработки по МТ4 был бы смысл сделать «зеленую улицу»
    по «мостам» МТ4-МТ5, однако «политика» только МТ5-МТ4
    (http://www.mql5.com/ru/articles/189 - Копирование торговли из MetaTrader 5 в MetaTrader 4).

    Учитывая, насколько мне известно, что
    эта МТ5 не имеет сертификации ни на одной бирже мира (это не выгодно Заказчикам).
    В отличии от других платформ «не выходит»
    на «шлюз» биржи, и сервер находится в руках ДЦ.

    Вариант при отсутствии законодательства.

    Соответственно тут и их политика и интересы Заказчиков.

    Соответственно, ни один здравомыслящий человек, как мне кажется,
    не станет более менее приличные деньги пускать через эту
    платформу (хотя, как инструмент для меня – МТ4, не плохой).

    В общем плевать на них. Сегодня не актуально.

    Scriptong пишет:

     цитата:
    Направление с нестандартными ТФ...



    А вот это очень интересно.

    Я использую в первую очередь с т.з. прикладного значения –
    попробую пояснить на примере –
    для отработки любого советника (индикатора) используется тестер.

    В тестере предусмотрено 2 режима с «Генетическим алгоритмом» и без.

    При тестировании более одного параметра с «Генетическим алгоритмом»
    не зная начальные их значения (а мы их первоначально и не знаем, для этого и тест)
    в результате мы получим «Настроение бабушки, умершей в прошлом веке»,
    а если без «Генетического алгоритма» (полный перебор) в зависимости от диапазона,
    по времени может занять «До второго пришествия».
    А так же тест от 0 до ..... дает массу некорректных значений.

    Возникает вопрос диапазона тестирования (первоначальный тест) –

    А как его хотя бы приблизительно «прикинуть» - необходим расчет, а размерности по осям (цена- время) разные.

    Уходя на равновысокий бар мы получаем диапазон, т.е. если цена прошла 30 пунктов и размах бара задан 10 пунктов,
    то по цене приведенной к барам не может быть более 3 баров – т.е граница диапазона!

    Другими словами мы получаем «меру» или «базу» от которой можно «плясать».

    Это прикладное по равновысоким.

    Ну и пожелание по объемам – имеем путь (размах), время и количество тиков (объем) по бару.
    Время считаю использовать не очень корректно из-за торговых сессии.

    А вот объем приведенный к размаху (v/н), а еще и в виде равновысоких по объему – очень интересно.



    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 974
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 18.11.14 21:35. Заголовок: Balbesik пишет: Учи..


    Balbesik пишет:

     цитата:
    Учитывая, насколько мне известно, что
    эта МТ5 не имеет сертификации ни на одной бирже мира (это не выгодно Заказчикам).


    Есть у них сертификация на многих биржах (Чикагской, РТС, Бразильской). То есть далеко не на одной бирже, их больше, чем я перечислил. Так что этот камень в них не бросить

    Balbesik пишет:

     цитата:
    В тестере предусмотрено 2 режима с «Генетическим алгоритмом» и без.


    Тестер, что МТ4, что МТ5 лучше не использовать в качестве последнего критерия выбора торговой системы. Это должен быть один из первых критериев, невыполнение которого автоматически убирает стратегию из нашего поля зрения. Искать же оптимальные параметры для работы системы вообще не имеет смысла, т. к. мы ищем их на истории, которая полностью в деталях уже не повториться. Повтор может быть, но со значительными изменениями.
    Для оценки системы лучше использовать следующий подход:
    1. Оптимизировать систему на как можно бОльшем периоде.
    2. Посмотреть на расхождение результатов при различных значениях параметров.

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

    Balbesik пишет:

     цитата:
    А вот объем приведенный к размаху (v/н), а еще и в виде равновысоких по объему – очень интересно.


    К сожалению, идеально совместить равновысокие и эквиобъемные графики на одном чарте не получится. Разве что принять, что бар закрывается по выполнению первого из условий: достигнут заданный максимум объема бара или достигнута заданная высота бара. В принципе - да, интересно. Такого подхода я еще не видел, можно попробовать. Просто ради расширения опыта исследований. Но мне кажется, что получим "солянку".

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 142
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 19.11.14 10:56. Заголовок: Scriptong пишет: Но..


    Scriptong пишет:

     цитата:
    Но мне кажется, что получим "солянку".



    Не...
    "Солянка" не нужна.
    Да и как считать будет не понятно.
    Я подразумевал, что еще один график "наложен" и
    мне кажется, что получим что-то типа пересечения МА.

    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 979
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 19.11.14 21:56. Заголовок: Balbesik пишет: Я п..


    Balbesik пишет:

     цитата:
    Я подразумевал, что еще один график "наложен" и
    мне кажется, что получим что-то типа пересечения МА.


    А, вон оно как! В этом варианте появится проблема синхронизации баров по времени. Допустим, одному бару эквиобъемного графика будет соответствовать несколько баров равновысокого графика. Причем ладно, если бы это соотношение было только в одну сторону. В данном случае это соотношение будет меняться со временем. То один график будет "более медленный", то другой. Так что нужно крепко подумать над проблемой отображения такого графика.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 143
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 20.11.14 14:42. Заголовок: Scriptong пишет: А,..


    Scriptong пишет:

     цитата:
    А, вон оно как! В этом варианте появится проблема синхронизации баров по времени. Допустим, одному бару эквиобъемного графика будет соответствовать несколько баров равновысокого графика. Причем ладно, если бы это соотношение было только в одну сторону. В данном случае это соотношение будет меняться со временем. То один график будет "более медленный", то другой. Так что нужно крепко подумать над проблемой отображения такого графика.



    Вот, что значит, не умею объяснить.
    Для начало – «быстрее» - «медленней» это должно быть (я так думаю).

    Главное нет оснований хоть что-то предполагать!

    Возвращаемся к началу проблемы – равнообъемные да, равновысокие да, ну и что?
    Даже не стоит вопрос , а как считать?
    Задача – сделать равнообъемные в привязки к равновысоким.
    Попробую опять на примерах –
    Рис. 0 – история (offlein) – идут 1 до «нового» бара по истории – нет объема.

    Рис. 1 – подтверждение в реале.

    Рис. 2 – внутри бара «случайным» образом выбран объем – его взять не где и берет последний.

    Другими словами нет основании о каких-либо выводах.
    На внешний взгляд «простота» задачи, но мне не удается ее переложить в алгоритм.
    Цель – берем один бар, допустим 20 пунктов – равновысокий по цене = 10 пунктов = 2 бара,
    По объему (зададим 5 единиц) – 4 бара.
    Как минимум можно посмотреть чередование периодов, соотношение пути ко времени,
    как квадрат для случайных величин, оптимизация их согласованности и проч. и проч.
    Т.е. для начала разложить равнообъемный в привязки к ценам (Клозе-Опен) равновысоких.
    Даже, хотя бы как консультация в рамках синбара.
    Я это сделать не могу, а реал по тикам – не представляю, кто найдет столько времени?
    А связка в один индикатор - тут масса причин,
    хотя на этапе отработки (решения проблемы привязки, хотя она сама по себе это требует),
    возможно и не надо (существуют же Глобальные).


    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 984
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 21.11.14 22:21. Заголовок: Balbesik пишет: Зад..


    Balbesik пишет:

     цитата:
    Задача – сделать равнообъемные в привязки к равновысоким.


    Эта фраза вроде бы говорит о том, что все-таки требуется некий микс из эквиобъемных и равновысоких баров. Меня именно этот способ сначала заинтересовал, но потом вроде бы понял, что требуется другое. Теперь вновь возвращаемся назад. Видимо придется набраться тебе терпения и объяснять мне до тех пор, пока не дойдет до меня.

    Balbesik пишет:

     цитата:
    Цель – берем один бар, допустим 20 пунктов – равновысокий по цене = 10 пунктов = 2 бара,
    По объему (зададим 5 единиц) – 4 бара.


    Но вот сам способ микса непонятен.

    На рисунках же приведено что-то странное. Если крайняя правая колонка указывает тиковый объем, то каким образом все четыре цены минутного бара оказываются разными? Скорее всего, в данных, откуда взята минутная история, не было информации о тиковом объеме. Его просто добавили для совместимости с МТ4. Но тогда на эти единички не стоит обращать внимание.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 144
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 26.11.14 21:15. Заголовок: Добрый вечер! Не ум..


    Добрый вечер!

    Не умею объяснять.

    Начну с того, что идет речь о инструменте, а не о методе тех. анализа.
    Инструмент разбивается на два – для истории и для реала.

    С начало с этого –
    Scriptong пишет:

     цитата:
    На рисунках же приведено что-то странное. Если крайняя правая колонка указывает тиковый объем,
    то каким образом все четыре цены минутного бара оказываются разными?
    Скорее всего, в данных, откуда взята минутная история, не было информации о тиковом объеме.
    Его просто добавили для совместимости с МТ4. Но тогда на эти единички не стоит о



    Рисунки взяты с графика равновысоких баров по истории.
    1 заложена в алгоритме синбара.

    В этом и проблема.

    Четыре цены – это значения у разложенной минутки на равновысокие бары.
    При этом объёма на истории равновысоких баров нет, хотя на 1 минутке он есть.
    На реале на равновысоких барах объём есть.

    Все это время, попытки разложить объём 1 минутки (история) пропорционально на равновысокие бары не удались.
    Т.е. брал синбар, для работы по истории.

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

    Ну и в данный момент, кроме прочего, советники, в т.ч. штатные, перестали видеть всю «скаченную» историю (только недели 2)
    – тут масса вопросов.
    Накопленную историю с реала советники пока «видят» - или Метаквосты «стараются» или что-то опять с кодом.

    Т.е. попробую далее на словах (без картинок) –
    Scriptong пишет:

     цитата:
    Эта фраза вроде бы говорит о том, что все-таки требуется некий микс из эквиобъемных и равновысоких баров.
    Меня именно этот способ сначала заинтересовал, но потом вроде бы понял, что требуется другое.
    Теперь вновь возвращаемся назад.
    Видимо придется набраться тебе терпения и объяснять мне до тех пор, пока не дойдет до меня.



    Когда я писал про «не надо солянку» подразумевал, что надо 2 графика, а не один график – «сурогат».

    Еще раз – исходный 1 минутный бар размахом 20 пунктов и «условный объем» 20 единиц.

    А) задаем 10 пунктов р/в и 10 ед. объема, раскладываем на равновысокие по 10 пунктов и по 10 ед. объёма
    получим 2 совпадающих бара.

    Б) задаем 10 пунктов р/в и 5 ед. объема, при этом на первые 10 пунктов р/в бара приходится 5 ед. обьема,
    а на 2 р/в бар приходится 15 ед. обьема, раскладываем на
    равновысокие по 10 пунктов и по объёму на первый р/в бар 1 бар объема, на 2 р/в бар 3 бара объема.

    С) задаем 10 пунктов р/в и 15 ед. объема, при этом на первые 10 пунктов р/в бара приходится 12 ед. обьема (бар по объему не сформирован) и
    формирование бара по объему происходит на 2 р/в баре и 5 ед. объема «уйдет» на следующую минуту.
    Получим 2 р/в барам соответствует 1 бар по объему.

    Основная задача «связать» 2 графика, «без разрывов квждый», равновысоких и равнообъёмных баров.

    Мы имеем на баре цены, тиковый объем и время. Хотя и цены и время формирования могут быть разные,
    но по специфики построения (время р/в бара – по цене закрытия) будет связка по времени равновысокого бара.
    Остаточный объём не принципиален – он компенсирует сам себя (разность уйдет на "0" бар).

    Как бы линейный график времени превращаем в 2 нелинейных графика и пытаемся их согласовать.



    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1012
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 27.11.14 18:58. Заголовок: Balbesik пишет: Все..


    Balbesik пишет:

     цитата:
    Все это время, попытки разложить объём 1 минутки (история) пропорционально на равновысокие бары не удались.
    Т.е. брал синбар, для работы по истории.


    Возьми TicksCollector. Он даст реальный тиковый объем для равновысоких баров, а не 1.

    Balbesik пишет:

     цитата:
    С) задаем 10 пунктов р/в и 15 ед. объема, при этом на первые 10 пунктов р/в бара приходится 12 ед. обьема (бар по объему не сформирован) и
    формирование бара по объему происходит на 2 р/в баре и 5 ед. объема «уйдет» на следующую минуту.
    Получим 2 р/в барам соответствует 1 бар по объему.


    Я именно так себе и представлял совмещение равновысоких и эквиобъемных графиков. И уже говорил о проблеме, которая возникнет - постоянное рассогласование по количеству баров. На графике это будет выглядеть как рассогласование по времени.
    Берем график равновысоких свечей с высотой 10 пунктов (М313) и эквиобъемный график с количеством тиков 100 (М314) на свечу. В одном случае получим бОльшее количество свечей, приходящееся на выбранный промежуток времени, на графике равновысоких свечей:


    Во втором случае бОльшее количество свечей будет на стороне эквиобъемного графика:


    Придумав решение этой проблемы, можно говорить о совмещении двух графиков на одном поле. До этого момента придется просто ставить разные графики один под другим, не имея проблем с разрывами в данных.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 145
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 28.11.14 12:29. Заголовок: Добрый день, Игорь! ..


    Добрый день, Игорь!

    Scriptong пишет:

     цитата:
    Возьми TicksCollector. Он даст реальный тиковый объем для равновысоких баров, а не 1.



    Брал для равновысоких.
    Я с ним справится не могу, я об этом писал раннее - с момента публикации и позднее – первая картинка –
    Отправлено: 17.10.14 13:20. Заголовок: http://f6.s.qip.ru/2..
    Предположил, что у меня проблема памяти, а память, из-за оптимизации в советнике, на пределе.
    Сейчас повторно, но уже с равнообъёмными, поставил – посмотрю.

    Scriptong пишет:

     цитата:
    Я именно так себе и представлял совмещение равновысоких и эквиобъемных графиков.
    И уже говорил о проблеме, которая возникнет - постоянное рассогласование по количеству баров.
    На графике это будет выглядеть как рассогласование по времени.
    Берем график равновысоких свечей с высотой 10 пунктов (М313) и
    эквиобъемный график с количеством тиков 100 (М314) на свечу.
    В одном случае получим бОльшее количество свечей, приходящееся на выбранный промежуток
    времени, на графике равновысоких свечей:



    Рассогласование по количеству баров, на мой взгляд, это как раз хорошо.
    А вот по времени – да так, как бы и должно быть, но в этом и вопрос.

    Тут конечно масса вариантов.

    Четыре вопроса:
    1. Модель формирования равновысокого бара.
    2. В зависимости от модели равновысокого – модель формирования равнообъемного бара.
    3. Проблема масштабирования.
    4. Знание программирования.

    Я и предлагаю «на посмотреть» приведение закрытия равнообъемного бара ко времени закрытия равновысокого бара –
    на картинке обведено красным.

    Исходил из того, что например, между минутками может быть сколько угодно равновысоких баров и
    соответственно между равновысокими равнообьемных.

    А дальше проще.




    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1015
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 28.11.14 20:47. Заголовок: Balbesik пишет: Я и..


    Balbesik пишет:

     цитата:
    Я и предлагаю «на посмотреть» приведение закрытия равнообъемного бара ко времени закрытия равновысокого бара –
    на картинке обведено красным.


    На рисунке показано простое совмещение двух графиков на одном. В принципе это можно сделать при помощи графических объектов (не очень удобно пользоваться, но посмотреть можно). Но что это дает по сравнению с тем, чтобы придвинуть друг к другу два графика? Если только в синхронизации дело, то для этого следует использовать скрипт, синхронизирующий выбранные графики.

    Совершенно другое дело, если лепить некий гибрид из равновысоких и эквиобъемных, т. е. все-таки, отображать один график, а не два. Но в этом случае нужно придумать способ такого объединения (у меня есть один вариант, но, на мой взгляд, это глупость). В итоге получится четвертый тип нестандартных графиков, какой-нибудь "эквивысокообъемный" .

    Спасибо: 0 
    Профиль
    Anatoliy



    Сообщение: 29
    Зарегистрирован: 13.07.14
    Репутация: 0
    ссылка на сообщение  Отправлено: 28.12.14 19:03. Заголовок: Добрый, суток. Где ..


    Добрый, суток.

    Где хранится звуковые файлы?
    В документации указана каталог_терминала\Sounds или его подкаталоге.
    А как поточнее их найти? А если их нету, то самому создать папку?!

    Спасибо: 0 
    Профиль
    Genry
    постоянный участник




    Сообщение: 1100
    Зарегистрирован: 04.03.13
    Откуда: Москва
    Репутация: 2
    ссылка на сообщение  Отправлено: 28.12.14 19:29. Заголовок: Anatoliy пишет: Где..


    День добрый, Анатолий!

    Anatoliy пишет:

     цитата:
    Где хранится звуковые файлы? В документации указана каталог_терминала\Sounds



    Обычно здесь: C:\Program Files (x86)\MT4\Sounds

    С уважением! Спасибо: 0 
    Профиль
    Anatoliy



    Сообщение: 30
    Зарегистрирован: 13.07.14
    Репутация: 0
    ссылка на сообщение  Отправлено: 28.12.14 19:51. Заголовок: Спасибо, Genry :sm36..


    Спасибо, Genry

    Я нашёл!
    Не так сразу можно найти!!!


    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1072
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 30.12.14 17:58. Заголовок: Существует универсал..


    Существует универсальный способ нахождения папки данных терминала: меню "Файл" - "Открыть каталог данных".
    Откроется проводник с корневой папкой данных терминала. В ней будут и папка Sounds, и папка MQL4 и т. д.

    Спасибо: 0 
    Профиль
    skilful_coder





    Сообщение: 1
    Зарегистрирован: 05.01.15
    Репутация: 0
    ссылка на сообщение  Отправлено: 05.01.15 02:55. Заголовок: Привет Scriptong! Мн..


    Привет Scriptong! Мне надо код Number of Retry Attempts for Order Execution(Количество повторных попыток для выполнения заказа). Пожалуйста помогите меня?!

    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1089
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 05.01.15 19:47. Заголовок: skilful_coder пишет:..


    skilful_coder пишет:

     цитата:
    Привет Scriptong! Мне надо код Number of Retry Attempts for Order Execution(Количество повторных попыток для выполнения заказа). Пожалуйста помогите меня?!


    Ответил здесь.

    Спасибо: 0 
    Профиль
    Balbesiuk



    Не зарегистрирован
    Зарегистрирован: 23.01.15
    Репутация: 0
    ссылка на сообщение  Отправлено: 23.01.15 19:02. Заголовок: Интересно, после уда..


    Интересно, после удаления меня, как гр. РФ, будет текст или нет?
    Есть такой Аксин на Лайте, мы много спорили с Александром, что такое дивергенция?
    А есть ли она?
    Еще никто мне не доказал, что это имеет место быть, в принципе!
    А что это такое?
    Если это сообщение "проскочит" может кто прояснит, как и откуда берется это рассогласование?

    P.S.
    Игорь, вопрос снят - видишь форум меня "пропустил"???.

    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1135
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 23.01.15 21:46. Заголовок: Balbesiuk пишет: Ес..


    Balbesiuk пишет:

     цитата:
    Есть такой Аксин на Лайте, мы много спорили с Александром, что такое дивергенция?


    Тут спорить не о чем. Есть понятие - "расхождение показаний индикатора и цены". В общей трактовке, если не вдаваться в точные математические формулировки, имеет достаточно однозначное определение: разнонаправленность трендовых линий, проведенных через точки локальных экстремумов.
    Если же копать дальше, в правила, то у дивергенции таких общепринятых правил нет. Каждый строит дивергенции по своим правилам.

    Balbesiuk пишет:

     цитата:
    Игорь, вопрос снят - видишь форум меня "пропустил"???.


    Да я уже привык к тому, что ты часто "паникуешь" Вспомнил пароль - ну и хорошо.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 156
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 23.01.15 22:08. Заголовок: Привет, Игорь! Нм ч..


    Привет, Игорь!

    Нм чего не вспоминал и не забывал!
    Это "глюк" на форуме, кстати Balbesiuk - не регистрировал, сам "вошел".
    Ну ладно, суть в другом - используя периодические и непериодические колебания для расчета
    и в качестве фильтра взяв ОBV с изменением, удалось уменьшить дивергенцию с порядка 15-18 за период,
    до 2-3 значений - это здорово для фильтра.
    Все таки интересно вернуться к "обьему".
    По OBV -
    for(i=nLimit; i>=0; i--) // слево - из истории
    {
    if(MathAbs(iHigh(NULL,PERIOD_CURRENT,i)-iLow(NULL,PERIOD_CURRENT,i))!=0)
    DeltaOH=NormalizeDouble(MathAbs(iHigh(NULL,PERIOD_CURRENT,i)-iOpen(NULL,PERIOD_CURRENT,i))
    /
    MathAbs(iHigh(NULL,PERIOD_CURRENT,i)-iLow(NULL,PERIOD_CURRENT,i)),5);
    if(MathAbs(iHigh(NULL,PERIOD_CURRENT,i)-iLow(NULL,PERIOD_CURRENT,i))!=0)
    DeltaOL=NormalizeDouble(MathAbs(iLow(NULL,PERIOD_CURRENT,i)-iOpen(NULL,PERIOD_CURRENT,i))
    /
    MathAbs(iHigh(NULL,PERIOD_CURRENT,i)-iLow(NULL,PERIOD_CURRENT,i)),5);

    if(iClose(NULL,PERIOD_CURRENT,i)==iHigh(NULL,PERIOD_CURRENT,i) && DeltaOH!=0)DeltaOH1=iVolume(NULL,PERIOD_CURRENT,i) * DeltaOH;
    DeltaOL1=MathAbs(iVolume(NULL,PERIOD_CURRENT,i) - DeltaOH1);

    if(iClose(NULL,PERIOD_CURRENT,i)==iLow(NULL,PERIOD_CURRENT,i) && DeltaOL!=0) DeltaOL1=iVolume(NULL,PERIOD_CURRENT,i) * DeltaOL;
    DeltaOH1=MathAbs(iVolume(NULL,PERIOD_CURRENT,i) - DeltaOL1);

    DeltaV1=MathAbs(DeltaOH1 - DeltaOL1);

    //if(DeltaOH > DeltaOL)DeltaV1=DeltaOH1;
    //if(DeltaOH < DeltaOL)DeltaV1=DeltaOL1; // -

    //Print(" DeltaOH1 ",DeltaOH1);
    //Print(" DeltaOL1 ",DeltaOL1);
    //Print(" DeltaV1 ",DeltaV1);
    //Print(" iVolume(NULL,PERIOD_CURRENT,i) ",iVolume(NULL,PERIOD_CURRENT,i));

    if(i==iBars(NULL,PERIOD_CURRENT)-1)
    ExtOBVBuffer=DeltaV1; // стартовый обьем DeltaV1 iVolume(NULL,PERIOD_CURRENT,i)
    else
    {
    dCurrentPrice=GetAppliedPrice(ExtOBVAppliedPrice, i);
    dPreviousPrice=GetAppliedPrice(ExtOBVAppliedPrice, i+1);
    if(dCurrentPrice==dPreviousPrice || iVolume(NULL,PERIOD_CURRENT,i)==0)
    ExtOBVBuffer=ExtOBVBuffer[i+1];
    else
    {
    if(dCurrentPrice<dPreviousPrice) // dCurrentPrice<dPreviousPrice
    // iClose(NULL,PERIOD_CURRENT,i)==iHigh(NULL,PERIOD_CURRENT,i) DeltaOH > DeltaOL

    ExtOBVBuffer=ExtOBVBuffer[i+1] - DeltaV1; // -
    //ExtOBVBuffer=dPreviousPrice+DeltaV1;
    else
    ExtOBVBuffer=ExtOBVBuffer[i+1] + DeltaV1;
    //ExtOBVBuffer=dPreviousPrice+DeltaV1;
    }
    и т.д.

    Было бы интересно вернуться к теме.

    P.S. Рендж бары - равновысокие.

    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1139
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 25.01.15 12:51. Заголовок: Balbesik пишет: исп..


    Balbesik пишет:

     цитата:
    используя периодические и непериодические колебания для расчета
    и в качестве фильтра взяв ОBV с изменением, удалось уменьшить дивергенцию с порядка 15-18 за период,
    до 2-3 значений - это здорово для фильтра.


    О чем здесь идет речь?
    Что за периодические и непериодические колебания?
    Каковы изменения в стандартном OBV? Приведенный код неполон, т. к. не отображает сути изменений.
    Что понимается под периодом: интервал истории или количество баров, используемых для расчета значений индикатора?
    Что такое порядок дивергенций: количество дивергенции в течение какого-то времени или их величина?

    Таким образом, в твоих рассуждениях нет конкретики. Мне не за что зацепиться, чтобы поддержать разговор.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 157
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 25.01.15 21:49. Заголовок: Под периодическими я..


    Под периодическими я принимаю «идеальную» синусоиду (ЗигЗаг) – одна амплитуда и один период.
    Под непериодическими я принимаю – пропорционально растет (уменьшается) амплитуда и
    аналогично пропорционально растет (уменьшается) период.

    Это все условно (давным-давно тебе я рисунки скидывал).

    Основная задача при построении ЗигЗага определить, по некоторому алгоритму, будет ли
    продолжение движения (заданной или расчетной величины) или нет.

    Сравнил, при прочих равных (по своему алгоритму оценку ЗигЗага), получилось,
    что при наличии дивергенции по OBV прогноз продолжения движения ЗигЗага хуже.

    Для качественного сравнения и не более, чуть изменил штатный OBV (выбор связан с отсутствием периода у OBV).
    Изменение минимально - в зависимости от цены Открытия просто количество тиков (на равновысоком баре) вверх это «+», вниз это «-»
    и на их разности построение графика OBV.

    На одном временном интервале, при одной величине равновысокого бара и одного и того же (Н) ЗигЗага количество рассогласований (дивергенция) уменьшилось в единицах количества случаев.

    Вот в последние дни (вплоть до сегодня) у меня не работает почтовый ящик на Ремблере.
    Что только не делал, бесполезно, пока не догадался залезть в интернет –
    «К сожалению, сервис Рамблер-Почта до сих пор остается недоступен из-за DDoS-атаки.
    Более того, это сильнейшая DDoS-атака в истории Рамблера…»

    Это я к чему.

    Я не уверен, что смогу сам сделать равнообъёмный индикатор и буду искать решение проблемы там, где ее нет по аналогии с Рамблер-Почта.

    Только видимо получается не равнообъёмный, а что-то типа равно кратный по обьему.

    Т.е. бар привязан (соответствует) к бару по цене, задана величина кол-во тиков , различие будет по цене закрытия бара.
    Например бар по цене 100 пунктов и в нем 40 или 60 или 120 тиков по «обьему».
    Задаем 50 тиков по «обьему».

    Если 40 на баре – цена открытия равна цене закрытия и эти 40 тиков «перенеслись» на следующий бар на котором как только добавится 10 тиков появиться «первая условная цена закрытия».
    Если 60 на баре – цена закрытия равно цене, когда набралось 50 тиков и 10 тиков переносится на следующий бар
    Если 120 на баре – цена закрытия равно цене, когда набралось 100 тиков («первая условная цена закрытия» - пропускается) т.е. цена закрытия на 2-х заданных 50 тиков.

    Задержка на один бар мне не принципиальна, но и не уверен, что это даст некий «плюс».
    Пока получается, что в частном моем случае, дивергенция это мне плохо.
    Плохо и что объяснить не умею.

    P.S. С графикой, как раньше получалось и мучиться не надо.



    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1146
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 26.01.15 22:36. Заголовок: Balbesik пишет: Под..


    Balbesik пишет:

     цитата:
    Под периодическими я принимаю «идеальную» синусоиду (ЗигЗаг) – одна амплитуда и один период.
    Под непериодическими я принимаю – пропорционально растет (уменьшается) амплитуда и
    аналогично пропорционально растет (уменьшается) период.

    Это все условно (давным-давно тебе я рисунки скидывал).


    Теперь понятно.

    Balbesik пишет:

     цитата:
    Основная задача при построении ЗигЗага определить, по некоторому алгоритму, будет ли
    продолжение движения (заданной или расчетной величины) или нет.


    С одной стороны - интересная задача, но с другой стороны, это эквивалентно задаче, решающей, будет ли продолжение движения цены или тренд уже выдохся. То есть задача неимоверно сложная. По-моему, ее никто еще не решил на уровне технического анализа (на уровне фундамента - решили инсайдеры ).

    Balbesik пишет:

     цитата:
    Для качественного сравнения и не более, чуть изменил штатный OBV (выбор связан с отсутствием периода у OBV).
    Изменение минимально - в зависимости от цены Открытия просто количество тиков (на равновысоком баре) вверх это «+», вниз это «-»
    и на их разности построение графика OBV.


    Также понятно. Тогда более правильный вариант индикатора будет такой - OBV_edit. По виду индикатор остается тот же, что и стандартный. Отличие - в значениях линии индикатора.

    Balbesik пишет:

     цитата:
    Только видимо получается не равнообъёмный, а что-то типа равно кратный по обьему.

    Т.е. бар привязан (соответствует) к бару по цене, задана величина кол-во тиков , различие будет по цене закрытия бара.
    Например бар по цене 100 пунктов и в нем 40 или 60 или 120 тиков по «обьему».
    Задаем 50 тиков по «обьему».

    Если 40 на баре – цена открытия равна цене закрытия и эти 40 тиков «перенеслись» на следующий бар на котором как только добавится 10 тиков появиться «первая условная цена закрытия».
    Если 60 на баре – цена закрытия равно цене, когда набралось 50 тиков и 10 тиков переносится на следующий бар
    Если 120 на баре – цена закрытия равно цене, когда набралось 100 тиков («первая условная цена закрытия» - пропускается) т.е. цена закрытия на 2-х заданных 50 тиков.


    А вот этот механизм не могу понять. Нужно будет копнуть глубже.




    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 158
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 27.01.15 03:33. Заголовок: Scriptong пишет: Та..


    Scriptong пишет:

     цитата:
    Также понятно. Тогда более правильный вариант индикатора будет такой - OBV_edit. По виду индикатор остается тот же, что и стандартный. Отличие - в значениях линии индикатора.



    Ну вот я «приехал»?
    Твой вариант (OBV_edit ) зелененькая линия - график,
    мой вариант голубенькая линия - график.
    Алгоритм, на первый взгляд тот же.
    Завтра буду разбираться.
    Ну не нравится мне, когда есть рассогласование.



    Scriptong пишет:

     цитата:
    С одной стороны - интересная задача, но с другой стороны, это эквивалентно задаче, решающей, будет ли продолжение движения цены или тренд уже выдохся. То есть задача неимоверно сложная. По-моему, ее никто еще не решил на уровне технического анализа (на уровне фундамента - решили инсайдеры ).



    Ага, особенно, когда отсутствуют корректные исходные данные!
    Как, в прочем, и в любом другом вопросе.

    Scriptong пишет:

     цитата:
    А вот этот механизм не могу понять. Нужно будет копнуть глубже.



    Да сам не знаю, но чисто интуитивно, мне кажется, должно быть интересно.
    Вроде все просто (хотя в программировании ничего не понимаю и могу ошибаться).
    Время на эту схему я бы потратил, если бы был уверен, что смогу сделать сам.


    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1151
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 27.01.15 22:15. Заголовок: Balbesik пишет: Ну ..


    Balbesik пишет:

     цитата:
    Ну вот я «приехал»?
    Твой вариант (OBV_edit ) зелененькая линия - график,
    мой вариант голубенькая линия - график.
    Алгоритм, на первый взгляд тот же.
    Завтра буду разбираться.


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

    Если обнуление не нужно (требуется накопление данных), то эти переменные лучше сделать отдельными индикаторными буферами.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 159
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 09.02.15 20:10. Заголовок: Привет, Игорь! По в..


    Привет, Игорь!

    По возможности (время , да и сайт или мои комп перестали "збоить", кстати на "Глобальной авантюре" такая же ерунда)
    посмотрел.
    Вопрос, конечно, интересный.
    Значимость объявления переменных выходит на "первое" место?
    Не думал, считал разница только в расчете на баре или тике.
    Чисто имперически (ручками) нет пока выводов, но интересно.
    Потом напишу.

    Сейчас вопрос - "Узлы высоких и низких объемов (HVN и LVN) "-
    почитал, т.к. понятие объем на форексе мне не понятен и все, что я видел это некие графики,
    но полностью "самостоятельные" (висят в воздухе) - некоим образом не связанные с ценой.
    Если считать, что "объем" это характеристика некой АКТИВНОСТИ, то есть ли индикаторы связывающие
    тики с ценой - уйти от "воздуха".
    Наиболее близко тут волатильность (это по логике).
    Я конечно на ОBV попробую (зто в рамках моего пожелания связать равнообъемные с равновысокими),
    но вдруг что-то есть подобное?


    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1184
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 09.02.15 22:31. Заголовок: Balbesik пишет: Зна..


    Balbesik пишет:

     цитата:
    Значимость объявления переменных выходит на "первое" место?


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

    Balbesik пишет:

     цитата:
    Я конечно на ОBV попробую (зто в рамках моего пожелания связать равнообъемные с равновысокими),


    Пока, по моим представлениям, это такие характеристики, которые практически невозможно связать воедино (как не спаривай петуха с уткой - яиц от них все равно не получишь). Хотя могу и ошибаться...

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 160
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 10.02.15 18:55. Заголовок: Scriptong пишет: По..


    Scriptong пишет:

     цитата:
    Пока, по моим представлениям, это такие характеристики, которые практически невозможно связать воедино
    (как не спаривай петуха с уткой - яиц от них все равно не получишь). Хотя могу и ошибаться...



    Игорь!

    Прекрасно понимаю.
    На первом этапе по OBV (уже), по аналогии с фондовой, "убрали" адресные (встречные) сделки.
    А если "в осях" получиться, то представляю каково тебе фактически сделать кластерный анализ на баре (по тикам).
    Думаю это "головняк".
    Но пока об этом речь не идет, буду пробовать, посмотрим.

    P.S.
    Кстати, раз я к OBV обращаюсь через Икустом, подозреваю, что в этом случае
    "не видны" (все) равновысокие бары.
    В общем тут вопросов масса, но игнорировать всю доступную информацию видимо не верно.
    Т.е. цену, в данном случае, я рассматриваю как производная активности и
    хотелось бы разобраться.

    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1190
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 10.02.15 23:42. Заголовок: Чтобы я смог хоть ка..


    Чтобы я смог хоть как-то помочь в этом процессе, необходима минимальная зацепка - в каком направлении копать. Пока одной лишь идеи - совместить равновысокие с эквиобъемными - мало, нужна какая-то "технология".

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 161
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 14.02.15 01:10. Заголовок: Scriptong пишет: Чт..


    Scriptong пишет:

     цитата:
    Чтобы я смог хоть как-то помочь в этом процессе, необходима минимальная зацепка - в каком направлении копать. Пока одной лишь идеи - совместить равновысокие с эквиобъемными - мало, нужна какая-то "технология".



    Добрый вечер, Игорь!

    Пока коротко.

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

    Ну как и планировал, что-то «в осях» попробовал, что-то пока ясности нет.
    Видимо время надо или твоя помощь.

    Рис – Бар_41 ZZ_ Н_410 и Бар_41 ZZ_ Н_1100 – просто изменение размаха ZZ –
    ну это было, это я к тому, что надо быть осторожным к принятию результатов.




    Зацепка тут простая – «нормирование» графика, по аналогии с равновысокими
    (ну тут опять сложно, т.к. объяснить, что я подразумеваю не хватает образования).

    За основу взял твой индикатор ZZ, который мы принимали за базовый в работе и
    добавил через iCustom – OBV.

    Исходил (по аналогии с равновысокими), что на форексе 1 пункт равен 1 «объёма» -
    активности и рассматриваю, как дополнительный фильтр.

    Рис – EURUSDM1



    Соответственно, если равновысокие позволяют, с определенными допущениями,
    использовать значения по осям Х и У в одной размерности, то и
    в случае оценки активности правомерно связать (для равновысоких) ее с ценой.

    Расхождение в ходе цены (волатильности) и расчетном ходе цены по активности.

    Картинки –

    Бар = 41 пункт.
    Рис – Бар_41 ZZ_ Н_410 штатн OBV_Дивер – штатный OBV и дивергенция.
    Рис – Бар_41 ZZ_ Н_410 нормир OBV_Дивер – OBV «нормирование» через расчетную цену и дивергенция.
    Контрольный без OBV – выше (Бар_41 ZZ_ Н_410).




    Бар = 89 пункт.
    Рис – Бар_89 ZZ_ Н_890 штатн OBV_Дивер – штатный OBV и дивергенция.
    Рис – Бар_89 ZZ_ Н_890 нормир OBV_Дивер – OBV «нормирование» через расчетную цену и дивергенция.
    Рис – Бар_89 ZZ_ Н_890 без OBV – контрольный без OBV.





    Т.е. делал условно при «прочих равных».
    Прилагаю «OBV_равновысоких» – там по формуле просто
    (кстати получилось без разнице, где объявлять переменные – Рис – EURUSDM1)



    , а вот с точки зрения тикового графика в связке с равновысокими барами я сделать не смогу,
    а было бы интересно делать расчет – расчетной разности на каждом заданном шаге (количестве тиков).


    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1195
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 16.02.15 21:53. Заголовок: Balbesik пишет: Исх..


    Balbesik пишет:

     цитата:
    Исходил (по аналогии с равновысокими), что на форексе 1 пункт равен 1 «объёма» -


    Зачем же делать такие вот допущения, когда инструмент измерения объемов у нас практически под рукой: тиковые объемы? Да, это, конечно же, не реальные объемы, но предположение о том, что тик - это единица объема гораздо ближе к истине, чем измерение объема пунктами.

    Balbesik пишет:

     цитата:
    (кстати получилось без разнице, где объявлять переменные – Рис – EURUSDM1)


    Разница есть - она накопится при длительной работе индикатора в онлайн. И все равно оба подхода к объявлению переменных неверны. Либо эти переменные должны очищаться перед расчетами на очередном баре, либо их значения должны адекватно подхватываться при каждом входе в start. Это достаточно сложная процедура.

    В таких случаях, чтобы не морочиться, делаю так:
    1. Делаю нужные переменные статическими.
    2. Сохраняю их значения для бара с индексом 1.
    3. Если индикатор обновил данные для большего количество баров, чем 1 (nLimit > 1), то происходит обнуление статических переменных и полный перерасчет значений индикатора для всех баров.
    4. Если индикатор обновил данные только для одного или двух баров (nLimit == 0 или nLimit == 1), то значения статических переменных как раз и подхватываются.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 162
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 14.02.15 01:18. Заголовок: P.S. Индикатор «OBV_..


    P.S.
    Индикатор «OBV_равновысоких»

    http://dropmefiles.com/AaL1M


    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 163
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 14.02.15 01:44. Заголовок: P.S. Индикатор «OBV_..


    P.S.
    Индикатор «OBV_равновысоких»
    OBV_равновысоких

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 164
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 15.02.15 14:11. Заголовок: Добрый день! Вот, ч..


    Добрый день!

    Вот, что еще посмотрел.

    Сразу вопрос –
    А как сравнивать (оценивать) разные подходы?

    Изменения сделал исходя, что цена на баре делает три движения –
    Опен – Хинг – Лоу или Опен – Лоу – Хинг , соответственно отсюда и
    изменения для учета активности.

    Как-то так –

    for(i=nLimit; i>=0; i--)
    {
    // H1 = 41 - высота равновысокого бара в пунктах

    if (iClose(NULL,PERIOD_CURRENT,i) == iHigh(NULL,PERIOD_CURRENT,i))
    barHeight = ((iOpen(NULL,PERIOD_CURRENT,i) - iLow(NULL,PERIOD_CURRENT,i)) * 2) + (iHigh(NULL,PERIOD_CURRENT,i) - iOpen(NULL,PERIOD_CURRENT,i));

    if(iClose(NULL,PERIOD_CURRENT,i) == iLow(NULL,PERIOD_CURRENT,i))
    barHeight = (iOpen(NULL,PERIOD_CURRENT,i) - iLow(NULL,PERIOD_CURRENT,i)) + ((iHigh(NULL,PERIOD_CURRENT,i) - iOpen(NULL,PERIOD_CURRENT,i)) * 2);

    if(barHeight != 0)
    {
    ProcClosOH = NormalizeDouble(MathAbs(iHigh(NULL,PERIOD_CURRENT,i) - iOpen(NULL,PERIOD_CURRENT,i)) / barHeight, 5);
    ProcClosOL = NormalizeDouble(MathAbs(iLow(NULL,PERIOD_CURRENT,i) - iOpen(NULL,PERIOD_CURRENT,i)) / barHeight, 5);
    }


    if (iClose(NULL,PERIOD_CURRENT,i) == iHigh(NULL,PERIOD_CURRENT,i))
    {
    DeltaVol_H = (iVolume(NULL,PERIOD_CURRENT,i) * ProcClosOH);
    DeltaVol_L = iVolume(NULL,PERIOD_CURRENT,i) - DeltaVol_H;
    }

    if(iClose(NULL,PERIOD_CURRENT,i) == iLow(NULL,PERIOD_CURRENT,i))
    {
    DeltaVol_L = (iVolume(NULL,PERIOD_CURRENT,i) * ProcClosOL);
    DeltaVol_H = iVolume(NULL,PERIOD_CURRENT,i) - DeltaVol_L;
    }

    RasVol_H = MathAbs( iClose(NULL,PERIOD_CURRENT,i) - iOpen(NULL,PERIOD_CURRENT,i) ) * 100000;

    RasVol_L = MathAbs( iClose(NULL,PERIOD_CURRENT,i) - iOpen(NULL,PERIOD_CURRENT,i) ) * 100000;


    DeltaV_H = NormalizeDouble( MathAbs(DeltaVol_H - RasVol_H) ,5);

    DeltaV_L = NormalizeDouble( MathAbs(DeltaVol_L - RasVol_L) ,5);


    if(i == iBars(NULL,PERIOD_CURRENT) - 1)
    ExtOBVBuffer = NormalizeDouble( (DeltaV_H + DeltaV_L)/2 ,0);

    else
    {

    if (iClose(NULL,PERIOD_CURRENT,i) == iOpen(NULL,PERIOD_CURRENT,i) || iVolume(NULL,PERIOD_CURRENT,i) == 0)
    ExtOBVBuffer = ExtOBVBuffer[i+1];
    else
    { // i < i+1
    if(iClose(NULL,PERIOD_CURRENT,i) < iOpen(NULL,PERIOD_CURRENT,i))

    ExtOBVBuffer = ExtOBVBuffer[i+1] - MathAbs(DeltaV_L);
    else
    ExtOBVBuffer = ExtOBVBuffer[i+1] + MathAbs(DeltaV_H);
    }
    }
    Рис – Штатн_оптим_13_1 – оптимизация со штатным OBV
    Рис – Нормир_оптим_13_1– оптимизация с корректированном OBV




    Рис – Штатн__форвар_1_8 – форвард-участок со штатным OBV
    Рис – Нормир __форвар_1_8 – форвард-участок со корректированном OBV




    Рис – Штатн_оптим_1_8 – оптимизация форвард-участока со штатным OBV
    Рис – Нормир_оптим_1_8 – оптимизация форвард-участока с корректированном OBV




    Рис – Штатн__форвар_8_15 – следующий форвард-участок со штатным OBV
    Рис – Нормир __форвар_8_15 – следующий форвард-участок со корректированном OBV




    Выводы –
    - нет корректного сравнения (критерий сравнения не ясен).
    - не доделан алгоритм (время).
    - нет инструмента для работы (индикатора по тикам - для «нормирования»).




    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1196
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 16.02.15 21:59. Заголовок: Balbesik пишет: Сра..


    Balbesik пишет:

     цитата:
    Сразу вопрос –
    А как сравнивать (оценивать) разные подходы?


    Универсального способа нет. Поэтому нужно рассматривать каждый конкретный случай. К примеру, в данном случае я пока не понял, о каких именно подходах идет речь.

    Balbesik пишет:

     цитата:
    Выводы –
    - нет инструмента для работы (индикатора по тикам - для «нормирования»).


    Тиковые данные есть здесь. На их основе строится тиковый график (TicksCollector с отключенной функцией сбора тиков и формированием эквиобъемного графика единичного объема).

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 165
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 17.02.15 16:28. Заголовок: Привет, Игорь! «…Уни..


    Привет, Игорь!

    «…Универсального способа нет. Поэтому нужно рассматривать каждый конкретный случай. К примеру, в данном случае я пока не понял, о каких именно подходах идет речь…»

    Речь, согласно алгоритма, не о подходах, а о существующем алгоритме (штатном).
    Да ты прав, сложно сравнить.
    Пошел путем сравнения по параметрам оптимизации –
    Порядка на 3 «шире» диапазон значений оптимизации при «коррекции» в отличии от «штатного» .
    А в рамках «советника» (приложение, как ФИЛЬТР) тем более – но надо время.

    «Тиковые данные есть здесь. На их основе строится тиковый график (TicksCollector с отключенной функцией сбора тиков и формированием эквиобъемного графика единичного объема).»

    Вопрос не в этом (мы с тобой, на мой взгляд, первые начали обсуждать эту разработку, т.е. я знаю о чем речь), естественно с этой разработкой я знаком (но она мне ничего не дает) - она не связана (разорвана, как единая система - те же гуси со свиньями).

    Но, как база, вполне вещь.

    «Чтобы я смог хоть как-то помочь в этом процессе, необходима минимальная зацепка - в каком направлении копать. Пока одной лишь идеи - совместить равновысокие с эквиобъемными - мало, нужна какая-то "технология".»

    Возможно, я перепишу твою «базу» под свою задачу, но не уверен, что смогу это сделать ПРАВИЛЬНО.
    Пока вопрос открытый, на первый взгляд изменения не значимы, но в рамках «приложения к «готовой» системе», ой как значимо.

    А требовалось всего лишь к заданному равновысокому бару привязать равнообьемный по кратности, с фиксацией цены (создается впечатление, что иногда «под настроение» ты читаешь между строк, хотя в принципе, как и я).


    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1204
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 17.02.15 21:34. Заголовок: Balbesik пишет: Воз..


    Balbesik пишет:

     цитата:
    Возможно, я перепишу твою «базу» под свою задачу, но не уверен, что смогу это сделать ПРАВИЛЬНО.


    Предлагаю следующее. Опиши необходимые изменения как можно подробнее. Так, чтобы я смог понять, что нужно (или я сам задам наводящие вопросы в процессе). После этого вполне возможно, что я сам внесу необходимые изменения. Тема тиковых объемов давно не развивалась, продолжение просится.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 166
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 20.02.15 17:42. Заголовок: Scriptong пишет: ....


    Scriptong пишет:

     цитата:
    ... Опиши необходимые изменения как можно подробнее. Так, чтобы я смог понять, что нужно (или я сам задам наводящие вопросы в процессе).
    После этого вполне возможно, что я сам внесу необходимые изменения...



    Добрый вечер, Игорь!

    Прежде всего здесь, видимо, вопрос как бы разбивается на два –
    ИНСТРУМЕНТ (как дополнение к TicksCollector) и ИНДИКАТОР.

    При этом совпадающие задачи и там, и там –

    – Согласовать тиковый объем (активность) конкретного равновысокого бара с «неким» конкретным (совпадающему с равновысоким) баром АКТИВНОСТИ.
    Т.е. в данный момент равнообъемный бар привязан к некоему (1 минута) ВРЕМЕННОМУ графику,
    а при этом, если брать равновысокий бар (т.к. он «не имеет» времени как такового), то последний существует как бы сам по себе.

    – Определить точку отсчета, тут могут быть варианты, на мой взгляд –
    удобней – iOpen(NULL,PERIOD_CURRENT,i).
    Тики выше Open – суммируются с «+», ниже Open суммируются с «-» и определяется количество тиков выше и ниже Open.

    – Желательно, для равнообъемного где-то знать цену, т.е. например –
    100 тиков – Close_1=… , 200 тиков – Close_2=… , 300 тиков – Close_3=… и т.д.

    Т.е. ИНСТРУМЕНТ с возможностью получения максимума информации и
    применить другую схему алгоритма (например -
    построения нескольких равнообъемных значений на одном баре )
    для использования в работе.

    Ну это если рассматривать ИНСТРУМЕНТ.

    А как ИНДИКАТОР (калькулятор), то тут конечно вариантов масса.

    Возможно рассматривать, как равнообъемный, но хотелось бы обязательно в рамках одного бара или
    наращивать по высоте, или вверх-вниз разных цветов на одном баре и
    соответственно остаток переносится без знака (со знаком надо смотреть – не знаю) на следующий бар.
    Может быть как РСИ или как равновысокие, или варианты OBV – на Рис. «накидал» и т.д. ( вариантов масса).

    Рис. –



    Я рассматриваю, как оценка рассогласования (дисбаланс) количества тиков между
    Open – High и Open – Low на одном баре.


    barHeight = iHigh(NULL,PERIOD_CURRENT,i) - iLow(NULL,PERIOD_CURRENT,i);

    if(barHeight != 0)
    {
    ProcClosOH = NormalizeDouble(MathAbs(iHigh(NULL,PERIOD_CURRENT,i) - iOpen(NULL,PERIOD_CURRENT,i)) / barHeight, 5);
    ProcClosOL = NormalizeDouble(MathAbs(iLow(NULL,PERIOD_CURRENT,i) - iOpen(NULL,PERIOD_CURRENT,i)) / barHeight, 5);
    }

    if (iClose(NULL,PERIOD_CURRENT,i) == iHigh(NULL,PERIOD_CURRENT,i) && ProcClosOH != 0)
    {
    DeltaVol_H = iVolume(NULL,PERIOD_CURRENT,i) * ProcClosOH;
    DeltaVol_L = iVolume(NULL,PERIOD_CURRENT,i) - DeltaVol_H;
    }

    if(iClose(NULL,PERIOD_CURRENT,i) == iLow(NULL,PERIOD_CURRENT,i) && ProcClosOL != 0)
    {
    DeltaVol_L = iVolume(NULL,PERIOD_CURRENT,i) * ProcClosOL;
    DeltaVol_H = iVolume(NULL,PERIOD_CURRENT,i) - DeltaVol_L;
    }

    if (iClose(NULL,PERIOD_CURRENT,i) == iHigh(NULL,PERIOD_CURRENT,i) && iVolume(NULL,PERIOD_CURRENT,i) != 0)
    DeltaV1 = (DeltaVol_H - DeltaVol_L) / iVolume(NULL,PERIOD_CURRENT,i); // знак значим
    else
    DeltaV1 = (DeltaVol_L - DeltaVol_H) / iVolume(NULL,PERIOD_CURRENT,i); // знак значим

    Соответственно буфер (отличие от штатного OBV) –

    ExtOBVBuffer = - DeltaV1;
    else
    ExtOBVBuffer = + DeltaV1;

    Выбор данной схемы (подхода) обусловлен – как «вписалась» АКТИВНОСТЬ в готовую систему в качестве дополнительного фильтра.

    Сравнение с ЗигЗагом и штатным OBV после оптимизации по форвард участкам –

    ЗигЗаг –



    OBV –



    Дисбаланс (дивергенция не используется) –






    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 167
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 20.02.15 20:35. Заголовок: Решил добавить («…я ..


    Решил добавить («…я сам внесу необходимые изменения…»),
    т.к. я ранее писал, что у меня «предубеждение» к дивергенции.

    Выше выложенный форвард участок с «Дисбаланс» был без дивергенции.

    Ниже по дивергенции, но добавлен в твоем индикаторе ЗигЗага маленький фильтр –

    При g_sell[index] идет High[index] != Close[index] и
    для g_buy[index] соответственно Low[index] != Close[index]

    а вот в самом индикаторе по "объему" –

    if (
    iClose(NULL,PERIOD_CURRENT,i) == iHigh(NULL,PERIOD_CURRENT,i) && iVolume(NULL,PERIOD_CURRENT,i) != 0
    &&
    iClose(NULL,PERIOD_CURRENT,i+1) == iHigh(NULL,PERIOD_CURRENT,i+1) && iVolume(NULL,PERIOD_CURRENT,i+1) != 0
    &&
    iClose(NULL,PERIOD_CURRENT,i+2) == iHigh(NULL,PERIOD_CURRENT,i+2) && iVolume(NULL,PERIOD_CURRENT,i+2) != 0
    )
    DeltaV1 = (DeltaVol_H_0 + DeltaVol_H_1 + DeltaVol_H_2 - DeltaVol_L_0 - DeltaVol_L_1 - DeltaVol_L_2)
    /
    (iVolume(NULL,PERIOD_CURRENT,i) + iVolume(NULL,PERIOD_CURRENT,i+1) + iVolume(NULL,PERIOD_CURRENT,i+2));
    else
    DeltaV1 = (DeltaVol_L_0 + DeltaVol_L_1 + DeltaVol_L_2 - DeltaVol_H_0 - DeltaVol_H_1 - DeltaVol_H_2)
    /
    (iVolume(NULL,PERIOD_CURRENT,i) + iVolume(NULL,PERIOD_CURRENT,i+1) + iVolume(NULL,PERIOD_CURRENT,i+2));

    Расчет идет по 3 барам.
    Из посыла, что экстремум формируется из минимум 3 баров.

    Возможно, что-то даст (но это уже не при «прочих равных») .

    Рис. Форвард участок «Дисбаланс» по дивергенции.




    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 168
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 20.02.15 23:23. Заголовок: Совсем забыл - Штат..


    Совсем забыл -

    Штатный OBV по дивергенции на том же форвард участке.



    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 169
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 22.02.15 12:05. Заголовок: Игорь, привет! Увид..


    Игорь, привет!

    Увидел тебя на форуме.
    Если примешь решение по "калькулятору",
    то (просто общее для сравнения)
    MathAbs(DeltaVol_H - DeltaVol_L) / iVolume(NULL,PERIOD_CURRENT,i);
    по схеме
    5-Typical-(H+L+C)/3
    или
    6-Weighted-(H+L+2*C)/4
    все "сложиться".
    Кстати с наступающим.

    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1218
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 22.02.15 12:29. Заголовок: Добрый день. Пока и..


    Добрый день.

    Пока из всего описанного за 21 - 22.02.2015 понял лишь одно - есть необходимость измерения количества тиков на баре отдельно: выше цены открытия и ниже цены открытия. Для этого потребуется разработать индикатор по типу BearBullBalance. В принципе, идея интересная. Стоит посмотреть, что покажет этот индикатор.
    Если такое начало устраивает, то принимаются идеи насчет внешнего вида индикатора. Самый простой вариант - оставить вид от BearBullBalance. Но возможны варианты.

    По поводу совмещения равновысоких с эквиобъемными все равно не понимаю, как-то сумбурно описана идея.

    P. S. Пожалуйста, не выкладывай результаты тестирования. Они не только ничего никому из форумчан не говорят, но даже мне. Хотя и понимаю, на основе какого советника все это строится. Это просто замусоривание форума.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 170
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 22.02.15 14:10. Заголовок: Scriptong пишет: До..


    Scriptong пишет:

     цитата:
    Добрый день.

    Пока из всего описанного за 21 - 22.02.2015 понял лишь одно - есть необходимость измерения количества тиков на баре отдельно: выше цены открытия и ниже цены открытия. Для этого потребуется разработать индикатор по типу BearBullBalance. В принципе, идея интересная. Стоит посмотреть, что покажет этот индикатор.
    Если такое начало устраивает, то принимаются идеи насчет внешнего вида индикатора. Самый простой вариант - оставить вид от BearBullBalance. Но возможны варианты.

    По поводу совмещения равновысоких с эквиобъемными все равно не понимаю, как-то сумбурно описана идея.

    P. S. Пожалуйста, не выкладывай результаты тестирования. Они не только ничего никому из форумчан не говорят, но даже мне. Хотя и понимаю, на основе какого советника все это строится. Это просто замусоривание форума.



    «Кто празднику рад, то заранее пьян» - как-то так.

    1. «…выше цены открытия и ниже цены открытия…» именно так и более мне не надо – вид любой все равно под себя переделывать..
    2. «…поводу совмещения равновысоких с эквиобъемными…» ну это просто на усмотрение, иначе «кто в лес, кто по дрова» - не понимаю,
    я вообще не понимаю зачем делать не связанные друг с другом разработки при связанных параметрах.
    3. Иначе не представлял, как объяснять – «не выкладывай результаты тестирования» - то идея «с потолка» не принимается, то идея на основании результатов не подходит (вообще-то, видимо ты прав, зря время тратил – "от нечего делать"), как обосновывать не понятно - "инструкцию в студию"(возможно пригодится).

    Плоские у меня шутки!


    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 171
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 23.02.15 08:59. Заголовок: Всех с праздником! ..


    Всех с праздником!

    Желаю здоровья и спокойствия.

    Хоть голова и «болит», но еще раз посмотрел ответ.

    Делаешь инструмент, тогда выше выложенное не надо.

    Scriptong пишет:

     цитата:
    «…есть необходимость измерения количества тиков на баре отдельно: выше цены открытия и ниже цены открытия…»



    Главное, возможно это подразумевается, это привязать к равновысокими барами, внешний вид не важен.
    Если это возможно, то это то, что меня интересует, ну и связать с ценой Открытия.

    Например BearBullBalance с равновысокими не работает (считает «настроение бабушки»,
    т.к. привязан по ВРЕМЕНИ, а в равновысоких "времени нет" - я об этом писал).

    P.S.

    Scriptong пишет:

     цитата:
    «…на основе какого советника все это строится…»



    Твой советник, твой индикатор и штатный OBV - и гадать не надо.



    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1220
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 23.02.15 20:05. Заголовок: Balbesik пишет: Гла..


    Balbesik пишет:

     цитата:
    Главное, возможно это подразумевается, это привязать к равновысокими барами, внешний вид не важен.


    ОК. Со временем сделаю.

    Balbesik пишет:

     цитата:
    Например BearBullBalance с равновысокими не работает (считает «настроение бабушки»,
    т.к. привязан по ВРЕМЕНИ, а в равновысоких "времени нет" - я об этом писал).


    Действительно, эти индикаторы не работают на графиках, у которых бары не привязаны к конкретному шагу времени. Исправлено.

    Balbesik пишет:

     цитата:
    Твой советник, твой индикатор и штатный OBV - и гадать не надо.


    В том то и дело, что мне это ясно. Другим то это неясно. У них нет этого советника и индикатора. Поэтому они тем более "не в теме".

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 172
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 24.02.15 10:09. Заголовок: Scriptong пишет: ОК..


    Scriptong пишет:

     цитата:
    ОК. Со временем сделаю.



    Спасибо!
    Здорово.

    Scriptong пишет:

     цитата:
    Исправлено.



    Мне не помогло.
    Первый бар перерисовывается и фиксируется, как становится вторым.
    С нулевого бара весь объем сбрасывается на первый, т.е. как бы задержка (сдвиг) на один бар.
    Но это уже хорошо, т.к. появляется система (а возможно так и должно быть).
    Возможно связано, что я использую Синбар.
    Разбираться буду с будущим индикатором по цене Открытия (понятно, что делать).
    Спасибо.

    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1225
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 24.02.15 19:00. Заголовок: Balbesik пишет: Мне..


    Balbesik пишет:

     цитата:
    Мне не помогло.
    Первый бар перерисовывается и фиксируется, как становится вторым.
    С нулевого бара весь объем сбрасывается на первый, т.е. как бы задержка (сдвиг) на один бар.
    Но это уже хорошо, т.к. появляется система (а возможно так и должно быть).
    Возможно связано, что я использую Синбар.


    Да, график равновысоких свечей нужно формировать при помощи TicksCollector.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 174
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 25.02.15 15:58. Заголовок: Scriptong пишет: Да..


    Scriptong пишет:

     цитата:
    Да, график равновысоких свечей нужно формировать при помощи TicksCollector.



    Да, кажется работает.
    Как инструмент, с допуском на качественный анализ - вещь.
    Но так не должно быть, почему с Синбаром не работает, потом разберусь.
    Меня беспокоит ПАМЯТЬ (тоже потом).
    Жду по Открытию и "кратности" (выше описывал) - "кратность" на истории "сгладит",
    по аналогии с логарифмом (сглаживающая мат. функция) и
    картинка может быть интересна (но, это Игорь, на твое усмотрение).
    Мне достаточно - Открытия.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 176
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 25.02.15 16:33. Заголовок: Еше посмотрел - "..


    Еше посмотрел - "+" (не знаю как ставить).
    Прелесть, что система работает согласованно.

    P.S.
    "Спасибо" нажимаю - "ноль реакции".

    Спасибо: 0 
    Профиль
    Anatoliy



    Сообщение: 31
    Зарегистрирован: 13.07.14
    Репутация: 0
    ссылка на сообщение  Отправлено: 28.02.15 21:23. Заголовок: Добрый суток, Игорь ..


    Добрый суток, Игорь и всем.

    Вот пишу индикатор на MQL4, будущим перенести в MQL5 или наоборот, но оказалось не так просто. В MQL4 один стандарт, а в MQL5 другой стандарт, т.е. непереносимый код. Для того чтобы проделать работу не копировать код потом вставит или переписать код, а переделать на другой стандарт, но это не комфортно и глупо.

    Существует такой вариант переносимый код для MQL4 и MQL5?

    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1240
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 01.03.15 12:24. Заголовок: Добрый день, Anatoli..


    Добрый день, Anatoliy.

    Anatoliy пишет:

     цитата:
    Существует такой вариант переносимый код для MQL4 и MQL5?


    Универсального способа не существует. Но можно облегчить перенос кода с MQL4 на MQL5 и обратно, выполняя код в стиле обновленного MQL4. Если действовать подобным образом, то код индикатора, написанного на MQL4, можно будет использовать в МТ5 с минимальными исправлениями.
    С советниками дело обстоит сложнее, т. к. логика работы с ордерами и позициями в платформах отличается кардинально.


    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 181
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 03.03.15 12:28. Заголовок: «Ой ли? :sm67: » Т..


    «Ой ли? »

    Тогда дополнительно попытаюсь изложить свой взгляд,
    почему цена Открытия.

    Ну кроме положительной практики, а здесь основную роль играет цена по которой идет расчет (функция GetAppliedPrice – это я пропустил).

    На мой взгляд в индикаторе BearBullBalance при построении отсутствует точка отсчета (база),
    т.е. построение на каждом баре происходит, как бы в «воздухе» (без привязки к соседям).

    «…Она отображает количество изменений цены (тиков), пришедшее за единицу времени, а не размер реально заключенных сделок…»

    Т.е. да тут нет объема в денежном выражении, но может быть количество заключенных сделок и
    возможна фильтрация (каждый дилинг индивидуально – что плохо, но это мы не знаем, хотя есть основания так думать),
    т.к. на картинке (график цены) – «Отправлено: 14.02.15 01:10. Заголовок: Scriptong пишет: Чт..» на первый взгляд
    есть соответствие количеству изменения цены, но на Синбаре часто встречается несоответствие (сам индикатор может быть некорректен),
    так как на TicksCollector этого не наблюдаем – принимаем количество изменений цены .

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

    Пусть цена Открытия в качестве базы может быть не корректна, но хоть, что-то.

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

    Поэтому просто активность выше – ниже цены Открытия (не важно, куда идет цена вверх или вниз), на мой взгляд, более значима.
    Как-то так.
    Хотя могу ошибаться.


    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1250
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 03.03.15 18:52. Заголовок: Balbesik пишет: На ..


    Balbesik пишет:

     цитата:
    На мой взгляд в индикаторе BearBullBalance при построении отсутствует точка отсчета (база),
    т.е. построение на каждом баре происходит, как бы в «воздухе» (без привязки к соседям).


    Привязка производится ко времени открытия бара. Как только открылся новый бар, то происходит обнуление счетчика тиков быков и медведей. Это же очевидно.

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

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 182
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 03.03.15 19:13. Заголовок: Scriptong пишет: Пр..


    Scriptong пишет:

     цитата:
    Привязка производится ко времени открытия бара. Как только открылся новый бар, то происходит обнуление счетчика тиков быков и медведей. Это же очевидно.



    Это понятно.
    Не смог объяснить.

    Scriptong пишет:

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



    Вот связка, через цену Открытия и получается.



    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1255
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 03.03.15 19:35. Заголовок: Balbesik пишет: Вот..


    Balbesik пишет:

     цитата:
    Вот связка, через цену Открытия и получается.


    Это, как бы, само собой.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 183
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 07.03.15 14:28. Заголовок: Добрый день, Игорь! ..


    Добрый день, Игорь!

    Scriptong пишет:

     цитата:
    К быкам будут относиться тики с ценой bid выше цены открытия, а к медведям - ниже цены открытия. Тики, равные цене открытия свечи, в учет не пойдут.



    Кажется все сделал – оказалось очень просто.
    Т.к привязка к цене (сравнение по цене) с учетом спреда (разници Бид Аск), переделка в твоем индикаторе,
    приводила в «реале» к «перерисовки» графика – не мог понять проблему –
    оказалось всего лишь необходима нормализация.

    Тебе, Игорь, наверное минут 5 надо было на переделку.

    Что получилось – посмотрю – нужна история (буду собирать на другом компе – «песня та жа» - ПАМЯТЬ ).

    Все равно твой вариант интересен и буду ждать.

    Ну и наверное самое сложное – старинный вопрос – как «скинуть» ПАМЯТЬ.

    Появилось ли что-либо а этом плане?

    Насколько я понял, это не проблема компов, а проблема самого терминала имеющего 32 разряда и
    терминал просто долго не позволяет использовать «тики», оптимизацию советника в «реале» и т.д.,
    кроме этого разработчики МТ5 сами дают ограничения на фондовке до 2000 (или 5000 – не помню, на день только).

    Соответственно, если на долгосрок, то про тики, оптимизацию и т.д. (без перезагрузки) можно забыть,
    как обращал внимание Genry "ручками оно надежней" (шутка).

    Наработок много по тикам, оптимизации советников и т.д.,
    все равно вопрос рано или поздно возникнет.

    Появляются же в Кодебазе скрипты –
    – для быстрого удаления индикатора из окна текущего графика
    – для переинициализации всех индикаторов
    – для быстрого доступа к свойствам индикатора
    – для автоматизации процедуры переинициализации индикатора
    – после перключения таймфрейма или символа скрипт будет запускать повтороно автоматически....

    Что-то типа скрипта, что бы «снял» с графика индикатор, советник («скинул» память) и
    опять поставил туда же сохраняя установки.

    Скажи, Игорь, что – либо в этом плане.



    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1285
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 07.03.15 23:00. Заголовок: Смотри сюда...


    Смотри сюда.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 184
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 08.03.15 17:03. Заголовок: Во первых женщин с п..


    Во первых женщин с праздником!
    Во вторых они являются продолжателями рода и против только дурак скажет.
    Когда они много говорят это только плюс - они детей учат (инстинкт однако).
    Успеха им и счастья!

    По работе - Да!
    Сравнил (у меня без спреда решалась – без проблем, решение на нормировки NormalizeDouble(MarketInfo(Symbol(), MODE_SPREAD) * Point, 5),
    что-то дало (перерисовка исчезла), а это бред, возможно спред на тик быть не должен - это не важно).

    Игорь, интересно, а у тебя тоже спреда нет (он может быть?, а то как-то у меня "криво" получилось в сравнении)

    Никогда не считал, что без профи в программировании можно, что-то сделать.
    Ты задачу решил!

    P.S.
    Хотя интересно, что такое «тик» и в этом плане связка с некими значениями,
    как Бид, Аск, спреды на Тике и нужна ли связка?

    Прсто Игорь, если биржа отображает экономику, то, с точки зрения любой системы - нельзя делать "жесткий "0"" (система всегда разнесена - иначе невозможно создать корректирующий контур - пойдут автоколебания и "разнос").
    Поэтому "попытался включить "спред".





    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 185
    Зарегистрирован: 13.03.13
    Репутация: 0
    ссылка на сообщение  Отправлено: 08.03.15 17:47. Заголовок: И еще - вот если под..




    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1290
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 09.03.15 13:48. Заголовок: Balbesik пишет: Сра..


    Balbesik пишет:

     цитата:
    Сравнил (у меня без спреда решалась – без проблем, решение на нормировки NormalizeDouble(MarketInfo(Symbol(), MODE_SPREAD) * Point, 5),
    что-то дало (перерисовка исчезла), а это бред, возможно спред на тик быть не должен - это не важно).


    Евгений, в который раз прошу тебя: излагай мысли максимально ясно, не мешай все в кучу. Вот, к примеру, о сравнении каких программ ты сейчас пишешь? Ведь нет ничего сложного в том, чтобы дописать: "по поводу сравнения программ такой-то и такой-то".

    Balbesik пишет:

     цитата:
    Хотя интересно, что такое «тик» и в этом плане связка с некими значениями,
    как Бид, Аск, спреды на Тике и нужна ли связка?


    Тик - это поступление двусторонней котировки (Bid и Ask). По сравнению с предыдущей она может:
      1. Не отличаться от предыдущей ни по цене Bid, ни по цене Ask. Это значит, что изменился объем по заявкам, представляющим текущие цены. В МТ4 мы это установить не можем - нет данных по реальным объемам.
      2. Отличаться по цене Bid. Ask - такой же.
      3. Отличаться по цене Ask. Bid - такой же.
      4. Отличаться по обеим ценам.


    Если мы сейчас говорим об индикаторе BerBullBalance_OpenZero, то спред учитывать не нужно. Все построения производятся по цене Bid. Хотя никто не мешает немного изменить индикатор, переведя его показания по цене Ask. Но даже в этом случае спред нам не нужен. Ведь если построить свечной график сразу по двум ценам, то получим неприятную для глаз картинку - раздвоение свечей.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 190
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 13.03.15 15:16. Заголовок: Привет, Игорь! Scri..


    Привет, Игорь!

    Scriptong пишет:

     цитата:
    ...излагай мысли максимально ясно, не мешай все в кучу...



    Трудно излагать, когда не умеешь, да еще и когда пытаешься это сделать в праздник.
    Когда писал, то пытался написать в контексте моего предыдущего сообщения.
    Сравнивал со своей переделкой (это никому не интересно), считаю ее не корректной.

    Scriptong пишет:

     цитата:
    Если мы сейчас говорим об индикаторе BerBullBalance_OpenZero, то спред учитывать не нужно.



    Тут я немного о другом.

    Пытался разделить границу не просто Опен, а с учетом спреда – не смог –
    постоянное изменение последнего у меня ведет к «перерисовки» всего графика
    в твоем варианте алгоритма, да и, видимо, нет особого смысла (пока точно нет).

    Все это время смотрел, что получилось в индикаторе BerBullBalance_OpenZero?

    Мне нравится (правда я чуть переделал – вид, как у РСИ).

    Окончательно, для себя, выводы сделаю после тестирования (если получится
    твой архив тиковых данных преобразовать в график
    равновысоких баров и его «загнать» в тестер).

    Пока предварительно – появилась значимая дивергенция.

    Это и следовало ожидать – вот тут я ее приемлю, она логична, т.к.

    нормированы котировки, а это само по себе дает применение индикатора BerBullBalance_OpenZero
    логично и он с ценой не связан (все в рамках одного инструмента),

    есть привязка к единым точкам отсчета (базам) в виде твоего Зиг Зага и
    относительно этой «базы» сравнение с

    индикатором – производной от цены, который так же привязан к ЗигЗагу (сделан по ЗигЗагу) и

    индикатором – волатильности, который так же привязан к ЗигЗагу (сделан по ЗигЗагу), а и

    сам ЗигЗаг привязан к высоте бара (точнее 2-а ЗигЗага,
    один по размаху равен высоте бара, а второй «рабочий» связан с первым).

    В общем «картинка» получилась красивой.

    Еще раз - спасибо за индикатор!


    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1326
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 15.03.15 17:05. Заголовок: Balbesik пишет: есл..


    Balbesik пишет:

     цитата:
    если получится
    твой архив тиковых данных преобразовать в график
    равновысоких баров и его «загнать» в тестер)


    М-м, серьезный вопрос, нужно будет как-то подумать насчет тестирования нестандартных ТФ в тестере на основании реальных тиков. Когда-то уже такое делал (нужно смотреть статьи на Admiral'e), но там не было реальных тиков, просто минутные свечи.
    В будущем проработаем вопрос.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 191
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 15.03.15 17:49. Заголовок: Scriptong пишет: ....


    Scriptong пишет:

     цитата:
    ...насчет тестирования нестандартных ТФ в тестере на основании реальных тиков...



    Я сейчас жду твой архив за прошедшую неделю.
    Есть вопрос по преобразовании истории "в лоб" не идет, надо проверить.
    Историю твою я преобразовал в равновысокие и да "загнать" не удается тиковый,
    "загнал" скриптом от Синбара, но не тики зато есть объем, чего не было на синбаре.
    Пока жду историю за эту неделю.

    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1327
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 15.03.15 18:58. Заголовок: Balbesik пишет: Пок..


    Balbesik пишет:

     цитата:
    Пока жду историю за эту неделю.


    Еще вчера добавил - 14.03.2015.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 192
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 16.03.15 01:24. Заголовок: Доброй ночи, Игорь! ..


    Доброй ночи, Игорь!

    Я совершенно не понимаю в этих форматах данных и в их формировании (всякие там разделители и прочее).

    С другой стороны, я понимаю, что совершенно бессмысленно, что-либо делать
    (как в прочем и в любом вопросе), если нет корректных исходных данных.


    Что-то я делаю не так?

    1. Скрипт ConvertTicksFile - файл- Excel «Как есть» похоже привязан к терминалу – какой-то полтергейст.
    Файл сформированный на терминале для тестирования «не понимается» другим терминалом хотя и загружается в него.
    В общем на котором терминале нужен равновысокий график истории на том и делать файл «Как есть» временного графика.

    2. Запустить в реале с историей не удается. Похоже, все таки, идет конфликт с барами временного графика.
    Требуется похоже некое переформатирование. Но так или иначе историю мы получаем,
    правда не понятно – возможно это некая смесь,
    т.к. .tks не разделяется и новый не переписывается (user.tks), хотя график похож.

    Ничего не понятно.

    3. В тестере «зашиты» только стандартные Т.Ф. и что-то «мудрить» думаю смысла нет.
    Все равно проще использовать терминал для тестирования, а следовательно нужен только скрипт,
    который формирует данные, по аналогии как у Синбара, но только тиковые.

    Скрипт Синбара у тебя есть, но прикрепляю, чтобы не искать
    (переделан, по твоей рекомендации, чтобы не было разрывов на графике – работает как надо) –
    просто на подумать – я сам смутно представляю, как можно, на многих инструментах,
    реализовать тики – никакой ПАМЯТИ не хватит – лучше подумать (мне кажется более актуально), как память «скидывать».

    click here

    http://dropmefiles.com/nQjuV

    P.S.

    Зто просто предупреждение.




    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1337
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 16.03.15 10:27. Заголовок: Balbesik пишет: 1. ..


    Balbesik пишет:

     цитата:
    1. Скрипт ConvertTicksFile - файл- Excel «Как есть» похоже привязан к терминалу – какой-то полтергейст.
    Файл сформированный на терминале для тестирования «не понимается» другим терминалом хотя и загружается в него.
    В общем на котором терминале нужен равновысокий график истории на том и делать файл «Как есть» временного графика.


    Итоговый файл этого скрипта - просто файл тиков, а терминал использует совершенно другой формат - свечной. Поэтому ничего удивительного в том, что импорт не состоялся, нет.

    Balbesik пишет:

     цитата:
    2. Запустить в реале с историей не удается.


    Запустить что?

    Balbesik пишет:

     цитата:

    Похоже, все таки, идет конфликт с барами временного графика.
    Требуется похоже некое переформатирование. Но так или иначе историю мы получаем,
    правда не понятно – возможно это некая смесь,
    т.к. .tks не разделяется и новый не переписывается (user.tks), хотя график похож.


    Подключить к терминалу тиковую историю (из файлов tks) можно только одним способом - через TicksCollector. Других способов нет. Подключить тиковую историю к тестеру можно через FXTFileMaker, но пока ограничиваемся стандартными ТФ. Как сделать тестирование на нестандартных ТФ пока думаю.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 193
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 16.03.15 11:08. Заголовок: Все ни так. Script..


    Все ни так.

    Scriptong пишет:

     цитата:
    Поэтому ничего удивительного в том, что импорт не состоялся, нет.



    Импорт идет - через временной график - график равновысоких строится (TicksCollector )!
    История по тикам временного графика - строим временной - по нему строим равновысокие.
    Если "... - просто файл тиков.." получен с другого терминала,
    у меня график истории равновысоких не строится

    Scriptong пишет:

     цитата:
    Запустить что?



    Есть график истории равновысоких (построенный по архивным данным) -
    пошли котировки на реале -
    график с историей равновысоких не работает, TicksCollector - при этом работает.
    Видимо конфликт с временным начинается, т.к. место записи одно и то же - новые
    тики равновысоких видимо "не стыкуются" с раннее записанными временными.

    Scriptong пишет:

     цитата:
    Как сделать тестирование на нестандартных ТФ пока думаю.



    Сделать, на отдельном терминале для тестировании, просто "закачку" -
    на любой ТФ (1мин, 5 мин и т.д.) закачать историю равновысоких.
    Через FXTFileMaker - неудается, а чере скрипт Синбара - лехко.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 195
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 17.03.15 10:24. Заголовок: Надо разбираться, на..


    Надо разбираться, надо время и знать, как построен TicksCollector .
    Еще посмотрел - после некоторого времени перестают корректно отображаться бары.
    Если закрыть терминал и открыть снова - график перестает строится.
    Я об этом писал и выкладывал картинки с момента публикации индикатора TicksCollector.
    Повторно на это обращал внимание, где-то полгода назад и сейчас.
    Какая-то специфика и связана она, на мои взгляд, с - input int i_maxShowTicksCount.
    Предположение - каким-то образом если есть превышения баров "по тикам" количества баров в терминале идет конфликт.
    Соответственно не работает и с закаченной историей.
    Возможно и ни к чему использовать всю историю в реале.
    Нужна очень четкая инструкция - как пользоваться TicksCollector,
    если используются равновысокие бары.
    Это просто пожелание и не более.

    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1340
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 17.03.15 18:40. Заголовок: Balbesik пишет: Есл..


    Balbesik пишет:

     цитата:
    Если закрыть терминал и открыть снова - график перестает строится.


    Посмотри в журнал экспертов. Возможно, выскакивает ошибка построения истории. У меня тоже такое бывает иногда. В таких случаях приходится вручную удалять файл hst с нестандартным графиком и заново создавать. Тогда работает. В чем причина этой ошибки - не могу понять.

    Balbesik пишет:

     цитата:
    Нужна очень четкая инструкция - как пользоваться TicksCollector


    Здесь написано все, что я могу сказать по этому поводу. Добавить никак не могу.


    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 196
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 18.03.15 09:56. Заголовок: Добрый день, Игорь! ..


    Добрый день, Игорь!

    Scriptong пишет:

     цитата:
    Посмотри в журнал экспертов. Возможно, выскакивает ошибка построения истории.



    Спасибо.
    С TicksCollector буду разбираться, жалко, что сбой имеет «случайный» характер.
    Мне это актуально, надо чтобы гарантированно, без сбоев, работал хотя бы неделю.

    График равновысоких баров, построенный по архивным данным, имеем.
    В тестер, скриптом от Синбара, история равновысоких баров загружается.
    В тестере на равновысоких барах истории имеем объем, что не реализуется Синбаром.
    Тестер сам по себе моделирует некие тики по барам истории.

    Главные вопросы –

    Скрипт FXTFileMaker имеет ли принципиальное отличие (движение тиков внутри бара) от скрипта Синбара?
    Скрипт FXTFileMaker формирует реальный порядок следования тиков внутри бара?

    Мне для тестирования, если скрипт FXTFileMaker не имеет дополнительных (специальных функции),
    достаточно и скрипта от Синбара и «голова не болит».
    Меня не интересует порядок движения внутри бара.

    Если скрипт FXTFileMaker выдает 4 цены, объем, время бара и не более, то нет проблемы.


    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1348
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 18.03.15 19:56. Заголовок: Balbesik пишет: Скр..


    Balbesik пишет:

     цитата:
    Скрипт FXTFileMaker имеет ли принципиальное отличие (движение тиков внутри бара) от скрипта Синбара?


    Да, имеет. Синбар использует детализацию по минутным свечам. Остальное моделирует тестер.

    Balbesik пишет:

     цитата:

    Скрипт FXTFileMaker формирует реальный порядок следования тиков внутри бара?


    Да, т. к. FXTFileMaker использует данные о реальных тиках. В итоге тестер ничего не моделирует.

    Balbesik пишет:

     цитата:

    Мне для тестирования, если скрипт FXTFileMaker не имеет дополнительных (специальных функции),
    достаточно и скрипта от Синбара и «голова не болит».
    Меня не интересует порядок движения внутри бара.


    Тогда зачем первые два вопроса?

    Balbesik пишет:

     цитата:

    Если скрипт FXTFileMaker выдает 4 цены, объем, время бара и не более, то нет проблемы.


    Нет, выдает он не только четыре цены. Генерируются все тики внутри бара, которые реально были в истории рынка.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 197
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 18.03.15 15:36. Заголовок: Игорь! Я тебя долг..


    Игорь!

    Я тебя долго "тренировал", я понять не мог "догнать" твое решение по переинициализации советника.
    Мне надо разобраться с TicksCollector.
    Наиболее логично по картинке поведения у тебя и у меня -

    if (i_maxShowTicksCount > Bars)
    {
    Alert(name, ": максимальное количество отображаемых тиков не может быть больше ", Bars,". Индикатор отключен.");
    //return false;
    }
    комментируем ретурн.
    В чем тут я не прав (спрашиваю, чтобы не тратить время)?.

    А вообще интересно на каком компе, в реале, в домашних условиях, если не олигарх и не стоит свой ВЦ,
    подобное в реале можно реализовать (я тебе писал, что иногда создается впечатление, что отвечает другой человек)?





    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1349
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 18.03.15 20:07. Заголовок: Balbesik пишет: Я т..


    Balbesik пишет:

     цитата:
    Я тебя долго "тренировал", я понять не мог "догнать" твое решение по переинициализации советника.
    Мне надо разобраться с TicksCollector.
    Наиболее логично по картинке поведения у тебя и у меня -

    if (i_maxShowTicksCount > Bars)
    {
    Alert(name, ": максимальное количество отображаемых тиков не может быть больше ", Bars,". Индикатор отключен.");
    //return false;
    }
    комментируем ретурн.
    В чем тут я не прав (спрашиваю, чтобы не тратить время)?


    Один тик индикатором отображается на том месте, где график отображает бар. Если на графике 200 баров, то 201-й тик индикатор не сможет отобразить, что-то будет затерто. По идее, критичного здесь ничего не должно быть. Я в этом направлении даже не пытался думать (к чему это приведет), просто заткнул дырку, которая может принести проблемы. Это обычный подход к программированию - отсекать все возможные проблемы. Если же анализировать вес каждой из этих проблем, то до самого программирования дело никогда не дойдет.

    Balbesik пишет:

     цитата:
    А вообще интересно на каком компе, в реале, в домашних условиях, если не олигарх и не стоит свой ВЦ,
    подобное в реале можно реализовать (я тебе писал, что иногда создается впечатление, что отвечает другой человек)?


    Комп достаточно скромный - VPS на Amazon'е. На нем запущено три терминала (для каждого из брокеров). Терминалы и индикатор оптимизированы настолько, насколько позволили мои способности. В итоге - средняя загрузка CPU не превышает 50%.
    Ну а дальше - ручная работа по компоновке архивов. Уходит на это дело около часа в неделю. Поэтому раз в сутки делать срез не могу себе позволить.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 198
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 18.03.15 21:06. Заголовок: Не помогло и индикат..


    Не помогло и индикатор перестал работать.



    Бары не рисуются, объем становится равен 1 на каждом баре.
    Зксперт (журнал) посмотреть не успел.
    Буду думать.
    На Синбар возвращаться не хочется -
    советник лучше работает с TicksCollector

    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1354
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 18.03.15 23:06. Заголовок: Balbesik пишет: Не ..


    Balbesik пишет:

     цитата:
    Не помогло и индикатор перестал работать.


    Что именно не помогло?

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 199
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 18.03.15 23:17. Заголовок: Scriptong пишет: Чт..


    Scriptong пишет:

     цитата:
    Что именно не помогло?




    //return false;

    Я же методом "научного втыка" действую.
    Буду искать причину.
    Вдруг это просто проблемы связи?

    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1358
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 18.03.15 23:32. Заголовок: Balbesik пишет: Я ж..


    Balbesik пишет:

     цитата:
    Я же методом "научного втыка" действую.


    Это место точно не поможет в решении. Здесь, как я описывал выше, решается только проблема визуализации, не больше, не меньше.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 200
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 20.03.15 09:39. Заголовок: Добрый день, Игорь! ..


    Добрый день, Игорь!

    Нужен твой взгляд.

    Вроде заработало (одна дописка) -
    bool CalcIndicatorData()
    {
    static datetime lastBarTime = 0;
    if (g_ticksCnt < i_maxShowTicksCount)
    g_ticksCnt++;
    if (lastBarTime == iTime(NULL,PERIOD_CURRENT,0)
    && iTime(NULL,PERIOD_CURRENT,0) != 0)
    MoveDataToTheLeft();
    else
    lastBarTime = iTime(NULL,PERIOD_CURRENT,0);
    return SaveRegularTick();
    }

    Простая замена Time[0] при построении равновысоких баров на iTime(NULL,PERIOD_CURRENT,0) не достаточна.
    Введена дописка && iTime(NULL,PERIOD_CURRENT,0) != 0

    Исходил из следующего –
    Ввел заведомо неверный период - PERIOD_D1 на равновысокий график с периодом 313
    Дополнительно исключил работу, если Bid == Ask || Bid == EMPTY_VALUE || Bid == 0 и
    по Ask аналогично (я не знаю, что такое Bid и Ask, поэтому сделал и 0 и EMPTY_VALUE).

    При формировании нового 1 минутного бара (стандартного) на графике равновысоких
    баров эти условия срабатывали,
    соответственно предположил, что и Time[0] – может быть равно 0.

    Картинка


    Т.к. тик в принципе по величине изменения цены может быть любой –
    вполне возможно "попадание на переход" нового 1 минутного бара (стандартного)

    Картинка


    И соответственно может быть Time[0] = 0.

    Исключил этот вариант, второй день работает без сбоев (а это уже на что-то похоже).
    Но т.к. слет имеет "случайный характер по времени" надо хотя бы неделю.


    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1370
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 20.03.15 11:20. Заголовок: Balbesik пишет: Вро..


    Balbesik пишет:

     цитата:
    Вроде заработало (одна дописка) -
    bool CalcIndicatorData()
    {
    static datetime lastBarTime = 0;
    if (g_ticksCnt < i_maxShowTicksCount)
    g_ticksCnt++;
    if (lastBarTime == iTime(NULL,PERIOD_CURRENT,0)
    && iTime(NULL,PERIOD_CURRENT,0) != 0)
    MoveDataToTheLeft();
    else
    lastBarTime = iTime(NULL,PERIOD_CURRENT,0);
    return SaveRegularTick();
    }


    Очень странное изменение, т. к. iTime(NULL,PERIOD_CURRENT,0) по смыслу то же самое, что и Time[0]. Другое дело, что в последних билдах Time[0] иногда приводит к фатальной ошибке (это просто некоторая недоработка терминала; разработчики о ней знают, но пока не могут уверенно воспроизвести ошибку). Только по этой причине можно говорить, что обращение к iTime более оправдано.

    Второй момент: iTime(NULL,PERIOD_CURRENT,0) != 0. Просто проверка доступности данных текущего таймфрейма. В этом месте кода она точно лишняя, т. к. при инициализации имеется проверка наличия баров на графике:

     цитата:
    if (i_maxShowTicksCount > Bars)
    {
    Alert(name, ": максимальное количество отображаемых тиков не может быть больше ", Bars,". Индикатор отключен.");
    return false;
    }


    Если баров на графике не будет, то индикатор попросту не запустится.

    Balbesik пишет:

     цитата:
    Ввел заведомо неверный период - PERIOD_D1 на равновысокий график с периодом 313


    Почему же он неверный? Какая разница графику - равновысокие на нем бары или нет?

    Balbesik пишет:

     цитата:
    Дополнительно исключил работу, если Bid == Ask || Bid == EMPTY_VALUE || Bid == 0 и
    по Ask аналогично


    Здесь не понял, о чем речь.

    Balbesik пишет:

     цитата:
    (я не знаю, что такое Bid и Ask, поэтому сделал и 0 и EMPTY_VALUE).


    Bid - текущая рыночная цена покупки, а Ask - продажи. Это азы рыночной торговли.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 201
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 20.03.15 12:30. Заголовок: Scriptong пишет: Bi..


    Scriptong пишет:

     цитата:
    Bid - текущая рыночная цена покупки, а Ask - продажи. Это азы рыночной торговли.



    Не про это.
    Не знаю как "правильней", например Bid !=0 или Bid !=EMPTY_VALUE (может Bid это буфер)

    Scriptong пишет:

     цитата:
    Почему же он неверный? Какая разница графику - равновысокие на нем бары или нет?



    Я формирую график с периодом 313, но время для проверки в iTime использую с Д1.

    Scriptong пишет:

     цитата:
    Здесь не понял, о чем речь.



    Сделал просто проверку может быть на равновысоком графике Bid = Ask или
    могут ли они быть равны 0 или EMPTY_VALUE.
    При появлении нового минутного бара (из минутного в данном случае формируется равновысокий).
    Могут.
    Соответственно сделал вывод, что и Time[0] может быть равен 0.

    Scriptong пишет:

     цитата:
    iTime(NULL,PERIOD_CURRENT,0) по смыслу то же самое, что и Time[0]



    Это понятно.

    Scriptong пишет:

     цитата:
    iTime(NULL,PERIOD_CURRENT,0) != 0



    Я сделал всего лишь добавку в твой код -

    if (lastBarTime == Time[0])
    MoveDataToTheLeft();

    if (lastBarTime == Time[0] && Time[0] != 0)
    MoveDataToTheLeft();

    что-то по коду "Просто проверка доступности данных текущего таймфрейма...",
    на мои взгляд, здесь это не следует.

    Столько времени сколько сейчас в реале работает Тикколлектор
    у меня никогда не работало - шел "слет".

    Практика подтверждает любую теорию.



    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1378
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 20.03.15 14:13. Заголовок: Balbesik пишет: Сде..


    Balbesik пишет:

     цитата:
    Сделал просто проверку может быть на равновысоком графике Bid = Ask или
    могут ли они быть равны 0 или EMPTY_VALUE.


    Bid может быть равен Ask только на счетах типа ECN. На стандартных счетах такого априори не бывает. Равенство цены 0 или бесконечно большому значению - это также нонсенс, ибо говорит о фатальной ошибке в самом терминале.

    Balbesik пишет:

     цитата:
    Соответственно сделал вывод, что и Time[0] может быть равен 0.


    Может, но это тоже ошибка терминала. Если же iTime(NULL, PERIOD_CURRENT, 0) равен нулю, то это говорит об отсутствии баров на графике. Такое может быть, когда еще не успели загрузиться данные графика. В таких случаях причину нужно выяснять через GetLastError(). Если в такой момент обратиться к Time[0], то это приведет к аварийной остановке программы по причине выхода за пределы массива (массив Time будет пустой).

    Balbesik пишет:

     цитата:
    шел "слет".


    В чем это проявлялось?

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 202
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 20.03.15 15:08. Заголовок: Отправлено: 18.03.15..


    Scriptong пишет:

     цитата:
    В чем это проявлялось?



    Картинка графика - Отправлено: 18.03.15 21:06.

    Сейчас я на другом компе, а этот "слет", у меня,
    шел с самого начала публикации Тикколлектора - на другом компе (точно такие же картинки выкладывал).

    Думаю, что если даже вопрос терминала, то сейчас уже уверен, что
    дописка помогла ("слет" был на флете или на быстром движении - и то и то уже было).
    После остановки (закрытия) терминала повторно график запускается (значит и история корректно записывалась).

    Считаю, по Тикколлектору вопрос закрыт.

    P.S.

    Кстати подумал - да допустим, с точки зрения программиста, это нонсенс,
    но а вдруг это "личные доработочки ДЦ" , чтобы советники НЕ работали.

    Тем более "слет", как правило, шел на быстрых движениях, имел случайный характер
    и после него повторно график не запускался (нечего тиковую историю собирать и
    улучшать торговые системы).


    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 203
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 20.03.15 18:41. Заголовок: Лучше бы ничего не п..


    Лучше бы ничего не писал.
    Опять "слетел".

    Ну теперь я уже не знаю, что может быть еще с индикатором.
    Блокирую все Биды, Аски и их производные, если опять "слет",
    придется отказываться от Тикколлектора.
    Как есть.



    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1380
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 22.03.15 15:31. Заголовок: Balbesik пишет: Опя..


    Balbesik пишет:

     цитата:
    Опять "слетел".


    К сожалению, по этому рисунку я не могу понять, в чем заключается "слет". Поясни хотя бы в двух словах. Также приложи пожалуйста настройки TicksCollector, с которыми у тебя проблема, и что записано в журнале экспертов (может, есть какие-то ошибки).

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 205
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 23.03.15 00:09. Заголовок: Scriptong пишет: К ..


    Scriptong пишет:

     цитата:
    К сожалению, по этому рисунку я не могу понять, в чем заключается "слет". Поясни хотя бы в двух словах. Также приложи пожалуйста настройки TicksCollector, с которыми у тебя проблема, и что записано в журнале экспертов (может, есть какие-то ошибки).



    "слет" – бары начинают рисоваться, как штрихи (в конце графика («0» - бар)).
    Объем бара = 1 на всех штриховых барах.

    Подобную картинку я выше выложил – Отправлено: 18.03.15 21:06 .

    Если снять индикатор с графика и повторно установить, то график вообще перестает строиться.
    Тут, да, чтобы запустить необходимо удалить фаил.tks с раннее собранными тиками.

    В журнале экспертов ничего не наблюдал.

    На этой неделе, в первую очередь, хочу проверить возможное влияние входных сигналов Бид и Аск (даже если по логике и быть не может).

    Связно со следующим – как-то у меня вилы и цели строились на базе ЗигЗага Candida (HZZ) на нем в один день недели, точно в одно и тоже время, происходило перестроение и вил и целей. При этом я проверял по двум «кухням» Альпари и FXCM так вот по одной из них это происходило в воскресенье, а у второй почему-то в четверг и всегда по времени,
    т.е. имело не случайный характер.

    Они «переписывали» историю, заявляя, что убирают нерыночные котировки –
    все нам «на благо».
    Т.е. в этот момент может быть, что угодно.

    Сейчас хочу исключить этот момент (если это имеет место быть).





    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 207
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 23.03.15 13:40. Заголовок: В дополнение - пого..


    В дополнение -

    поговорил с ребятами, которые занимаются фондой.
    Они не знают МТ4 и форекс.
    Но проверку в части Бид и Аск делали.
    Получилось на 200 000 тиков Бид=Аск порядка 50 случаев,
    Аск - Бид = (отрицательная величина) 2-3 случая.

    Если Аск - Бид = минус, то однозначно относят к технологическому сбою,
    то Аск = Бид помимо технологического сбоя, имеет место быть и
    может быть значимо при комплексной оценки.

    Возможно это что-то даст.

    И мой старый вопрос - может ли на форексе, например Бид = EMPTY_VALUE.
    Или другими словами MarketInfo принимать пустое значение.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 208
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 24.03.15 15:39. Заголовок: По возможности исклю..


    По возможности исключил некорректные данные по Бид и Аск.
    Не помогло - "слет".
    Пока более версии нет.
    До этого, правда не особо проверял и сравнивал с работой равнообъемного,
    там "слетов" не было, т.е. первое и остается - цена.
    Я не знаю структуру построения Тикколлектора.
    Принцип - "обезьяны, которая трясет" не прошел.

    Более "в чужом" разбираться смысла не вижу (можно это делать до бесконечности,
    особенно, когда автору это особо и не надо - один и тот же вопрос 10 раз).
    Все.
    На Тикколлекторе - равновысокие (у меня не работают).

    "Индикатор и советник распространяются "как есть". Автор не несет ответственности за прямые или
    косвенные убытки, понесенные трейдерами вследствие использования программ." -
    этим все сказано никаких обид.

    P.S.

    Вопросы соответственно все отпадают.

    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1396
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 24.03.15 19:56. Заголовок: Balbesik пишет: Воп..


    Balbesik пишет:

     цитата:
    Вопросы соответственно все отпадают.


    ОК. Значит, чинить TicksCollector будем с другим его пользователем, у которого хватит заинтересованности довести дело до конца.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 209
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 27.03.15 16:46. Заголовок: Scriptong пишет: ОК..


    Scriptong пишет:

     цитата:
    ОК. Значит, чинить TicksCollector будем с другим его пользователем, у которого хватит заинтересованности довести дело до конца.



    Игорь!

    Где я тебя оскорбил или задел?
    Я выложил - состояние дел (без разработчика - а это бред).

    У меня с тобой были нормальные отношения (как мне казалось).
    Что-то я не заметил "...заинтересованности..." на ветке.
    Но, так или иначе " Как та обезьяна, которая трясет дерево",
    кажется я проблему Тикколлектора решил.
    Обидно, что ты, как автор, иногда устраняешься.
    "Гоняю" следующию неделю и выложу.
    Кстати ты опять (как в советнике) деление на "0" в библиотеке пропустил -
    считаю это "не при делах" - у меня есть основание считать это мелочью.

    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1412
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 29.03.15 15:32. Заголовок: Balbesik пишет: Где..


    Balbesik пишет:

     цитата:
    Где я тебя оскорбил или задел?


    Ты меня ничем не обидел. Точно также со своей стороны констатировал факт - у тебя не хватает терпения довести дело до конца. Ты не понимаешь, что обнаружение некоторых ошибок является достаточно трудной задачей или даже невыполнимой. Предоставив несколько фактов, которые очень плохо описывают положение дел, ты считаешь, что я через пару дней должен выложить исправленное решение. В то же время я еще даже в суть проблемы не успел вникнуть. Но ты уже "устал".

    Balbesik пишет:

     цитата:
    Кстати ты опять (как в советнике) деление на "0" в библиотеке пропустил -


    Это серьезная ошибка. Можешь указать где (какая библиотека)?

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 210
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 30.03.15 19:05. Заголовок: Scriptong пишет: Эт..


    Scriptong пишет:

     цитата:
    Это серьезная ошибка. Можешь указать где (какая библиотека)?



    Привет Игорь!

    Заставил чуть раньше ответить.

    Вообще-то библиотека (вынесенная функция) у тебя одна (если у тебя более, чем одна, это интересно,
    т.к. проблема ПАМЯТИ путем оптимизации, в части Тикколлектора, меня не убедила ).

    bool NonStandartTFChart::IsNewBarByConvertType(datetime &time) const
    {
    switch (m_convertType)
    {
    case CONVERT_TYPE_TF: if (time < m_rates.time + m_chartProperty)
    return false;

    if (m_chartProperty != 0) // это я вставил
    {
    time = time / m_chartProperty * m_chartProperty;
    return true;
    }
    Любое деление я воспринимаю, как потенциальная угроза (даже при страховке - "советник не работает").
    Меня мало беспокоит, что при инициализации все нормально (опыт советника).

    Вопрос другой – ты «устранился» - а именно не даёшь версии подлежащие проверки
    (я понимаю - у тебя самого не хватает времени и на все не хватит).

    Я на пример не понимаю –
    bool SaveRegularTick()
    {
    // далее моя вставка - и Аск можно исключить - "масло масленое"
    double Bd1 = 0.0;
    double Ak1 = 0.0;

    if (
    NormalizeDouble(Bid ,6) == NormalizeDouble(Ask ,6)
    ||
    NormalizeDouble(Ask ,6) - NormalizeDouble(Bid ,6) < 0
    ||
    Bid == EMPTY_VALUE
    ||
    NormalizeDouble(Bid ,6) == 0
    ||
    Ask == EMPTY_VALUE
    ||
    NormalizeDouble(Ask ,6) == 0
    )
    {
    Bd1 = Bid;
    Ak1 = Ask;
    Print(" Bd1 ",Bd1);
    Print(" Ak1 ",Ak1);
    //return false; принт выше это контроль «для себе»

    return IsFileFlush(false);
    }
    Почему для bool, когда вроде бы достаточно return false; не достаточно и идет «слет» -
    Журнал – История Бар -2 ошибки. А return IsFileFlush(false); - стоит 2 ю неделю?
    Я не зная твоего алгоритма, методом проб, не знаю, где искать и это раздражает –
    не понятно – А тебе этот индикатор (в свободном доступе) нужен?.


    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 212
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 30.03.15 20:03. Заголовок: "...Например, с..


    "...Например, стратегия торговли по индикатору Moving Average чаще всего основана на пересечении двух средних скользящих с разным периодом или разным сдвигом, различные осцилляторы (MACD, Stochastic, RSI, RVI и т. д.) дают сигналы при пересечении своих главных и сигнальных линий или (в случае отсутствия сигнальной линии) при пересечении заданных пользователем уровней..."

    Игорь!

    Я один раз на "Красном форуме" на 25-30 листах ветки прочитал, что такое Машка (я понял, как это серьезно и сколько надо знать)
    Но понял я еще и одно - нет корректных входных данных - нечего делать.
    Это то, чего я добиваюсь.

    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1422
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 31.03.15 17:41. Заголовок: Balbesik пишет: Люб..


    Balbesik пишет:

     цитата:
    Любое деление я воспринимаю, как потенциальная угроза (даже при страховке - "советник не работает").


    По сути - посыл правильный, т. е. нужно подозрительно относится к любой операции деления, которая осталась без проверки. Но в данном проверка есть. Речь идет о неизменяемом параметре - члене класса. К моменту его инициализации все необходимые проверки уже проведены:

     цитата:
    if (param < 1)
    {
    Alert(name, ": значение параметра ", paramName, " должно быть натуральным числом. Индикатор отключен.");
    return false;
    }


    Это часть функции IsThreeParametersCorrect, расположенной в файле TicksCollector_AD.mq4 (строки 157 - 177). Проследи, каким образом инициализируется этот член класса - это производная от входного параметров i_secondsPerBar, i_pointsPerBar и i_ticksPerBar. Попробуй задать их значение, равное нулю, и посмотри результат запуска индикатора.

    Balbesik пишет:

     цитата:
    Почему для bool, когда вроде бы достаточно return false; не достаточно и идет «слет» -


    Потому что bool это не только false, но и true. Если функция SaveRegularTick вернет false, то такой результат расценивается как ошибка.

    Balbesik пишет:

     цитата:
    не понятно – А тебе этот индикатор (в свободном доступе) нужен?.


    Зачем он мне в свободном доступе? Это ведь моя разработка, которая всегда со мной. Индикатор нужен не мне, а другим людям (наверное). Потому и выложил его.

    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1423
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 31.03.15 17:43. Заголовок: Balbesik пишет: Иго..


    Balbesik пишет:

     цитата:
    Игорь!

    Я один раз на "Красном форуме" на 25-30 листах ветки прочитал, что такое Машка (я понял, как это серьезно и сколько надо знать)
    Но понял я еще и одно - нет корректных входных данных - нечего делать.
    Это то, чего я добиваюсь.


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

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 213
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 01.04.15 13:41. Заголовок: Scriptong пишет: К ..


    Scriptong пишет:

     цитата:
    К моменту его инициализации все необходимые проверки уже проведены



    Как раз об этом я и писал - "..даже при страховке - "советник не работает"...".

    Scriptong пишет:

     цитата:
    Это ведь моя разработка



    Я как раз об этом - не первый раз уже "обходиться" вопрос ПАМЯТИ.
    В выложенном варианте показана возможность!
    Вообще-то , что это возможно известно!

    Игорь!

    Походы разные - практика и возможности.
    Я не владея программированием знаю, что "что-то можно",
    но это не значит, что лично "я" смогу сделать

    Остальное в конце недели - если будут основания.

    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1437
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 01.04.15 14:55. Заголовок: Balbesik пишет: Как..


    Balbesik пишет:

     цитата:
    Как раз об этом я и писал - "..даже при страховке - "советник не работает"...".


    Опять нет конкретики:
    1. Какой советник не работает? (контекст разговора - ИНДИКАТОР TicksCollector).
    2. Какая связь между ошибкой деления на ноль и не работой советника.
    3. В чем выражается неработоспособность советника?

    Balbesik пишет:

     цитата:
    Я как раз об этом - не первый раз уже "обходиться" вопрос ПАМЯТИ.


    Что там с памятью?

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 214
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 01.04.15 15:44. Заголовок: Scriptong пишет: ..




    Scriptong пишет:

     цитата:
    1. Какой советник не работает? (контекст разговора - ИНДИКАТОР TicksCollector).


    Я пытался передать суть, а не орфографию.
    Естественно речь щла о индикаторе.

    Scriptong пишет:

     цитата:
    Что там с памятью?



    У меня на равновысоких более 5 инструментов Тикколлекор
    не "справляется" (а у тебя под сотню работает - в результате оптимизации?).

    Но это уже не вопрос.

    С момента опубликования Тикколлекора у меня он "слетал" (на разных компах).
    Причиной могли быть только входные параметры (тогда на мои взгляд).
    Их некорректность я попытался "исключить".
    Если раннее "слет" шел в течении 1-2 дней, то сейчас простояло 1.5 недели и "слетел".
    Т.е. мои правки - это не решение.
    У меня Тикколлекор не работает и причину я найти не могу (я не программист).
    Т.к. под него было много "заточено" было жалко затраченного времени.
    Вынужден от него отказываться, т.к. у тебя, Игорь, это не повторяется и причину ты не знаешь,
    а мне самому этим заниматься можно до бесконечности (остается одно решение - отказываться).

    "0" - "слет"


    Журнал


    1 минута на "быстром" движении


    Синбар (стоит) -


    Оказалось и до конца недели ждать не надо.



    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1442
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 02.04.15 14:47. Заголовок: Balbesik пишет: Я п..


    Balbesik пишет:

     цитата:
    Я пытался передать суть, а не орфографию.
    Естественно речь щла о индикаторе.


    Чтобы собеседник понимал суть, важна не только орфография, но и семантика (помни про "казнить нельзя помиловать"). Вообще, даже при правильном построении вопросов другая сторона понимает не более 50% сказанного, а тут еще и косноязычие мешает. А потом от тебя: "разговариваю, будто с разными людьми".

    Balbesik пишет:

     цитата:
    У меня на равновысоких более 5 инструментов Тикколлекор
    не "справляется" (а у тебя под сотню работает - в результате оптимизации?).


    Я никогда не запускал столько индикаторов для построения нестандартных графиков. На 72-ух символах индикатор работает только в режиме сбора тиков.

    Balbesik пишет:

     цитата:
    У меня Тикколлекор не работает и причину я найти не могу (я не программист).


    Скажу больше. Я программист, но тоже не могу найти причину. Пока знаю только одно: указанная ошибка устраняется, если удалить файл истории нестандартного ТФ и создать его заново. Если же к моменту запуска МТ4 уже был файл с нестандартным символом, то запуск индикатора для продолжения построения графика приводит к такой вот ошибке.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 215
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 04.04.15 15:42. Заголовок: Добрый день, Игорь! ..


    Добрый день, Игорь!

    Ну насчет стилистики и «казнить нельзя, помиловать (запятая)» (а в т.ч. «разные люди отвечают») это не по адресу.

    Да, есть момент, я думаю о своем и держу всю переписку в голове и только об этом,
    а ты работая с массой людей начинаешь путаться (просто все в голове не удержать).

    Все равно же по Тикколлектору смотрю варианты (для себя), только писать не о чем.

    Scriptong пишет:

     цитата:
    Пока знаю только одно: указанная ошибка устраняется, если удалить файл истории нестандартного ТФ и создать его заново


    - Ну , до этого я догадался и это я делаю.

    Scriptong пишет:

     цитата:
    Если же к моменту запуска МТ4 уже был файл с нестандартным символом, то запуск индикатора для продолжения построения графика приводит к такой вот ошибке.



    Нормально запускается во всех вариантах, если уже был файл с нестандартным символом (если файл «нормальный»).

    Ошибка появляется после «слета», значит или запись в файл или его считывание некорректно.
    Т.е. причина это «слет» (тавтология – причина «слета», это «слет») обусловленный некорректной записью в файл,
    а пишем наверное Бид (Аск). При этом Синбар стоит, а он тики не пишет – это исходный посыл.

    Но интересно совершенно другое –
    Твоя позиция!

    Если сделать нормализацию до 6 знака всех Бидов и Асков, а также в bool NonStandartTFChart:: …
    то проблема кол. инструментов решается – комп. спокойно работает на 7 и по «прикидке по памяти» будет работать до 30-40.



    Вопрос более актуальный – А тебе «проблема слета» это надо?
    Вопрос задаю второй раз!
    Хочу понять, есть ли смысл его задавать?

    С чем этот вопрос связан?

    Вот я работал (ю) в реале с Нью-Йорком (по Штатовским правилам) там
    все эти «мульки» (цена "ушла" и прочая лабуда местных "наперсточников"),
    которые сейчас даже Альпари начал применять (естественно после внутреннего разделения) не проходят.
    Но есть там один разрешенный финт – спред называется.

    Делая тиковую историю (по 3 кухням) на филантропию не похоже.
    Спред «тактично» обходится в разговоре.

    Scriptong пишет:

     цитата:
    Скажу больше. Я программист, но тоже не могу найти причину.



    Ой ли?

    Элементарно – ставишь на равновысоком величину , допустим, - 5, 25, 55, 155 и 255 пунктов.

    На 5 ты слет «поймаешь» за 15-20 минут реала.
    На 255 – вообще не поймаешь (его просто нет).

    В пятницу, когда «кухни» развлекаются на конец сессии - вообще показательно.

    И в процессе ты увидишь, как в зависимости от величины установки идет «слет»,
    т.е. от реального спреда (мое предположение, т.к. иного придумать не могу).
    Контроль по Журналу - HistoryBase: 2 errors in '.......'

    А «святое» не трогать!!!! (может в этом проблема?)

    Но удручает одно и спорить тут не о чем.
    Картинка Равновысокого бара (более крупно – участок) –



    Вот равновысокий бар сам по себе фильтр.
    Тик может быть и 1 пункт и 100 и т.д. – это понятно.

    С т.з. логики построения равновысокого бара в Тикколлекторе абсолютно логично.

    Только мне абсолютно не понятно, что это дает (ну «не догоняю») – где фильтр?

    Хотя вот это все в логике (почему проблема), почему есть проблема «слета»!


    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1450
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 08.04.15 19:19. Заголовок: Balbesik пишет: Ой ..


    Balbesik пишет:

     цитата:
    Ой ли?

    Элементарно – ставишь на равновысоком величину , допустим, - 5, 25, 55, 155 и 255 пунктов.

    На 5 ты слет «поймаешь» за 15-20 минут реала.
    На 255 – вообще не поймаешь (его просто нет).

    В пятницу, когда «кухни» развлекаются на конец сессии - вообще показательно.

    И в процессе ты увидишь, как в зависимости от величины установки идет «слет»,
    т.е. от реального спреда (мое предположение, т.к. иного придумать не могу).
    Контроль по Журналу - HistoryBase: 2 errors in '.......'


    Описан лишь ВОЗМОЖНЫЙ путь воспроизведения ошибки. Но он явно не дает 100%-ой гарантии, что всегда такое будет происходить точно на 15-ой или 20-ой минуте. А, значит, это не является четким алгоритмом воспроизведения ошибки. Ведь даже после нахождения четкого алгоритма воспроизведения нужно провести тысячи запусков, чтобы найти место в коде, которое приводит к ошибке. Потом нужно еще будет подумать над тем, как эту ошибку устранить.

    Так что в данном случае все далеко непросто. Даже если я буду только этим и заниматься (бросив основную работу), то вряд ли справлюсь за месяц. Так что тут надежда только на пользователей (плюс немного меня), которые случайно смогут определить последовательность действий, гарантированно приводящую к получению ошибки без перезапуска терминала.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 216
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 08.04.15 19:38. Заголовок: Индикатор для меня о..


    Индикатор для меня очень сложный.
    Примерно картинка ошибки понятна - проблема согласования времени.
    Решения я найти не могу.
    Сейчас попробую на картинках пояснить проблему (еще и изложить надо правильно).

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 217
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 08.04.15 20:42. Заголовок: Равновременной графи..


    Равновременной график не проверял.

    Равнообъёмный и равновысокий У МЕНЯ «слетают».

    На что обратил внимание (все по равновысокому бару) –
    Если на штатном 1 минутном графике в рамках ОДНОГО бара ход цены превышает заданный размах - i_pointsPerBar, то происходит «слет».

    Проверил – в блок // Формирование нового бара добавил –
    if(m_rates.time == 0 || (IsNewBarByConvertType(time) && (High[0] - Low[0]) < NormalizeDouble(m_chartProperty * m_point,6)))

    Картинка –



    Построения в этом случае равновысокого бара не происходит
    до появления на штатном 1 минутном графике нового бара,
    но и слет прекратился.

    Вернул к исходному блок // Формирование нового бара.

    Добавил в блок Определение формирования нового бара ….–
    case CONVERT_TYPE_POINT: if (time < m_rates.time ) return false;
    Серьезно улучшилось
    Картинка –



    Без этой добавки у меня давно бы график «слетел» (я уже научился быстро «слет» моделировать),
    но все равно «слетает» - что-то еще не учитываю.

    Обратил внимание, если размах (i_pointsPerBar) ставлю заведомо более спреда,
    то с добавкой в case CONVERT_TYPE_POINT: if (time < m_rates.time ) return false;
    вроде стоит (но это надо проверять – требует много времени).

    Исходя из аналогии с Синбаром (а он не «слетает») – там искусственно задается time += 1; ,
    но в синбаре и времени нет.

    Предполагаю, что что-то с согласованием по времени, но индикатор для меня очень сложен.



    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1453
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 09.04.15 21:13. Заголовок: Balbesik пишет: Есл..


    Balbesik пишет:

     цитата:
    Если на штатном 1 минутном графике в рамках ОДНОГО бара ход цены превышает заданный размах - i_pointsPerBar, то происходит «слет».


    Вот это уже зацепка. Подскажи еще, какую чаще всего ставишь высоту равновысокого бара. Запущу у себя с такими параметрами и буду ждать ошибок на новостях.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 218
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 09.04.15 21:29. Заголовок: Игорь! Там интересн..


    Игорь!

    Там интересно, если при появлении равновысокого бара был 1 минутный бар перед длинной свечкой , то стоит -
    имеет какое-то влияние появление нового бара на 1 минуте.
    Я сейчас вставил библиотеку динамического обновления - не знаю правильно или нет?
    Пока стоит и пока нравится.
    Место установки потом сброшу и буду просить совета, как правильно устанавливать.
    Ставлю размах = 5 пунктов - слетает на быстром движении, лучше днем.
    Чуть позже все напишу.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 219
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 10.04.15 11:39. Заголовок: Вставка библиотеки..



    Вставка библиотеки - функция динамического обновления тикового графика в различных местах -
    ничего не дала.

    Уже и не знаю, то ли комп (скорость обработки), то ли интернет, то ли величина истории в терминале большая, то ли еще что-то.

    Самое главное - т.к. подобная ситуация у других не моделируется - моя проблема!


    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1459
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 10.04.15 18:54. Заголовок: Сегодня смог уделить..


    Сегодня смог уделить немного времени работе с TicksCollector.

    Опыт 1.
    Собрал всю имеющуюся тиковую историю по EURUSD (с 23.05.2014) и создал из нее равновысокий график с высотой свечей 5 пунктов (4-хзнак). При открытии полученного графика сразу же получил сообщение об ошибках в истории. Открытый график не обновлялся, хотя выглядел вполне нормально (соответствовал истории).

    Опыт 2.
    Запуск TicksCollector на GBPJPY без предварительно собранной истории. Параметры те же. Новый график открылся нормально и в рабочем режиме обновлялся в течение 4-х часов. Никаких ошибок замечено не было.

    Опыт 3.
    После 4-х часов работы (см. опыт 2) терминал был принудительно перезагружен. Оффлайн-график открылся без ошибок, накопленная история отобразилась, обновление графика продолжилось. До сих пор все обновляется без сбоев.

    Пока прихожу к выводу, что ошибка истории проявляется только при работе с достаточно большим количеством тиковых данных. На данный момент тиковый файл имеет размер 211 536 байт, что равно 8 814 тикам. Это для понимания, категорий "малое количество данных" и "большое количество данных".

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 223
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 10.04.15 19:26. Заголовок: Scriptong пишет: Оп..


    Scriptong пишет:

     цитата:
    Опыт 1.


    Соответствует!
    Оно так и было - без удаления не запустишь.
    Хотя если тиковый временной (для тестера я брал - все нормально).
    По
    Scriptong пишет:

     цитата:
    Опыт 2.


    Тоже правильно - я тебе писал:" Нет проблем."

    Scriptong пишет:

     цитата:
    Опыт 3.



    Сегодня с утра - по ЕВРО-Бакс - постоянный слет (даже, как правило,
    у меня было только после превышения на одной свече = 50 пунктов, стало сразу).
    Использую Демо Альпари с островов (после разделения к ним вопросов не было).
    Радует, что не комп, но и верил в это мало, т.к. остальное работало без вопросов.

    Вопрос в другом - данный индикатор написан на
    более высоком уровне (объектно-ориентированом, как реклама - ДА).
    Я сомневаюсь, что ДЦ эта работа нужна (как заказчикам МТ - допустим МТ им "гарантировали" не работоспособность).
    Сейчас на фонде появились платформы (в связке с Квиком) - где МТ5 "отдыхает".
    Там все, о чем мы говорим, стоит штатно.
    Для ДЦ это (твоя разработка) не нужна (хотя мне удивительно) и не исключаю,
    как рекламодателей (работодателей) они против.
    Поэтому "не идет".

    Но Игорь, в индикаторе команды в связке с Виндос, а здесь все что угодно может быть.
    Я сейчас, конечно жалко наработок (в тестировании в твоей схеме все прелестно),
    думаю, как уйти на штатный временной (кашмар конечно, как "прикину").
    Так бы оставить Синбар, но советник не все "видит" (кстати половина индикаторов Кодебазы тоже не "видит" Синбар),
    а я более "не больной" в ручную торговать.
    В общем не проблема - переживу (до этого (с момента публикации), как то обходился).



    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 224
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 10.04.15 19:40. Заголовок: P.S. Надеюсь Тиккол..


    P.S.

    Надеюсь Тикколлектор изначально стоял на 1 минуте.

    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1466
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 13.04.15 21:08. Заголовок: Balbesik пишет: Над..


    Balbesik пишет:

     цитата:
    Надеюсь Тикколлектор изначально стоял на 1 минуте.


    Да, на М1. Но для TicksCollector это не имеет никакого значения. Это нужно только для "свечных" программ, таких как Synbar и period_converter.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 226
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 10.04.15 20:58. Заголовок: Перепроверка - Реал ..


    Перепроверка -
    Реал Альпари (острова) -
    тут же слет!



    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1467
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 13.04.15 21:11. Заголовок: Balbesik пишет: тут..


    Balbesik пишет:

     цитата:
    тут же слет!


    Сегодня запустил терминал, предварительно не удаляя ранее созданный файл нестандартного ТФ. Полет нормальный, никаких ошибок.

    Делаем следующий вывод - проблема не в дозаписи данных в файл истории, а именно в объемах этого файла. То есть существует некий критический объем файла, при достижении которого дозапись в файл приводит к ошибке истории.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 229
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 13.04.15 16:49. Заголовок: Эти ребята достоины ..


    Эти ребята достоины своей чести (сегоднешнему поколению это непонять).

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 230
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 13.04.15 17:02. Заголовок: Игорь! Давай по делу..


    Игорь!
    Давай по делу?
    По тикколлектору -
    то погнали Номер билда Винды( х-отя и не горантия),
    Номер NET- Тут мы оба "отдохнем"! при грамотном подходе.
    Эту компилюцию ты никогда "не поймаешь"!
    Поиграем!

    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1468
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 13.04.15 21:12. Заголовок: Balbesik пишет: Иго..


    Balbesik пишет:

     цитата:
    Игорь!
    Давай по делу?
    По тикколлектору -
    то погнали Номер билда Винды( х-отя и не горантия),
    Номер NET- Тут мы оба "отдохнем"! при грамотном подходе.
    Эту компилюцию ты никогда "не поймаешь"!
    Поиграем!


    Переведи. Для меня это просто набор слов.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 231
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 14.04.15 11:23. Заголовок: Scriptong пишет: Пе..


    Scriptong пишет:

     цитата:
    Переведи. Для меня это просто набор слов.



    Попробую перевести.

    Начну с того, что я не программист и Вашего «языка или жаргона» я не знаю.
    Поэтому как смогу.

    Смысл этого набора слов следующий –
    У меня Тикколлектор не работает – судя по всему он не работает только у меня ОДНОГО.

    Главное – у тебя все работает.

    Должна быть причина.

    Первая у меня «руки кривые» - может быть!

    Вторая интернет – я специально потратил время сходил к друзьям, которые имеют выделенную линию с очень высокой скоростью – все тоже самое – идет «слет» - исключаю интернет (это уже 3 комп и только у меня не работает - «руки кривые» - не исключаю).

    Третья Windows – у меня не стоит лицензионный и если причина в этом, то готов был по твоим указаниям, что-то делать . Или решать вопрос с лицензией. У меня конечно есть друзья, у которых ну просто все лицензионное стоит и занимаются биржей, но куплена платформа ATAS в которой все эти виды графиков есть штатно и с т.з. ренжей там помимо прочего включены в список еще штук 5 ренжей (как они позиционируют, якобы запатентованные). Так вот им МТ даром не надо и ставить для моего эксперимента отказываются.

    Мое надоедание (понятно, что не работает только у меня) связанно со следующим –

    В свое время я проверил, из свободного доступа, штук 7 индикаторов по renko и пару ренжей, советники на этих графиках НЕ РАБОТАЮТ. Работают только на Синбаре (доработанном), но опять же на Синбаре НЕ «видны» ВСЕ входы и
    проблемы объемов ( накапливает на баре не корректно).

    На Тикколлекторе советнику «видны» ВСЕ входы, но сам принцип построения баров мне нужен, как у Синбара,
    а это я планировал переделать, но не могу.

    Проблема времени!

    // Формирование нового бара
    if (m_rates.time == 0 || IsNewBarByConvertType(time))
    {
    m_rates.open = bid;
    m_rates.close = bid;
    m_rates.high = bid;
    m_rates.low = bid;
    m_rates.tick_volume = 1;
    m_rates.time += time; // += работает
    }



    Т.е. если я делаю «разрыв по времени», то HistoryBase: 2 errors in 'EURUSD313' идет, но график продолжает строиться ( в отличии от штатного «=», который у меня «слетает» - в качестве примера показывал, что например BearBullBalance перестает работать) и все таки, как мне кажется, в этом случае, не все входы «видны». Соответственно переделка (плюс к «слету») у меня не получится, т.к. я не знаю, как исключить «наложение» баров по времени» и не уверен, что в этом причина, в не в Windows например.
    Я рассчитывал, что можно, что-то сделать, но «слетает» ТОЛЬКО у меня.


    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1471
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 14.04.15 18:00. Заголовок: Balbesik пишет: суд..


    Balbesik пишет:

     цитата:
    судя по всему он не работает только у меня ОДНОГО.


    К сожалению, не у тебя одного проявляется такая ситуация. Я ведь подтверждал получение подобной ошибки. У меня она тоже иногда воспроизводится. Но вот ни вчера, ни сегодня добиться ее воспроизведения не удалось. Уже даже всю доступную тиковую историю конвертировал в равновысокий график с высотой 5 пунктов, перезагрузил МТ, а графикам хоть бы хны - отображаются нормально, обновляются, ошибок в журнале нет.

    Правда сегодня на обеих парах зафиксировал другой баг - появление "черточек" (свеча единичного объема, у которой H=L=O=C) вместо свечей. Появляются такие баги только в процессе обновления графиков. Если перезапустить индикатор с теми же параметрами, то свечи магическим образом появляются.

    К сожалению, сам пока в шоке от этих багов, т. к. совершенно не понимаю, в какую сторону копать.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 232
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 14.04.15 19:50. Заголовок: Scriptong пишет: Пр..


    Scriptong пишет:

     цитата:
    Правда сегодня на обеих парах зафиксировал другой баг - появление "черточек" (свеча единичного объема, у которой H=L=O=C) вместо свечей.



    Это и есть "слет" и объем у всех черточек = 1.

    Именно таким образом он проявляется, я об этом писал.
    Но в журнале должна идти ошибка!

    Scriptong пишет:

     цитата:
    то свечи магическим образом появляются.



    Да так, только далее не работает.
    И на эту историю индикатор повторно ставишь, он не работает.

    m_rates.time += time; - если сделать вот такое изменение -
    да пару свечей появится и тут же продолжит корректно работать.
    Хотя в журнале и будет ошибка и периодически она повторяться.
    Свечи строятся и с объемом и советник как-то работает.

    Проблема времени и как ее решать не понятно, т.к.
    построение то можно получить, но
    советник работать не будет на таком графике.

    Какая-то связь "жесткая" нужна с минутным графиком?

    Другими словами, как бы необходимы "виртуальные" бары, а
    с другой связь с минуткой по времени. Как-то так.
    Непростые эти графики.



    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1475
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 15.04.15 21:38. Заголовок: Balbesik пишет: Как..


    Balbesik пишет:

     цитата:
    Какая-то связь "жесткая" нужна с минутным графиком?


    Уже писал выше - нет.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 233
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 15.04.15 21:58. Заголовок: Scriptong пишет: Уж..


    Scriptong пишет:

     цитата:
    Уже писал выше - нет.




    Вот в таком виде "слета" нет.
    Исключаю по времени наложения баров.


    if (!m_isActive)
    return true;

    datetime me;

    if (m_rates.time == 0)
    {
    m_rates.open = bid;
    m_rates.close = bid;
    m_rates.high = bid;
    m_rates.low = bid;
    m_rates.tick_volume = 1;
    m_rates.time = time;
    }

    me = m_rates.time;

    // Обновление данных текущего бара
    m_rates.high = MathMax(m_rates.high, bid);
    m_rates.low = MathMin(m_rates.low, bid);
    m_rates.close = bid;
    m_rates.tick_volume++;

    //+---
    // if (IsNewBarByConvertType(time) && me == time)
    // {
    // m_rates.open = bid;
    // m_rates.close = bid;
    // m_rates.high = bid;
    // m_rates.low = bid;
    // m_rates.tick_volume = 1;
    // m_rates.time = time+1; // += работает
    // }

    // me = m_rates.time;
    //+---

    // Формирование нового бара
    if (IsNewBarByConvertType(time) && me != time)
    {
    m_rates.open = bid;
    m_rates.close = bid;
    m_rates.high = bid;
    m_rates.low = bid;
    m_rates.tick_volume = 1;
    m_rates.time = time; // += работает
    }
    // Продолжение формирования бара
    else
    FileSeek(m_fileHandle, -m_ratesSize, SEEK_CUR);

    me = m_rates.time;

    График строится нормально, правда попадаются "двойные" бары по высоте.
    "Слета" нет.
    Но советник "НЕ ВИДИТ" всех входов и чем дольше стоит,
    тем меньше "видит" советник входов.
    Предполагаю возрастает рассогласование по времени
    (хотя странно - согласование на втором шаге me = m_rates.time; заложил,
    но возможно связано с записью истории)

    Поэтому считаю, есть связь с минутным графиком.
    Да можно увеличивать количество пунктов в баре (заведомо более минутного),
    но тогда нивелируется сам смысл равновысокого бара.


    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1478
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 15.04.15 22:13. Заголовок: По всей видимости, я..


    По всей видимости, я нашел причину. Следи за развитием, начиная отсюда.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 234
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 16.04.15 14:51. Заголовок: Добрый день, Игорь! ..


    Добрый день, Игорь!

    У меня нет регистрации на МТ4, есть только на МТ 5, а на МТ 4 она не работает.
    Поэтому пишу здесь.

    komposter :
    «…Бары в черточки не превращались, но ошибка в журнале была…» -
    есть такое, если в Тикколлекторе сделать m_rates.time += time;

    Я согласен с тобой, что что-то «подкрутили».

    Я пробовал Андрея (komposter ) equalvolumebars – уже последний доработанный –
    Все красиво у equalvolumebars и ренджи и эквиобъемы строятся более менее корректно и
    объемы, кажется, корректно набирают его бары и
    индикаторы рисуются (правда у меня на нем масштабирование индикаторов «плывет»)

    Но у меня советник его вообще «не видит» (что только не делал,
    именно твой советник «не видит», который «видит» твои графики и график Синбара,
    не исключаю, что вообще-то советник может и не должен работать - не смотрел)!

    Кроме этого у меня советник на Синбаре работал без вопросов,
    теперь советник на нем «не видит» от 50 до 75 % входов.

    Предполагаю, если эта «подкрутка» направленна на борьбу с высокоскоростными работами (по просьбе «кухонь») –
    блокировка работы внутри минутного бара, то ответа от МТ маловероятно,
    что добьёшься – если это так, то это не будет противоречить целям Заказчиков.

    Красота графика меня вообще не волнует, если нельзя применить советник.

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

    P.S.

    Попробовал штатные советники на equalvolumebars в режиме рендж.
    Не идут, видимо закрыт для советников.
    Надо разбираться, не хочу.
    Пока продолжаю считать, что согласование по времени для равновысоких значимо.



    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 235
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 16.04.15 20:30. Заголовок: Еще проверил. Карти..


    Еще проверил.

    Картинка работа equalvolumebars в режиме ренджей.



    Картинка работа Тикколлектора.




    Не даем формирования нового бара - идет рост, нет "слета", журнал чист.
    Если на Тикколлекторе сделать гибрид - со сдвигом по времени,
    то наложение работы по времени и со сдвигом приводит к "слету".

    Предварительная картинка - грустная, а точнее мрачная для меня.

    Смысл ренджей теряется.
    МТ всегда были противники нестандартных графиков подобного типа.


    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1485
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 16.04.15 21:00. Заголовок: Как раз Андрей Хатим..


    Как раз Андрей Хатимлянский в той ветке, на которую я дал ссылку, утверждает, что так в МТ было всегда. С этой проблемой он сталкивался еще при разработке эквиобъемных графиков. Проблема заключается в том, что МТ хронически не переносит, когда две и более свечей имеют одно и то же время открытия. Отсюда и ошибки в журнале, и "черточки" на графике.

    Проблема решается одним единственным способом - использованием времени "с потолка". То есть как только получается вторая свеча, дублирующая по времени открытия предыдущую, то она получает другое время (большее). При таком подходе временная шкала нестандартного таймфрейма не будет отражать реальное время открытия свечей, часто убегая в будущее.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 236
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 16.04.15 21:56. Заголовок: Scriptong пишет: ак..


    Scriptong пишет:

     цитата:
    ак раз Андрей Хатимлянский в той ветке, на которую я дал ссылку, утверждает, что так в МТ было всегда. С этой проблемой он сталкивался еще при разработке эквиобъемных графиков. Проблема заключается в том, что МТ хронически не переносит, когда две и более свечей имеют одно и то же время открытия. Отсюда и ошибки в журнале, и "черточки" на графике.

    Проблема решается одним единственным способом - использованием времени "с потолка". То есть как только получается вторая свеча, дублирующая по времени открытия предыдущую, то она получает другое время (большее). При таком подходе временная шкала нестандартного таймфрейма не будет отражать реальное время открытия свечей, часто убегая в будущее.



    Значит проблема в другом.

    Наложение баров возможно и было.
    Я писал, что в Синбаре идет сдвиг на 1 – i_time+=1;
    Это не проблема.

    Синбар в режиме реального времени накапливал объем на баре и не пропускал входы!
    Сейчас это не так. Бары совпадающие по времени сейчас имеют объем = 1 –
    раньше этого не было – щел корректный набор объема. Входы не пропускались.

    Тикколлектор так же не пропускал входы.
    Сейчас это не так.

    Для Тикколлектора не надо времени "с потолка", достаточно запретить
    формирование нового бара, если есть совпадение по времени –
    будет тоже самое (картинки я привел) и даже лучше,

    Что-то МТ изменили, мне более нравится твоя версия –
    запретили (скрыли) бары внутри минуты.

    Да, как я и писал, можно делать, что-то «большое» и будет работать.
    Но смысл теряется.

    Мне, допустим, для расчетов нужны виртуальные бары (а они не стали видны),
    а другим необходим, допустим, пример МА по более раннему входу и т.д.

    Т.е. масса вариантов, которые «кухням» не нужны.

    Еще раз – это «кухонная» и наглая контора – МТ называется.

    Буду думать - надо заставить советник работать по времени "с потолка",
    а как не знаю, т.к. использую бары истории, а они похоже теперь
    привязаны к минутному графику, как минимум.
    Советник значит должен понимать "время с потолка", т.е.
    это другой какой-то формат данных для советника.
    То, что не знаю и не понимаю.

    Если брать за аналог по времени "с потолка" equalvolumebars,
    то, как я уже писал, там не просто масштабирование, а порядки,
    да и котировки в 4 знаке не случайны.
    Похоже дебри.

    Зато как здорово - до бесконечности можно постоянно
    что-то переделывать, доделывать и т.д.
    "Еб.. в собственном соку до второго пришествия" и
    про биржу можно забыть (есть же занятие).

    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1488
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 20.04.15 15:51. Заголовок: Balbesik пишет: Для..


    Balbesik пишет:

     цитата:
    Для Тикколлектора не надо времени "с потолка", достаточно запретить
    формирование нового бара, если есть совпадение по времени –
    будет тоже самое (картинки я привел) и даже лучше,


    В таком случае будет пропущен один или более баров, на графике возможно появление гэпов. Может, не делать такого?

    Пока у меня назрело следующее решение. В тех случаях, когда бары накладываются друг на друга, время будет уходить в будущее (это если движение было сильным). С приходом новых тиков и успокоением рынка накладки баров будут сходить на нет. В итоге можно будет, начиная с такого времени, ставить новые бары на свои места, т. е. сдвиг в будущее постепенно ликвидируется. На мой взгляд, это наилучшее решение. Правда оно не учитывает таймфреймов с периодом менее минуты. Там постоянно будет сдвиг в будущее.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 238
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 20.04.15 23:29. Заголовок: Scriptong пишет: В ..


    Scriptong пишет:

     цитата:
    В таком случае будет пропущен один или более баров, на графике возможно появление гэпов.
    Может, не делать такого?



    Пропусков то нет, если сильное движение или геп на реале, конечно появиться «длинный» бар,
    который конечно портит всю картину и теряется смысл ренж баров.

    Картинка просто для примера –



    Scriptong пишет:

     цитата:
    Пока у меня назрело следующее решение. В тех случаях, когда бары накладываются друг на друга,
    время будет уходить в будущее (это если движение было сильным).
    С приходом новых тиков и успокоением рынка накладки баров будут сходить на нет.
    В итоге можно будет, начиная с такого времени, ставить новые бары на свои места,
    т. е. сдвиг в будущее постепенно ликвидируется.
    На мой взгляд, это наилучшее решение.



    Это решение.
    Просто я его не смог реализовать.
    Если я пытался совместить при совпадении «пропуск» формирования нового бара и
    сдвиг по времени, то получал «слет».
    Но я не программист и даже толком не представляю возможностей языка.
    Насколько понимаю сдвиг по времени влево или вправо все равно приводит
    к наложению или в будущем или перерисовки в прошлом, что приводит к «слету».

    Scriptong пишет:

     цитата:
    Там постоянно будет сдвиг в будущее.



    А вот тут подходим к самому главному.

    Как я уже писал, допустим при сильном движении или гепе на реале построитель рисует,
    при равновысоких, дополнительные бары, что позволяет, помимо расчетов,
    делать более ранние входы допустим по МА.

    Как я предполагаю эти дополнительные бары –
    «виртуальные» в этом случае советник их просто «не видит».

    Насколько мне известно Тикколлектор единственный построитель,
    в свободном доступе, на котором работают советники.

    В Синтетических барах так и написано, что не предназначен для реала (в нем тоже есть сдвиг по времени).

    Андрей (komposter ) писал, что equalvolumebars – не работает на офф-лайн графиках и
    для реализации работы требуется доработка самих советников.

    Я не представляю о чем речь.

    Соответственно сдвиг по времени в этом плане меня смущает.

    Если возможна доработка Тикколлектора с учетом этих проблем, конечно это очень интересно.
    Ну и конечно (для примера, в реализации которого у меня сомнения
    или очень сложно или строго равновысокого не получить ) реализовать начало нового бара с
    Клозе предыдущего (бар виртуальный) –
    исключить «разрывы» при построении равновысоких баров (появятся дополнительные
    бары с т.з. равновысоких, что более корректно).



    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1494
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 21.04.15 18:35. Заголовок: Balbesik пишет: Нас..


    Balbesik пишет:

     цитата:
    Насколько понимаю сдвиг по времени влево или вправо все равно приводит
    к наложению или в будущем или перерисовки в прошлом, что приводит к «слету».


    Для того сдвиг в будущее и делается, чтобы исключить наложение баров. Поэтому проблема будет решена.

    Balbesik пишет:

     цитата:
    Как я предполагаю эти дополнительные бары –
    «виртуальные» в этом случае советник их просто «не видит».


    Эти бары вовсе не виртуальные, а самые настоящие. Просто с ними еще никто не имел дело (недоработка сборщика тиков, которую я планирую в ближайшее время устранить).

    Balbesik пишет:

     цитата:
    Насколько мне известно Тикколлектор единственный построитель,
    в свободном доступе, на котором работают советники.


    В нем просто добавлено пару строк, которые запускают обновление советников на оффлайн-чарте в момент прихода очередного тика. Потому советники и работают.

    Balbesik пишет:

     цитата:
    Ну и конечно (для примера, в реализации которого у меня сомнения
    или очень сложно или строго равновысокого не получить ) реализовать начало нового бара с
    Клозе предыдущего (бар виртуальный) –
    исключить «разрывы» при построении равновысоких баров (появятся дополнительные
    бары с т.з. равновысоких, что более корректно).


    Эту тему мы уже поднимали, но так и не пришли к какому-либо решению, т. к. ни ты сам, ни, тем более, я не можем понять, что же требуется.



    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1496
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 22.04.15 14:26. Заголовок: Сборщик тиков исправ..


    Сборщик тиков исправлен. Используй новую версию.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 244
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 22.04.15 16:51. Заголовок: Scriptong пишет: Сб..


    Scriptong пишет:

     цитата:
    Сборщик тиков исправлен. Используй новую версию.



    Здорово!

    Буду пробовать.
    Но сейчас по проблематике возникает вторая проблема.
    Советник не "видит" всех входов.
    Ты использовал 60 секунд.
    Я пробовал на 1 секунде и 60 секунд.
    На 1 секунде даже лучше, но проблема не решается.
    Посмотрю в твоем варианте.
    И планирую на Синбаре проверить под МТ5 (у меня есть построитель под МТ5).
    Что-то у меня подозрение, что сделано специально, чтобы "загнать" на МТ5 (цель только не ясна).
    Использую JustZigZag_Evg_Signal, который мы брали для единообразия результатов.
    И в Тикколлекторе 3 пункта для равновысоких, чтобы быстрее.

    if (!m_isActive)
    return true;

    datetime me = 0;

    if (m_rates.time == 0)
    {
    m_rates.open = bid;
    m_rates.close = bid;
    m_rates.high = bid;
    m_rates.low = bid;
    m_rates.tick_volume = 1;
    m_rates.time = time;
    }

    me = m_rates.time;

    // Обновление данных текущего бара
    m_rates.high = MathMax(m_rates.high, bid);
    m_rates.low = MathMin(m_rates.low, bid);
    m_rates.close = bid;
    m_rates.tick_volume++;

    // Формирование нового бара
    if (IsNewBarByConvertType(time) )//&& me != time)
    {
    m_rates.open = bid;
    m_rates.close = bid;
    m_rates.high = bid;
    m_rates.low = bid;
    m_rates.tick_volume = 1;
    m_rates.time = me+1;
    }
    // Продолжение формирования бара time+=1;
    else
    FileSeek(m_fileHandle, -m_ratesSize, SEEK_CUR);

    me = m_rates.time;

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





    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 245
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 22.04.15 17:57. Заголовок: Что и ожидал. Но уже..


    Что и ожидал.
    Но уже любопытно.
    Советник MultiIndicators_AutoOptimize_Expert пропускает только сделки Sell.
    Буду проверять на другом советнике (не исключаю проблема в советнике).
    Кроме этого полагаю, что работа советников привязана к реальному времени сервера,
    соответственно должно пройти накопление по сдвигу и проблема возрастет.

    P.S.

    Забыл добавить - даже стрелочки на индикаторе пропускаются.



    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 246
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 22.04.15 23:28. Заголовок: Кажется картинка про..


    Кажется картинка проясняется.
    Уже намного веселее.

    Взял два готовых советника.
    Первый с вписанным индикатором и этот же индикатор отдельно.
    Второй с обращением к индикатору через iCustom.
    Индикатор один и тот же.

    Первый советник работает корректно.
    "Видит" все входы.
    На индикаторе все стрелочки отображаются.

    Второй делает в противоположность лишние входы.
    На индикаторе стрелочки пропускаются.
    Что-то типа дребезга по входам.

    Оставляю первый советник на проверку "накопления сдвига".

    Предварительный вывод -

    Для равновыских баров советники работающие через
    обращение к индикатору (индикатор не вписан в советник)
    НЕ применимы


    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 247
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 23.04.15 22:24. Заголовок: Кажется и с iCustom..


    Кажется и с iCustom запустил!

    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1498
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 24.04.15 13:14. Заголовок: Balbesik пишет: Для..


    Balbesik пишет:

     цитата:
    Для равновыских баров советники работающие через
    обращение к индикатору (индикатор не вписан в советник)
    НЕ применимы


    Вывод неверный. iCustom тут не при чем. Проблема в том, что множество индикаторов разрабатывается для стандартных таймфреймов. Нужно лишь проанализировать суть того или иного индикатора и, если он не учитывает возможность работы на нестандартном ТФ, то либо не использовать его, либо доработать. Вот, к примеру, стандартные индикаторы (те, которые встроены в МТ4) в полном составе могут работать с нестандартными ТФ.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 248
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 24.04.15 14:29. Заголовок: Scriptong пишет: Вы..


    Scriptong пишет:

     цитата:
    Вывод неверный. iCustom тут не при чем.



    Причем, Игорь, поверь причем.

    Да, как у тебя написано (более 10 пунктов) имеет место быть (мало этого, это существенно).
    А с т.з. специфики биржи, это не о чем, но для расчетов это очень о чем!
    Ладно вопрос регулируемый.
    Т.е. он решаемый.
    Остался 3 вопрос (и последний) - построение баров.
    На мои взгляд, твой вариант, вообще ни о чем.
    Я (лично сиысла не вижу), не "догоняю" цель такого построения.
    Что под этим заложено (какой смысл, "на пальцах")?
    Пока твое построение практически не отличается от временного (для меня).
    Да ты прав если я "годовой" инвестор, но нет у меня таких денег.

    P.S.
    Были сомнения вот в этом -
    RefreshRates(); - кстати, сначало мне показалось, что
    влияет на время, но "Осуществляет обновление данных в предопределенных переменных и массивах-таймсериях."
    что-то у меня сомнения, кстати имею право на ошибку - у меня "школа" другая.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 253
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 24.04.15 19:54. Заголовок: Balbesik пишет: Лад..


    Balbesik пишет:

     цитата:
    Ладно вопрос регулируемый.
    Т.е. он решаемый.



    Вот не голословка.
    Взял Интегра (вписанный индикатор, чтобы не спорить).

    Накопление по памяти -





    Не "видит" -



    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1505
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 27.04.15 22:11. Заголовок: Balbesik пишет: Вот..


    Balbesik пишет:

     цитата:
    Вот не голословка.


    Уже много раз писал: для решения нужны детали. Что толку от рисунка? Необходимо:
    1. Код этого eMACross_Trade.
    2. Настроечные параметры (set-файл).
    3. Параметры равновысоких баров.
    4. Тиковая история, по которой строились эти равновысокие.

    При наличии таких данных есть шанс, что проблема может быть решена, т. к. корень ее, скорее всего, в советнике (индикаторе).



    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 249
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 24.04.15 15:05. Заголовок: Вот мне интересно - ..


    Вот мне интересно -
    давно для микроструктуры бара, пошел даже Зиг Заг внутри
    бара (я не призываю к высокоскростным роботам, когдв скорость света конечна и
    если ты "далек" - на Урале от биржи это заведомый проигрыш -
    хотя используемые ими агоритмы проще "3 рублей").
    Но поверь - "не догоняю" смысла выбранного тобой для построения равновысокого.
    А вдруг там ГРААЛь на "халяву".
    Если он только меня интересует - то напиши - что другим не надо.

    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1506
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 27.04.15 22:15. Заголовок: Balbesik пишет: Но ..


    Balbesik пишет:

     цитата:
    Но поверь - "не догоняю" смысла выбранного тобой для построения равновысокого.


    Что именно не так с алгоритмом? Равновысокие бары (они же - range-бары) - это бары с фиксированной высотой. Как только бар достиг этой высоты, строится другой бар. Исключение: когда в баре сформировано n - 1 пунктов высоты (n - заданная высота бара) и появляется новый тик с гэпом 2 и более пунктов, то будет либо недостроенный равновысокий бар (с высотой менее n пунктов) - новый тик перенесен на следующий бар, либо бар с высотой более n пунктов - новый тик внесен в текущий бар.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 254
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 24.04.15 20:01. Заголовок: Игорь! Меня интересу..


    Игорь!
    Меня интересует только возможность реализации 3 вопроса.
    На твое усмотрение.
    Остальное решается.

    P.S.

    Если разорвать соизмеримость JustZigZag_Evg_Signal с баром и увеличить бар.
    Все работает идиально!

    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1507
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 27.04.15 22:15. Заголовок: Balbesik пишет: Есл..


    Balbesik пишет:

     цитата:
    Если разорвать соизмеримость JustZigZag_Evg_Signal с баром и увеличить бар.
    Все работает идиально!


    Это как?

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 255
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 28.04.15 00:53. Заголовок: Scriptong пишет: Эт..


    Scriptong пишет:

     цитата:
    Это как?



    Ну не умею объяснять.

    Но т.к. косвенно связано с 3 вопросом
    (который я не могу программно корректно решить),
    то попробую со своего понимания и наблюдений.

    Начну наверное с того, что, например, на фонде
    есть стакан (на МТ тоже, что-то подобное появилось).
    Из стакана видно, что есть зоны цены, где как бы нет ни спроса не предложения,
    т.е. нет покупателей и нет продавцов, но и нет спреда.

    На форексе, как бы этот вопрос решается путем спреда –
    как бы купить или продать то можно в любой момент, но со спредом.

    Или например Геп – внутри гепа не купить не продать (вот тут, например,
    связь с 3 вопросом, когда желательно бары построить, но их как бы
    не может быть и открыть позицию невозможно, хотя они, для меня,
    играют существенную роль для расчетов – я их называл «виртуальные»).

    Биды друг от друга, по проходу расстояния цены могут существенно отличаться,
    но так или иначе в рамках спреда.
    Если я беру, «для понимания», размах равновысокого бара 3 – 5 пунктов,
    а биды друг от друга «летают»
    допустим 10 пунктов вверх - вниз, то появляются участки,
    когда «входы» просто «пропускаются или искажаются»,
    т.к. не видны или советник «не понимает», что делать.

    Поэтому я и писал – бар – заведомо больше спреда.

    Соизмеримость с бара с ЗигЗагом (одно количество пунктов) –
    если попадается участок, когда например сигнал вниз, а на следующем баре сразу вверх,
    то или пропуск одного из входов, или закрытие открытой позиции по встречному сигналу,
    но новая не открывается – «свистопляска» - советник «глючит».

    И есть еще момент.

    Если я правильно понял RefreshRates() – обновляет по данным,
    которые мы сами сформировали в файле EURUSD.tks (например).

    Тогда нет разницы брать 60 секунд или 1 секунду на сдвиг????

    Если я беру 1 секунду, зная высоту бара – путь и время открытия
    предыдущего и последующего баров (время формирование бара) выходим
    на скорость для равновысоких
    или (по аналогии физики) принимая объем за массу и время открытия
    предыдущего и последующего баров (время формирование бара) выходим
    на импульс для равнообъемных.

    Хотя я не знаю, возможно это не интересно (как-то привязать время к равнообъемным
    и равновысоким) – расширить возможности Тикколлектора (или это просто лишнее),
    т.е. это не надо,
    но знаю одно – да равновысокие сейчас строятся по логике работы биржи и
    с алгоритмом все правильно - идет построение реальных баров,

    но для расчетов «разрывы» по барам, как-то не смотрятся.

    Это старый 3 последний вопрос (последний ?????) -
    возможно ли сделать "некорректно" - связать по ценам-
    Клозе +1= Опен 0 (не Бид) и высота бара "жесткая"
    (некий пересчет по Бидам - когда по между соседними Бидами "вмещается"
    несколько баров заданного размаха - если так сложилось),
    что приведет к появлению дополнительных (виртуальных) баров.

    Как реализовано в Синбаре, частично у Компостера,
    в старых индикаторах рендж баров.
    Пусть просто, хотя бы, в виде примера (части алгоритма)
    на форуме .



    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1511
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 28.04.15 13:01. Заголовок: Вроде бы понял, что ..


    Вроде бы понял, что ты имеешь в виду. Тебе нужно строить range-бары без искажений, которые дают реальные тики. То есть, если был гэп между тиками (даже если 2 пункта, то уже гэп), то на построении баров это никак не сказывается - бар закрывается по той цене, по которой он должен был бы закрыться с учетом заданной высоты, также при этом открывается новый бар по цене закрытия предыдущего и бар сразу прирастает на разность между предыдущим и текущим тиками. То есть тика такого не было, но на графике мы его отображаем в виде цен закрытия и открытия двух соседних баров.
    Более интересная картинка выходит на больших гэпах. Например, задана высота range-бара 5 пунктов, а гэп - 30 пунктов. В итоге за один такой тик выстраивается 6 range-баров.

    Правильно я понял мысль?

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 256
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 28.04.15 19:13. Заголовок: Scriptong пишет: Пр..


    Scriptong пишет:

     цитата:
    Правильно я понял мысль?



    Игорь!

    Абсолютно правильно!

    Вроде бы считается, чтобы рассчитать функцию – она должна быть непрерывна.
    Некая аналогия.



    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1516
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 29.04.15 15:17. Заголовок: Мысль ясна. Это что-..


    Мысль ясна. Это что-то типа "графика без дыр", которую реализовал тот же komposter.

    Как-нибудь реализую. Единственное - сроки указать не могу.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 257
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 30.04.15 19:15. Заголовок: Scriptong пишет: Мы..


    Scriptong пишет:

     цитата:
    Мысль ясна. Это что-то типа "графика без дыр", которую реализовал тот же komposter.

    Как-нибудь реализую. Единственное - сроки указать не могу.



    Пару дней молчал и на форум (демонстративно) заходил.

    Весело, конечно.

    Игорь !
    Чтобы -что понять надо ходябы уровень

    Игорь!
    Это называется "блатная Распральцовка"

    Политика здесь не обсуждается. Admin

    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1519
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 30.04.15 21:15. Заголовок: Balbesik пишет: Это..


    Balbesik пишет:

     цитата:
    Это называется "блатная Распральцовка"


    Конечно, распальцовка.
    Только вчера я понял, что требуется сделать, а сегодня уже нужно было выложить готовое отлаженное решение с описанием. Дел у меня никаких нет, сижу в потолок плюю. Жду, когда же у меня Balbesik попросит что-то сделать. И вот так опростоволосился - за целые сутки ничего не сделал.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 258
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 09.05.15 14:01. Заголовок: Поздравляю всех с пр..


    Поздравляю всех с праздником!

    У меня мама и отец воевали!
    Для меня это праздник!

    Спасибо: 1 
    Профиль
    Genry
    постоянный участник




    Сообщение: 1799
    Зарегистрирован: 04.03.13
    Откуда: Москва
    Репутация: 3
    ссылка на сообщение  Отправлено: 09.05.15 15:14. Заголовок: Спасибо! И Вас с наш..


    Спасибо! И Вас с нашим общим Праздником!

    С уважением! Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 259
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 13.05.15 19:35. Заголовок: Привет, Игорь! Давно..


    Привет, Игорь!
    Давно тебя знаю и каждый из нас с характером.
    Во первых не вчера, а намного раньше – «что требуется сделать».
    Вот это – «Единственное - сроки указать не могу.» - этого хамства -
    хватило «одной таблетки».
    А у Balbesik тоже более никаких дел нет,
    кроме как постить на форуме Scriptong и делать ему рекламу.
    Да забыл, что только сегодня я родился и не знал,
    что надо «отлаженное решение с описанием.»
    (а без отладки, в виде схемы на форуме (как просили), это просто опустили,
    за ненадобностью заинтересованных лиц ).
    Ладно, плевать, я Игорь действительно к тебе отношусь с уважением.
    Ты ПРОФИ а их, в любом раскладе я уважаю.
    Теперь по делу –
    Меня мало беспокоит, что будешь, что – то делать или нет.
    (мне хватило, как ты делал «по моей просьбе» по обьему –
    более иллюзий не питаю, если бы я не напоминал каждый месяц,
    видимо года за Два (может быть) и появилось (как требовалось)
    что-либо в виде ДВУХ строчек)
    Я тебе писал, что твой вариант «равновысоких» ни о чем,
    на мой взгляд он не отличается от временного ни чем.
    А вот теперь (твоя ссылка на МТ5) –
    Это о чем?
    "...
    123 2015.04.27 12:44 #
    Renat:
    Преимущество ГА от специализированных(базирующихся на предварительном/частичном знании поведения исследуемой функции) в том, что она более универсальна и эффективна в режиме поиска в рваном пространстве, чем и являются торговые системы.
    Грубо: в торговых системах обычно мизерное изменение параметров полностью рвет результат, что портит жизнь градиентным алгоритмам, надеющимся на гладкость функции.


    При оптимизации ТС ищутся именно "гладкие" области. Искать еще другие области не только бессмысленно, но и вредно. Если посмотреть любую рваную область конечных результатов ТС с великолепными по размеру экстремумам, то очевидно же, что эти области носят случайный (точно не робастный) характер. Или я ошибаюсь снова?

    Эвристик торговых систем (для них же в первую очередь оптимизатор создавался) должен хорошо находить именно "гладкие" локальные экстремумы в рваном пространстве ТС.

    ..."
    Это о том, что в математике и у меня называется "разрыв".
    Это о том, что любой "штатный" индикатор можно отправить "в туалет"

    Ты автор советника (и лучше автора никому не сделать).
    "Компостер" ни при делах (работа без "дыр") -
    там есть точка отсчета - время.
    Но можно сделать - "красиво".


    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1545
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 13.05.15 20:02. Заголовок: Balbesik пишет: Вот..


    Balbesik пишет:

     цитата:
    Вот это – «Единственное - сроки указать не могу.» - этого хамства


    Ну если ты это называешь хамством... Мною просто и честно было показано, что я не имею представления, когда у меня на эту работу появится время. Для интереса посмотри, сколько я уже развиваю другие темы форума, с той же дивергенцией. Новые версии в последнее время выходят все реже и реже, потому что у меня на эту работу катастрофически не хватает времени. Я сейчас в такой ситуации, что программированием "для форума" занимаюсь только на выходных (максимум 1 день в неделю). В итоге то, что раньше мною делалось за неделю, создается в течение месяца, а то и двух. Если же учесть, что сейчас весеннее время, когда просто грех не погулять на выходных с детьми, то эти "1 день в неделю" сокращаются до 0.5 дня или даже 0 дней.

    В рабочие дни я занимаюсь только основной работой, за счет которой кормлю семью. В небольшие перерывы позволяю себе ответить тому или иному человеку на форуме.

    На то, что ты называешь небольшим исправлением TicksCollector (две строчки - ха-ха), требуется не менее 2-3 рабочих дней. Но, опять же, честно скажу, за него я еще не принимался, т. к. давно работаю над сканером дивергенций и хочу его закончить.

    Возьмусь ли за переделку TicksCollector, уже и не знаю. Ты пока единственный человек, которому это нужно. Ну а самое главное, твое "уважение" очень странное. Любой другой человек уже давно бы послал такое "уважение" куда подальше, но я, почему-то, еще терплю.

    Balbesik пишет:

     цитата:
    кроме как постить на форуме Scriptong и делать ему рекламу.


    Форум создан не ради рекламы. Ни с него, ни с сайта, в финансовом плане я ничего, кроме затрат, не имею. То, что ты видишь баннеры, это не более, чем дань моде.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 260
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 13.05.15 20:17. Заголовок: Scriptong пишет: Во..


    Scriptong пишет:

     цитата:
    Возьмусь ли за переделку TicksCollector, уже и не знаю. Ты пока единственный человек, которому это нужно. Ну а самое главное, твое "уважение" очень странное.


    Да нет, Игорь.
    Возможно менталитет, возможно возраст.
    Почему "пока единственный человек, которому это нужно" -
    да "школа" у нас с тобой "другая" - старая.
    Меня поражает "им туфту впаривают, а ПИПЛ хавает",
    там даже по математике не "катит", ну никуда,
    при разрыве ни один "калькулятор" не работает -
    это аксиома не требующая доказательств!

    P.S.
    Да не проблема.
    Возьму Синбар, как "рыбу", но там вроде "ровно", но есть "обрезание".
    Если будут проблемы обращусь.

    Другая ситуация - согласно твоей ссылки там 64 , а более чем интересно.
    Придется тебе Игорь, все что делал, по отдельному соглашению все
    переписывать под МТ5!
    Естественно если ты согласишься.

    P.S.
    Кстати по "дивергенции" -
    "под заказ" где надо там она и будет -
    перестань "херней" заниматься или
    по серьезному - где "0" или методика точки отсчета.
    Если ты решишь подобную задачку -
    тут (у тебя) будет весь мир (без шуток).

    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1546
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 14.05.15 14:19. Заголовок: Balbesik пишет: Воз..


    Balbesik пишет:

     цитата:
    Возможно менталитет, возможно возраст.


    Просто уже надоело, что от тебя в свой адрес регулярно получаю ушат помоев (это все я удаляю с форума). А потом ты оправдываешься, что "был пьян". Но мне-то по сообщениям не видно, какое там у тебя состояние. Так что проблему "уважения" можешь решить только ты сам.

    Balbesik пишет:

     цитата:
    Другая ситуация - согласно твоей ссылки там 64 , а более чем интересно.
    Придется тебе Игорь, все что делал, по отдельному соглашению все
    переписывать под МТ5!


    Вполне возможно. Тут уже все зависит от политики MetaQuotes. Если в МТ5 действительно можно будет синтезировать свои символы с историей штатно и достаточно удобно, то это станет одним из пряников, который заманит на него множество трейдеров и программистов (меня в том числе). Но, к слову, хорошо, что MQL4 подтянули к уровню MQL5. Поэтому на переписывание множества программ уйдет не так и много времени. Основные проблемы будут только при переводе советников.

    Balbesik пишет:

     цитата:
    Кстати по "дивергенции" -
    "под заказ" где надо там она и будет -
    перестань "херней" заниматься или
    по серьезному - где "0" или методика точки отсчета.
    Если ты решишь подобную задачку -
    тут (у тебя) будет весь мир (без шуток).


    Здесь, к сожалению, не понял, о чем речь. Точнее понял, что речь о дивергенциях и с ними что-то не так.

    Кстати, дивергенции - очень даже неплохой инструмент. С их помощью торгую уже на протяжении трех месяцев. Да, это не Грааль, но на хлеб с маслом они дают.



    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 262
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 19.05.15 19:32. Заголовок: Scriptong пишет: То..


    Scriptong пишет:

     цитата:
    Точнее понял, что речь о дивергенциях и с ними что-то не так.



    Уверен, что понял и все понятно, что я имел в виду.

    Scriptong пишет:

     цитата:
    Кстати, дивергенции - очень даже неплохой инструмент.



    Полностью согласен.

    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1554
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 20.05.15 08:37. Заголовок: Balbesik пишет: Уве..


    Balbesik пишет:

     цитата:
    Уверен, что понял и все понятно, что я имел в виду.


    Мне бы твою уверенность

    Кстати, смотрел - Эквиобъемные и range-бары в тестере стратегий? Вроде бы ты говорил, что тебя тестирование на нестандартах интересует.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 263
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 21.05.15 08:22. Заголовок: Scriptong пишет: Кс..


    Scriptong пишет:

     цитата:
    Кстати, смотрел - Эквиобъемные и range-бары в тестере стратегий? Вроде бы ты говорил, что тебя тестирование на нестандартах интересует.



    Спасибо!

    Поудобней «штучка».

    Я писал, что эту проблему я решал через отдельный терминал для тестирования –
    Брал твою историю «загонял» тиковый временной график в терминал для тестирования – преобразовывал в равновысокий – «делал» файл равновысоких и заменял временной график на равновысокий график для тестирования.

    Здесь проще – меньше промежуточных действий.

    Вопросы - FXTFileMaker_AnyData_Script_AD – требует работу в тестере только при модели –
    Все тики (Рис 222), т.к. на других моделях идет временной график – так задумано?



    Как бы логично, если используем тики (но «нагрузка» на комп. возрастает).

    FXTFileMaker_AnyData_Script_AD – работает, как я понял, используя файл ".tks" который формирует TicksCollector, т.е. должны работать в паре. Тогда а нельзя ли, в виде функционала индикатора (чтобы не «заморачиваться» с датами и шло постоянное формирование файла для тестирования) прямо «вписать» FXTFileMaker_AnyData_Script_AD в TicksCollector – было бы еще удобней.

    Сейчас меня больше интересует TicksCollector построенный «без дыр».
    Рис. 000 – 313 – твой, 81 – Синбар (хотя он тоже иногда имеет «обрезание» бара делает).



    Если брать частичную аналогию например с дивергенцией – период «от лукового» и я не знаю и нигде не видел логичных критериев его выбора. Появление тиков само по себе «случайно», размер бара на временном графике «случаен» - надо же хоть одну «случайность» уменьшить,
    а тут еще и при «разрывах» (поэтому, получается, твой вариант построения равновысокого –
    тоже самое, что и временной – для меня).
    Соответственно любое изменение построения приводит к изменению периода (если он интересует).

    Для меня (одного) сделать корректные входные данные (как я их понимаю) это более значимо.

    Т.к. я пытаюсь сам переделать TicksCollector (а разработчик ты) меня интересует 2 вопроса (Рис. 111) –
    1. Простой - можно ли вот так объявить переменные или надо обязательно объявлять в классе?
    2. Главный - m_rates.time == 0 – в каком случае выполняется это условие?
    Вроде бы через MqlRates это время бара, но там вроде 0 не должно быть – не понимаю.




    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1555
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 21.05.15 09:11. Заголовок: Balbesik пишет: Воп..


    Balbesik пишет:

     цитата:
    Вопросы - FXTFileMaker_AnyData_Script_AD – требует работу в тестере только при модели –
    Все тики (Рис 222), т.к. на других моделях идет временной график – так задумано?


    Тестер - не моя разработка. Поэтому говорить, что я что-то задумал или нет - некорректно.
    Скрипт использует возможность (как бы недоработку МК, если параноидально считать, что они намеренно не дают возможности работы с нестандартными таймфреймами). Эта возможность возникает только при работе с тиками. При использовании других моделей тестирования тестер строит бары, исходя из заданного таймфрема, т. к. ему нужно переместиться не от одного тика к другому, а от открытия бара к открытию другого бара.

    Balbesik пишет:

     цитата:
    FXTFileMaker_AnyData_Script_AD – работает, как я понял, используя файл ".tks" который формирует TicksCollector, т.е. должны работать в паре. Тогда а нельзя ли, в виде функционала индикатора (чтобы не «заморачиваться» с датами и шло постоянное формирование файла для тестирования) прямо «вписать» FXTFileMaker_AnyData_Script_AD в TicksCollector – было бы еще удобней.


    Ты тут смешал мух с котлетами. TicksCollector не имеет практически никакого отношения к FXTFileMaker_AnyData. Никакой работы в пары не требуется: взял файл tks с сайта, конвертировал в FXT-файл, пользуйся. Автоматизирование этого процесса я не планирую, т. к. это не оффлайн-график, требующий постоянного обновления, это, все-таки, тестер.
    К слову, у меня до сих пор не доходят руки до автоматической сброски накопленных тиковых данных с сервера, собирающего тики, на сервер сайта, что намного нужнее.

    Balbesik пишет:

     цитата:
    Сейчас меня больше интересует TicksCollector построенный «без дыр».


    Это я помню. Чуть выше мы обсудили эту возможность и пока находимся в цейтноте.

    Balbesik пишет:

     цитата:
    Т.к. я пытаюсь сам переделать TicksCollector (а разработчик ты)


    Если касательно переделки в график без дыр, то там все не так уж и просто, я уже говорил. К примеру, доработка FXTFileMaker для возможности использования нестандартных ТФ в тестере казалась плевой (на пару часов, от силы), но в итоге заняла целый день. Нюансов оказалось вагон и маленькая тележка. Не уверен, что все нюансы и сейчас учтены.

    Balbesik пишет:

     цитата:

    меня интересует 2 вопроса (Рис. 111) –
    1. Простой - можно ли вот так объявить переменные или надо обязательно объявлять в классе?


    Смотря для чего эти переменные нужны. Ты показываешь объявление локальных переменных. В этом случае время их жизни ограничивается телом функции ConvertData. То есть при следующем входе в эту функцию переменные будут созданы заново, их значение снова будет равно нулю.

    Balbesik пишет:

     цитата:

    2. Главный - m_rates.time == 0 – в каком случае выполняется это условие?
    Вроде бы через MqlRates это время бара, но там вроде 0 не должно быть – не понимаю.


    Когда происходит запуск программы, то m_rates.time как раз равно нулю. Оно еще ничем не заполнено, не было тиков (баров).



    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 264
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 24.05.15 00:38. Заголовок: Scriptong пишет: См..


    Scriptong пишет:

     цитата:
    Смотря для чего эти переменные нужны. Ты показываешь объявление локальных переменных.
    В этом случае время их жизни ограничивается телом функции ConvertData.
    То есть при следующем входе в эту функцию переменные будут созданы заново,
    их значение снова будет равно нулю.



    Значит использование класса - ничего страшного, примерно все одинаково.

    Scriptong пишет:

     цитата:
    Если касательно переделки в график без дыр, то там все не так уж и просто, я уже говорил.
    К примеру, доработка FXTFileMaker для возможности использования нестандартных ТФ в тестере
    казалась плевой (на пару часов, от силы), но в итоге заняла целый день.
    Нюансов оказалось вагон и маленькая тележка.
    Не уверен, что все нюансы и сейчас учтены.



    Это точно.
    "Веселуха" началась с попытки переделки.

    Пример тот же штатный временной, синбар и равновысокий твой.
    Кроме "гладкости" графика (выражение с форума МТ)
    оказывается еще и экстремумы не фиксируются на твоем равновысоком.
    Буду перепроверять конечно, но грустно - времени потеряно немерено.





    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1559
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 24.05.15 15:49. Заголовок: Balbesik пишет: Это..


    Balbesik пишет:

     цитата:
    Это точно.
    "Веселуха" началась с попытки переделки.

    Пример тот же штатный временной, синбар и равновысокий твой.
    Кроме "гладкости" графика (выражение с форума МТ)
    оказывается еще и экстремумы не фиксируются на твоем равновысоком.
    Буду перепроверять конечно, но грустно - времени потеряно немерено.


    Во-первых, то, что тобой выделено в моей цитате, касается скрипта FXTFileMaker, а на рисунках приведена проблема для индикатора TicksCollector.
    Во-вторых, эта проблема обсуждалась несколькими страницами ранее по поводу исправления другой ошибки построения равновысоких и эквиобъемных графиков. Речь о том, что эти типы графиков по шкале времени используют номер бара, а не само время. В итоге на истории синхронизировать эти графики невозможно.
    В-третьих, само сравнение некорректно: synbar (средний рисунок) строит график по данным графика М1, а TicksCollector (правый рисунок) - по тиковым данным. Если тиковые данные неполные или ДЦ задним числом правит историю, то получим такие вот несовпадения.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 265
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 24.05.15 17:36. Заголовок: Scriptong пишет: по..


    Scriptong пишет:

     цитата:
    по шкале времени используют номер бара, а не само время. В итоге на истории синхронизировать эти графики невозможно.
    В-третьих, само сравнение некорректно: synbar (средний рисунок) строит график по данным графика М1, а TicksCollector (правый рисунок) - по тиковым данным



    Игорь!

    Все понимаю и есть сто один довод почему использую и
    работаю именно с твоим построителем.

    "Обрезание" экстремумов есть, поймал первый раз на "шпильке".
    Полагаю это не существенно и связанно с "загрублением у тебя" -
    это решаемо (если это не проблема синхронизации по времени алгоритма).
    С этим надо поработать.
    У тебя особо нет расхождений в алгоритме построения с синбаром.
    А вот "запись в файл" отличается.
    Я пока например не могу "догнать" мной переделанный твой индикатор -
    вроде и то что надо (я например не стремлюсь на гепе открыть позицию
    и в "вакуум" не рассматриваю) и участок тот же, но мне не нравится.
    Меня не интересует структура бара , а только его экстремумы.
    Но это частный подход.



    И не понятно почему "не рисует".
    Я не пытаюсь тебя "напрягать - не мытьем, так катанием", мне самому время надо.
    Но что-то все таки не то с равновысокими у тебя.
    Заметил какой красивый, гладкий график у синбара?

    А теперь прикинь - Как будет работать любой штатный индикатор на этом участке?
    Это закон математики - индикатор на твоем графике будет
    показывать "нвстроение бабущки умершей в прошлом веке" и
    гладкий (без разрывов) график синбара - это достоверность показаний.
    Понимаю, чтобы сделать качественный инструмент надо время.

    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1561
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 25.05.15 15:00. Заголовок: Balbesik пишет: Пон..


    Balbesik пишет:

     цитата:
    Понимаю, чтобы сделать качественный инструмент надо время.


    Еще раз - алгоритм построения графика не предполагает каких-либо изменений цен. Есть цены в файле tks - экстремум будет отображен, нет - значит, и на графике отображать нечего.
    Для точного диагноза пришли свой файл tks, где есть тики за 22-ое мая. Кстати, если пользуешься данными брокеров Alpari или GKFX, то укажи - я гляну в базе данных тиков, была ли такая цена в указанное время.
    Пойми, что свечи рисуются брокерами далеко не всегда по реально пришедшим тикам. Я уже неоднократно находил существенные расхождения по экстремумам между минутным графиком, который дает ДЦ, и реально пришедшими тиками. Уже молчу о том, что количество тиков в одном и том же баре чаще всего не совпадает с тем, что дает ДЦ в поле Volume.

    Время же сопоставить на эквиобъемных или на графиках равновысоких свечей с реальным временем нельзя по той причине, что часто встречаются свечи с одинаковым временем открытия, что МТ4 хронически не переносит, крича в журнале о неправильной истории и рисуя "черточки" в место свечей. Ты такие моменты называешь "слет". Мною эта ситуация была исправлена путем сдвига новых свечей, которые повторяли время предыдущей свечи, в будущее. В итоге подобные графики, зачастую, уходят немного в будущее.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 266
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 27.05.15 08:01. Заголовок: Scriptong пишет: Ещ..


    Scriptong пишет:

     цитата:
    Еще раз - алгоритм построения графика не предполагает каких-либо изменений цен. Есть цены в файле tks - экстремум будет отображен, нет - значит, и на графике отображать нечего.
    Для точного диагноза пришли свой файл tks, где есть тики за 22-ое мая. Кстати, если пользуешься данными брокеров Alpari или GKFX, то укажи - я гляну в базе данных тиков, была ли такая цена в указанное время.
    Пойми, что свечи рисуются брокерами далеко не всегда по реально пришедшим тикам. Я уже неоднократно находил существенные расхождения по экстремумам между минутным графиком, который дает ДЦ, и реально пришедшими тиками. Уже молчу о том, что количество тиков в одном и том же баре чаще всего не совпадает с тем, что дает ДЦ в поле Volume.



    Не отвечал, намучился, пока ничего придумать и сделать не смог.

    Использую Альпари (с островов), я уже писал – при разделении Альпари мне понравился их директор своим заявлением, что у них нет и не будет ни какого «регулятора» и все эти заявки других ДЦ, что якобы они имеют «регуляторов» полная туфта. Я с этим полностью был согласен, что эти якобы «регуляторы» (КРОУФЫ, РАУФЫ и проч.) – это «кооперативы «Озеро»».

    Для меня из всех это наиболее приличная «кухня» (из «кухонь»).

    Проблема, насколько мне известно, «обрезания» есть у всех, в Синбаре это прямо написано –
    Рис. 00.



    Компостер - судя по обсуждению, не стал решать эту проблему и порекомендовал идти путем увеличения размаха бара. Для меня, я тоже тебе написал : «..это не существенно..» - это вообще , по мне так, вопрос «двацатьпятый». Здесь даже так понятно все ДЦ-ки в реале постоянно на короткое время разрывают связь (кто в большей , кто в меньшей степени). «Правят» свою историю и проч. и прочь. «мульки» - это уже сто раз констатировалось.
    Да и собственная связь не идеальна.

    Полагаю от «обрезания» не избавиться, да это и не столь уж важно (всякое бывает).

    Для меня более значимо, для равновысокого, сделать «условно гладкий» график, т.е. что бы выполнялось условие –
    Close[1] = High[1] или Low[1] и обязательно Open[0] = High[1] или Low[1]

    Пока добиться не могу, что-то «не догоняю».

    Во флете работает более-менее, на «быстрых» движениях бывает ерунда.
    «Переходы», которые хотелись бы (313 – твой, 316 – твой переделанный)
    Рис.11

    http://f6.s.qip.ru/zuH5XIkf.png



    Я тебе написал "напрягать - не мытьем, так катанием" не собираюсь.
    Я не программист, мне трудно, а у тебя , в добавок, как бы объектно-ориентированным методом
    написан Тикколлектор – тут , для меня тупик.

    Scriptong пишет:

     цитата:
    «…алгоритм построения графика не предполагает каких-либо изменений цен…»



    - меня это смутило, а сделать корректно не могу.
    А возможно ли, в данном случае, это в принципе?
    и
    Меня интересует просто - правомерен ли подход или структура (блок схема) переделки, которую я выбрал?
    ........ искать решение таким путем ....- это не верно.




    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1564
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 27.05.15 15:57. Заголовок: Balbesik пишет: Про..


    Balbesik пишет:

     цитата:
    Проблема, насколько мне известно, «обрезания» есть у всех, в Синбаре это прямо написано –


    Ты перескакиваешь с одной темы на другую. В предыдущем сообщении ты указал на отсутствие экстремума при отображении графика, созданного индикатором TicksCollector. Именно на это я ответил, что цена пропасть не могла ("алгоритм построения графика не предполагает каких-либо изменений цен"). То есть этой цены нет в файле тикового потока. Чтобы удостовериться в этом, я попросил тебя представить свой тиковый файл. Но пока ты этого не сделал.
    Проблема обрубки ("обрезания") графика решается именно тем способом, который ты указал, т. е. путем создания графика без гэпов. Сделать это не так просто, как ты думаешь.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 267
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 27.05.15 16:36. Заголовок: Scriptong пишет: Кс..


    Scriptong пишет:

     цитата:
    Кстати, если пользуешься данными брокеров Alpari или GKFX, то укажи



    Balbesik пишет:

     цитата:
    Использую Альпари (с островов)



    http://dropmefiles.com/ZPad0

    Balbesik пишет:

     цитата:

    "Обрезание" экстремумов есть, поймал первый раз на "шпильке".



    Balbesik пишет:

     цитата:
    «..это не существенно..» - это вообще , по мне так, вопрос «двацатьпятый»




    Scriptong пишет:

     цитата:
    Сделать это не так просто, как ты думаешь.



    Понятно.





    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1565
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 27.05.15 22:17. Заголовок: Balbesik пишет: h..


    Balbesik пишет:

     цитата:


    http://dropmefiles.com/ZPad0


    Преобразовал этот тиковый файл в свечи М1 (см. Конвертирование файлов тикового потока) и посмотрел результат в Excel.

    Как видно, за период с 15:22 до 15:33 наивысшая цена - 1.11736. Таким образом, не мог TicksCollector построить свечи с максимумом 1.11888, т. к. такая цена не была записана в тиковом файле.

    Смотрим далее данные самой Альпари. У меня на минутном графике такая картинка:

    Тут наивысшая цена - 1.11760.

    Теперь беру тиковый файл из собираемой тиковой истории для EURUSD Alpari и тоже преобразую данные в М1. Вижу следующее:

    В этом случае имеем полное совпадение данных, предоставленных брокером и полученных путем сбора тиков. В обоих случаях максимум 1.11760.

    Следовательно, проблема заключается в твоем файле тиковой истории. Тем более, там заметна проблема повторения свечей с одним и тем же временем открытия. То есть файл тиков явно собран некорректно.


    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 268
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 28.05.15 01:36. Заголовок: Balbesik пишет: «Пр..


    Balbesik пишет:

     цитата:
    «Правят» свою историю и проч. и прочь. «мульки» - это уже сто раз констатировалось.



    Scriptong пишет:

     цитата:
    Смотрим далее данные самой Альпари. У меня на минутном графике такая картинка:....Тут наивысшая цена - 1.11760.



    Значит это я "от скуки нарисовал" на штатном 1 минутном графике и графике Синбара - 1.11888.

    Scriptong пишет:

     цитата:
    То есть файл тиков явно собран некорректно.



    Надо полагать.
    Только цена отличается на штатной истории, а не на тиковой.

    Balbesik пишет:

     цитата:
    это ....... вопрос «двацатьпятый»






    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1566
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 28.05.15 14:24. Заголовок: Balbesik пишет: Зна..


    Balbesik пишет:

     цитата:
    Значит это я "от скуки нарисовал" на штатном 1 минутном графике и графике Синбара - 1.11888.


    Это лишь констатация факта. На сервере одной и той же компании часто бывают разные ценовые данные. Ничего крамольного в этом нет. Я не подвергаю сомнению то, что в истории твоего счета есть такая котировка. Но при этом, заметь, в тиковом файле, присланным тобой, такой котировки нет. Именно по этой причине график, построенный TicksCollector'ом, отображает другие экстремумы.

    На то, почему тиковый файл не имеет нужных данных, может быть тысячи причин.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 269
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 29.05.15 20:49. Заголовок: Считаю тема закрыта...


    Считаю тема закрыта.

    Scriptong пишет:

     цитата:
    Сделать это не так просто, как ты думаешь.


    А это в принципе возможно на наших компах?
    Вообще - то задача = 2Х2 = 4



    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1569
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 31.05.15 12:03. Заголовок: Balbesik пишет: А э..


    Balbesik пишет:

     цитата:
    А это в принципе возможно на наших компах?
    Вообще - то задача = 2Х2 = 4


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

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 270
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 01.06.15 08:33. Заголовок: Как бы отвечать нет ..


    Как бы отвечать нет смысла – все понятно, но один момент меня заинтересовал.

    Пока об этом –

    Scriptong пишет:

     цитата:
    Просто не нужно бросаться из крайности в крайность


    -
    Тут я не вижу крайности.

    Я наблюдаю, как работает мной переделанный твой индикатор.
    На обычных движениях работает четко – это видно по картинкам -
    Отправлено: 25.05.15 15:00., а на быстрых нет.

    Я об этом писал –

    Balbesik пишет:

     цитата:
    Во флете работает более-менее, на «быстрых» движениях бывает ерунда.



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

    Что остается?

    Остается комп, иначе индикатор бы просто не работал!

    Кроме этого я не заметил, чтобы на Кодебазе все перешли
    на объектно – ориентированный метод написания программ
    и негде прочитать и не знаю специфики (да и смысла не вижу – я не прграммист).

    Scriptong пишет:

     цитата:
    идейной заинтересованности. Ни того, ни другого у меня сейчас нет.



    Это понимать можно по разному.

    Я сразу при ответе на вопрос о возможной доработки понял, что рассчитывать бесполезно.
    Просто так – «А поговорить….?».

    Другое понимание фразы и вот это меня заинтересовало –

    Scriptong пишет:

     цитата:
    идейной заинтересованности



    Вот принятый тобой метод построения с «разрывами» - в чем смысл или идея?

    Суть доработки я тебе объяснил – изменить построение, на твоем графике (с «разрывами», уверен "кухням" это в тему)
    индикаторы заведомо будут работать не корректно (на мои взгляд).

    С т.з. hiddengap_ad.mq4 - ценовые разрывы, образовавшиеся внутри свечей - тоже не понятно.

    Смотрел Ренки, Ренжи, «крестики- нолики» и т.д. – нигде нет такого построения -
    с заведомо заложенными разрывами (ну не видел я).

    В чем идея (ну не догоняю)?

    P.S.

    Решил, по пьяне спросить?
    hiddengap_ad.mq4 - а это о чем?
    Буду "бить" на микроструктуру и
    постоянно получать Геп (значимость не берем, а принцип).
    Мне кажется Игорь, ты "заблудился", но это не удивительно,
    когда тебя стала интересовать абстракция, а не законы физики.
    И перестал адекватно принимать, что тебе пишут.

    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1571
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 01.06.15 18:16. Заголовок: Balbesik пишет: Отп..


    Balbesik пишет:

     цитата:
    Отправлено: 25.05.15 15:00., а на быстрых нет.


    Про быстрые движения не понял. Что там не так? Или разговор на ту же тему - при гэпе не строятся бары? Если так, то это нужно доделывать, я уже писал.

    Balbesik пишет:

     цитата:
    Исходим из посыла, что индикатор Тикколектор сделан идеально, четко синхронизирован по времени


    Нет. Range-бары и эквиобъемные графики никакого отношения ко времени не имеют. Поэтому говорить о какой-то синхронизации нет смысла. Причина - ограничения МТ4. Поиграть со временем на этих графиках можно в тестере стратегий. Там, почему-то, никаких ограничений нет.

    Balbesik пишет:

     цитата:
    на объектно – ориентированный метод написания программ
    и негде прочитать и не знаю специфики


    Литературы куча (это про C++, с которого передран MQL). Я, к примеру, учил по Г. Шилдту - https://psv4.vk.me/c521614/u26386271/docs/51736ddcfbd3/Gerbert_Shildt_-_Samouchitel_C.pdf?extra=lx4Bo8kqSzuFKuzJPdljVyLVtNiaCgjWEjuBBYAChK7XkB7Y2hQ3L9EJ_Exek2bobydwATiwpQlMFjorAZRLQpZFLC4LK9Qo&dl=1

    Balbesik пишет:

     цитата:
    Вот принятый тобой метод построения с «разрывами» - в чем смысл или идея?


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

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 271
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 02.06.15 07:17. Заголовок: Scriptong пишет: ....


    Scriptong пишет:

     цитата:
    ....Поверь, разницы нет никакой.



    Верю!

    Кроме этого это логично и так и должно быть, разнице не должно быть.

    Дело в том, что мы говорим совершенно о разных вещах.

    Считал, что «без дыр» мы приняли для понимания одного и того же.

    Как оказывается это не так.

    Komposter в своей работе убирал время, что не имеет никакого смысла и
    соответственно не приводит ни к каким отличиям.

    Давай по другому.

    Возьмём для примера твой индикатор hiddengap_ad.mq4
    Индикатор фиксирует гепы внутри минутного бара, это просто твой выбор – дискреты времени и возможно
    это может иметь место, но смысла не несет,
    да можно фиксировать некое влияющее рассогласование при отличии одного гепа от величин других гепов.

    Сам по себе график дискретен, т.е. если продолжать уменьшать время бара мы получим график состоящих из одних гепов.

    Чтобы неким образом получить «непрерывный график» мы увеличиваем время бара и добиваемся некоего сглаживания – непрерывности.

    Главное во всех случаях вышесказанного мы говорим о цене, а не о времени.

    И для корректной работы индикаторов необходима именно «непрерывность по цене», а не по времени.

    Как раз в части равновысокого бара Komposter и предлагал просто увеличивать размах
    для избежание «разрывов по цене», что в общем-то тоже самое, когда на временном выбирается больший ТФ (бар).

    Как раз в этой части я и приводил высказывания Рената
    "...
    123 2015.04.27 12:44 #
    Renat:
    Преимущество ГА от специализированных(базирующихся на предварительном/частичном знании поведения исследуемой функции) в том, что она более универсальна и эффективна в режиме поиска в рваном пространстве, чем и являются торговые системы.
    Грубо: в торговых системах обычно мизерное изменение параметров полностью рвет результат, что портит жизнь градиентным алгоритмам, надеющимся на гладкость функции.


    При оптимизации ТС ищутся именно "гладкие" области. Искать еще другие области не только бессмысленно, но и вредно. Если посмотреть любую рваную область конечных результатов ТС с великолепными по размеру экстремумам, то очевидно же, что эти области носят случайный (точно не робастный) характер. Или я ошибаюсь снова?

    Эвристик торговых систем (для них же в первую очередь оптимизатор создавался) должен хорошо находить именно "гладкие" локальные экстремумы в рваном пространстве ТС.

    ..."

    Т.е. задача и состоит, чтобы сделать более «гладкий» график по цене (а не по времени), а не наоборот, как в случае Тикколектора.
    Т.е. задача и состоит, чтобы сделать более «гладкий» график в реале а не для тестера (который и подтверждает, что это так).

    Еще раз речь в моем понимании «без дыр» идет о цене без разрывов, а не о времени.



    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1572
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 02.06.15 11:46. Заголовок: Balbesik пишет: Дав..


    Balbesik пишет:

     цитата:
    Давай по другому.

    Возьмём для примера твой индикатор hiddengap_ad.mq4
    Индикатор фиксирует гепы внутри минутного бара, это просто твой выбор – дискреты времени и возможно
    это может иметь место, но смысла не несет,
    да можно фиксировать некое влияющее рассогласование при отличии одного гепа от величин других гепов.

    Сам по себе график дискретен, т.е. если продолжать уменьшать время бара мы получим график состоящих из одних гепов.

    Чтобы неким образом получить «непрерывный график» мы увеличиваем время бара и добиваемся некоего сглаживания – непрерывности.


    Хороший взгляд на непрерывность функции. Вроде бы очевидно, но разложено по полочкам.
    В том же плане, что от hiddengap нет толку, не согласен. Его смысл в том, чтобы увидеть значимые скачки цены (значимость пользователь определяет сам при помощи настроечных параметров) внутри любой свечи. Это просто некоторое устранение недостатка свечного графика, который позволяет видеть гэпы только между свечами, а внутри - нет.
    Другой вопрос - так ли уж важно видеть эти гэпы? На него не могу пока ответить, т. к. до сих пор не исследовал эту стратегию.

    Balbesik пишет:

     цитата:
    Еще раз речь в моем понимании «без дыр» идет о цене без разрывов, а не о времени.


    Да, именно так я это и понимаю. Время на range-барах и эквиобъемных графиках (оффлайн графики) является некорректным, т. к. происходит сдвиг баров в будущее тогда, когда одна и более свечей должны иметь одинаковое время открытия.



    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 272
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 02.06.15 17:45. Заголовок: Блин! Сто раз я тебе..


    Блин!
    Сто раз я тебе говорил - ну не умею я объяснять!
    Вот разрывы -



    Да не приделах тут бары вообще, а эквиобъемные вообще - как зайцу пятая нога.
    Запутался я в этих записях, перезаписях и обращениях в твоем алгоритме -
    надо мне время раз тебе некогда.

    P.S.
    Покажи мне хоть один график каги, ренки, ренджи, крестики - нолеки, синтетики и проч.,
    где есть "разрывы" - да это и есть цель этих "изголяций".
    Все от "разрывов" стараются уйти.
    Просто методом "укрупнения" (большой размах) идет потеря "чувствительности".
    Я уже не знаю как объяснять.

    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1574
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 02.06.15 21:37. Заголовок: Balbesik пишет: Бли..


    Balbesik пишет:

     цитата:
    Блин!
    Сто раз я тебе говорил - ну не умею я объяснять!


    Мне это известно.
    Раз ты сам это хорошо понимаешь, то не нервничай, когда тебя не понимает собеседник, а попытайся терпеливо объяснить другими словами, чего хотел. Ведь от признания тобой факта не умения объяснять я все равно не смогу правильно понять суть того, что ты сказал.

    Balbesik пишет:

     цитата:
    Вот разрывы -


    Да, есть гэпы между тиками (когда между соседними тиками более одного пункта). И что? Для меня это не новость. Для того чтобы убрать эти гэпы, нужно сделать то, о чем ты просишь - "график без дыр". Этим я пока заниматься не буду. Возможно, когда-то в будущем.

    Balbesik пишет:

     цитата:
    Покажи мне хоть один график каги, ренки, ренджи, крестики - нолеки, синтетики и проч.,
    где есть "разрывы" - да это и есть цель этих "изголяций".


    Все существующие индикаторы основаны на данных минутного графика, который скрывает гэпы между тиками. Соответственно, на графиках, которые строят эти индикаторы (скрипты), нет такого количества гэпов.
    Мой же способ построения - на основе тиков. Он абсолютно точный, показывает реальность такой, какая она есть. Да, она не такая красивая и причесанная, но это 100%-ая реальность. Если сделать по этому методу "график без дыр", то мы получим не причесанную реальность, которую показывают имеющиеся каги, ренджи и т. д., а дополненную реальность. Итоговый график все равно будет отличаться от тех графиков, которые строят перечисленные индикаторы.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 273
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 03.06.15 18:30. Заголовок: Scriptong пишет: Мо..


    Scriptong пишет:

     цитата:
    Мой же способ построения - на основе тиков. Он абсолютно точный,



    Самое смешное, что об этом никто и не спорит.
    Только я тебе про черное, а ты мне про белое.

    Да не нужна твоя точность никому.
    Людям (если ты не работаешь на "кухни") нужен прогноз на основании
    индикаторов, сове6тников м прочих инструментах (математики - другого мы не знаем).
    Это не возможно сделать "на рваном пространстве".
    Ну не работает функция (индикатор) на "рваных" данных.
    Пока "Ньютоноское яблоко" падает вниз - соблюдаются законы математики.
    Твоя "точность" просто мешает и искажает.

    Да сделал я уже все (тебе бы понадобилась минут 15).
    Сейчас ( в течении часа) картинку (надо поймать характерную) выложу.
    Если кому интересно - пишите - алгоритм прямо здесь выложу.
    Там действительно 2*2 = 4, но как я и писал - с этими "записями- перезаписями в схеме Игоря"
    пришлось повозится.

    Пока не характерно -



    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1579
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 04.06.15 09:26. Заголовок: Balbesik пишет: Тол..


    Balbesik пишет:

     цитата:
    Только я тебе про черное, а ты мне про белое.


    Еще раз: все я прекрасно понял. Просто ты, почему-то, не можешь сложить у себя целостное представление о проблеме, постоянно вырезая ее кусочки.

    Balbesik пишет:

     цитата:
    Да сделал я уже все (тебе бы понадобилась минут 15).


    Опять 25. Не делается все на "раз два". Тяп-ляп - это не мой подход. Для нормальной разработки требуется несколько дней. И то после этого выплывает куча нюансов, которые не смог предусмотреть.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 275
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 04.06.15 10:59. Заголовок: Scriptong пишет: Оп..


    Scriptong пишет:

     цитата:
    Опять 25. Не делается все на "раз два". Тяп-ляп - это не мой подход. Для нормальной разработки требуется несколько дней. И то после этого выплывает куча нюансов, которые не смог предусмотреть.



    Я не мудрствовал - взял по аналогии Синбара - изменена только
    bool NonStandartTFChart::ConvertData(datetime time, double bid, bool doFlush) .
    Меня не интересуют временной и объемный график (только под равновысокий).
    Пока работает нормально.
    Но у меня есть три вопроса.
    Найдешь время посмотреть?

    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1582
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 04.06.15 12:40. Заголовок: Balbesik пишет: Най..


    Balbesik пишет:

     цитата:
    Найдешь время посмотреть?


    Только выкладывай файлами.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 276
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 04.06.15 13:39. Заголовок: Scriptong пишет: То..


    Scriptong пишет:

     цитата:
    Только выкладывай файлами.



    click here


    bool NonStandartTFChart::ConvertData(datetime time, double bid, bool doFlush)
    {
    if (!m_isActive)
    return true;

    H_0 = m_chartProperty * m_point; // ????????????????????????????????????????

    // Обновление данных текущего бара /**/
    m_rates.high = MathMax(m_rates.high, bid);
    m_rates.low = MathMin(m_rates.low, bid);
    m_rates.close = bid;
    m_rates.tick_volume++;

    // Формирование нового бара
    if (m_rates.time == 0 || IsNewBarByConvertType(time))
    {
    // ??????????? - странно как-то, если вынести наверх if (m_rates.time == 0)....
    // то график сразу не появляется в "открыть автономно".

    if (m_rates.time == 0)
    {
    m_rates.open = bid;
    m_rates.close = bid;
    m_rates.high = bid;
    m_rates.low = bid;
    m_rates.tick_volume = 1;
    if ((int)(time - m_rates.time) < 60) // Время открытия нового бара отличается от времени открытия предыдущего бара менее, чем на 1-у минуту
    time = m_rates.time + 60; // Сдвиг времени открытия нового бара на одну минуту вперед
    m_rates.time = time;
    last_fpos=(long)FileTell(m_fileHandle);
    }

    while( m_rates.close - m_rates.low > H_0) // вверх
    {
    m_rates.high = m_rates.low + H_0;
    m_rates.close = m_rates.low + H_0;
    FileSeek(m_fileHandle, last_fpos, SEEK_SET); // SEEK_CUR SEEK_SET
    FileWriteStruct(m_fileHandle, m_rates);
    //FileFlush(m_fileHandle); // ????????????????????????????????????????
    if ((int)(time - m_rates.time) < 60) // Время открытия нового бара отличается от времени открытия предыдущего бара менее, чем на 1-у минуту
    time = m_rates.time + 60; // Сдвиг времени открытия нового бара на одну минуту вперед
    m_rates.time = time;
    m_rates.low = m_rates.low + H_0;
    m_rates.open=m_rates.low;
    m_rates.tick_volume = 0; // 1 0 ????????????????????????????????????????
    last_fpos=(long)FileTell(m_fileHandle);
    }

    while(m_rates.high - m_rates.close > H_0) // вниз
    {
    m_rates.low = m_rates.high - H_0;
    m_rates.close = m_rates.high - H_0;
    FileSeek(m_fileHandle, last_fpos, SEEK_SET); // SEEK_CUR SEEK_SET
    FileWriteStruct(m_fileHandle, m_rates);
    //FileFlush(m_fileHandle); // ????????????????????????????????????????
    if ((int)(time - m_rates.time) < 60) // Время открытия нового бара отличается от времени открытия предыдущего бара менее, чем на 1-у минуту
    time = m_rates.time + 60; // Сдвиг времени открытия нового бара на одну минуту вперед
    m_rates.time = time;
    m_rates.high = m_rates.high - H_0;
    m_rates.open = m_rates.high;
    m_rates.tick_volume = 0; // 1 0 ????????????????????????????????????????
    last_fpos=(long)FileTell(m_fileHandle);
    }

    }
    // Продолжение формирования бара
    else
    FileSeek(m_fileHandle, -m_ratesSize, SEEK_CUR);

    // Запись данных текущего бара
    if (FileWriteStruct(m_fileHandle, m_rates) != m_ratesSize)
    {
    Alert(WindowExpertName(), ": ошибка при записи в файл истории. Индикатор отключен.");
    return false;
    }

    if (doFlush)
    FileFlush(m_fileHandle);

    return true;
    }


    Недостаток - идеально работает только свыше спреда (20 пунктов и более).

    Оснавная моя проблема - ине вечно не хватает памяти.
    Вопросы
    1. H_0 = m_chartProperty * m_point; - можно ли это "загнать" в инит? - меньше считать.
    2. //FileFlush(m_fileHandle); - закоментировал, чтобы меньше считало - разницы нет,
    но есть сомнение - а правомерно ли?

    Ну и самое не понятное
    3.
    if (m_rates.time == 0)
    {
    m_rates.open = bid;
    m_rates.close = bid;
    m_rates.high = bid;
    m_rates.low = bid;
    m_rates.tick_volume = 1;
    if ((int)(time - m_rates.time) < 60) // Время открытия нового бара отличается от времени открытия предыдущего бара менее, чем на 1-у минуту
    time = m_rates.time + 60; // Сдвиг времени открытия нового бара на одну минуту вперед
    m_rates.time = time;
    last_fpos=(long)FileTell(m_fileHandle); - это масло - масленое обязательно иначе барахлит
    }
    если вынести наверх - для красоты, то не сразу появляется грфик в "Открыть автономно",
    если есть ранняя история то конечно есть и работает сразу.
    Что не так?

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 274
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 04.06.15 06:18. Заголовок: Сделал просто "и..


    Сделал просто "искусственный Геп"

    Более характерно.



    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1583
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 04.06.15 14:43. Заголовок: К сожалению, ты вооб..


    К сожалению, ты вообще не разобрался в назначении той или иной строки в коде.
    Самая главная ошибка - использование записи в файл внутри условий, которые корректируют структуру m_rates:

     цитата:
    while( m_rates.close - m_rates.low > H_0) // вверх
    {
    ....
    FileWriteStruct(m_fileHandle, m_rates);
    ....
    }

    while(m_rates.high - m_rates.close > H_0) // вниз
    {
    ....
    FileWriteStruct(m_fileHandle, m_rates);
    ...
    }


    Это нельзя помещать перед штатной записью:

     цитата:
    // Запись данных текущего бара
    if (FileWriteStruct(m_fileHandle, m_rates) != m_ratesSize)
    {
    Alert(WindowExpertName(), ": ошибка при записи в файл истории. Индикатор отключен.");
    return false;
    }


    Ну а по большому счету - направление мысли правильное. Просто не учитывается громадное количество нюансов. Как сделать правильно, сам не знаю, т. к. для этого нужно сесть и сделать, на что времени нет. Но так, как сделано, тоже нельзя.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 277
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 05.06.15 06:30. Заголовок: Scriptong пишет: К..


    Scriptong пишет:

     цитата:

    К сожалению, ты вообще не разобрался в назначении той или иной строки в коде.



    Это нормально.
    Я не программист, никогда меня этому не учили и поэтому и обращаюсь к профи.

    Scriptong пишет:

     цитата:
    Самая главная ошибка - использование записи в файл внутри условий



    Даже не задумывался - повторил Синбар (все вопросы туда).

    Scriptong пишет:

     цитата:
    которые корректируют структуру m_rates:



    А вот это не понял.
    Вроде как структура остается, а меняются только величины параметров.

    Интересно -

    Вот если размах бара менее 20 пунктов (спред) при данном решении индикатор не работает.
    У Компостера была та же проблема (он на ее плюнул), возможно это не
    зависит от программиста (а зависит от каких-то потоков передачи информации).
    Но если исправить мои ошибки (как-то) -
    это может решить задачу уменьшения размаха бара (увеличения чувствительности)?



    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 278
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 05.06.15 08:47. Заголовок: Balbesik пишет: 2. ..




    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1586
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 05.06.15 18:22. Заголовок: Balbesik пишет: Но ..


    Balbesik пишет:

     цитата:
    Но если исправить мои ошибки (как-то) -
    это может решить задачу уменьшения размаха бара (увеличения чувствительности)?


    Чтобы исправить твои ошибки, мне самому нужно сесть и разобраться (придумать правильную архитектуру кода и ее реализацию), как переделать равновысокие бары в "графики без дыр". В ближайшее время я этим заняться не могу.

    Balbesik пишет:

     цитата:
    У Компостера была та же проблема (он на ее плюнул), возможно это не
    зависит от программиста (а зависит от каких-то потоков передачи информации).


    Эту проблему невозможно решить, имея только минутные данные. Нужны тики. На тот момент у komposter'а не было истории тиков.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 279
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 06.06.15 13:01. Заголовок: Scriptong пишет: пр..


    Scriptong пишет:

     цитата:
    придумать правильную архитектуру кода и ее реализацию



    Игорь!

    Абсолютно «не горит» по времени, но
    очень интересно, если бы ты занялся этой проблемой.

    Не понимая взаимосвязей, чисто методом «научного втыка»,
    кажется добился стабильной работы на маленьких размахах и
    при отсутствии тиковой истории, запуска графика сразу.



    Вынес из циклов last_fpos=(long)FileTell(m_fileHandle); ,
    но оставил под условием IsNewBarByConvertType(time),
    а главное добавил last_fpos=(long)FileTell(m_fileHandle);
    под else, без этого не работало стабильно.

    Кажется при всех условиях работает – но сейчас проверяю.


    На мои взгляд, у меня индикатор получился «очень тяжелый»,
    Хотя получаемый график похож на построение "график без дыр",
    ну или «гладкий» (по сленгу МКЛ).

    Буду ждать.




    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1588
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 07.06.15 14:42. Заголовок: Balbesik пишет: Буд..


    Balbesik пишет:

     цитата:
    Буду ждать.


    Да, пока, к сожалению, только так...

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 280
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 08.06.15 18:55. Заголовок: Scriptong пишет: Да..


    Scriptong пишет:

     цитата:
    Да, пока, к сожалению, только так...



    Да, пока, к сожалению и у меня нет решения и только так.
    На «быстрых» движениях идет «слет» (менее спреда),
    что фактически подтверждает, что решение неверно,
    но и подтверждает, что график валют подвержен
    законам математики (я бы удивился, если было бы иначе) –
    идет разрыв и функция (индикатор, советник и скрипт)
    не работают (или работают не корректно) – кстати,
    это касается и стандартных графиков.

    Видимо ты прав – конструкция алгоритма «неверна».

    Но вот, что мне интересно –
    Я утверждаю, что твое построение равновысоких баров
    не имеет практического значения для трейдеров и того
    набора инструментов (индикаторов, советников и скриптов),
    что присутствуют в терминале, и в т.ч.
    и пользовательских.
    Ты это, пока, опровергнуть не можешь
    (ну я не видел достаточного опровержения) .

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

    Тебе некогда.

    А как же имидж, реклама, уважение и проч. (форум) , если говорят,
    что не работает, а тебе не когда (хотя к этому «игнору» я привык – «проходили»).
    Кроме точности отображения (которая не несет практического смысла)
    не доводится иное обоснование принятого построения
    (ну просто тебе так захотелось - в конце концов никому не обязан)?

    Знаешь, есть закон (классика) – достоверность входных данных
    более значима, чем сама система (индикатор, советник и скрипт)
    работающая по этим данным.

    Мой вышеизложенный «опус» не значит, что все надо бросить,
    но и не надо вводить в заблуждение разработкой ради разработки.



    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1594
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 08.06.15 21:51. Заголовок: Balbesik пишет: Я у..


    Balbesik пишет:

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


    Дело в том, что подобным образом можно сказать относительно любого советника, индикатора и скрипта, которые имеются в открытом доступе или даже продаются за деньги. Ни один из них не имеет практического применения, т. к. гарантированно не приносит деньги.
    Если же любую такую программу рассматривать как инструмент в руках трейдера, то все это сразу приобретает смысл. Как минимум, одному человеку в мире понадобится тот или иной инструмент. К примеру, тот же сборщик тиков с моего сайта, судя по статистике закачек, является одним из наиболее популярных инструментов. То есть даже не одному, а целой группе трейдеров это нужно. Некоторые из них даже выходили со мной на связь и интересовались этим направлением. "График без дыр", кроме тебя, пока еще никто не просил.
    Относительно себя скажу так: это направление мне видится интересным, но только в будущем, т. к. на данный момент не обладаю значимой историей котировок (на сегодня это история за 1 год, а нужно хотя бы 2-3). Поэтому исследование тиков я пока отложил, до поры до времени оно мне не интересно.

    Balbesik пишет:

     цитата:
    А как же имидж, реклама, уважение и проч. (форум) , если говорят,
    что не работает, а тебе не когда (хотя к этому «игнору» я привык – «проходили»).


    Мухи - отдельно, котлеты - отдельно. Не работает что? Программа не работает? Работает. Идея не работает? Так это уже не ко мне, а к тому, кто хочет получить что-то от этой идеи, т. е. к тебе.
    Когда была проблема с появлением ошибки (терминал ругался на файл истории), я ею сразу же занялся и после нескольких недель поиска решений (с твоей помощью) ошибка была исправлена. Сейчас ошибок в работе программы нет.
    Ты же сейчас просишь несколько развить программу. Тебе это интересно. Но выше я указал, что мне пока тиковое направление не интересно. А вот насчет "графика без дыр" так я и вовсе не вижу в нем какой-либо перспективы, там уж точно рыбы нет.
    Если и буду делать эту доработку, то, скорее всего, из чисто спортивного интереса - решить очередную программистскую задачу. Бывает такое настроение, когда, за что ни возьмись, везде сложные задачи, а эта задача относительно простая. Вот в такое время, когда мозг будет требовать решения не очень сложной задачи, возможно, и будет реализован этот "график без дыр".



    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 281
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 09.06.15 14:20. Заголовок: Игорь! У меня был ..


    Пьянь с ханыгою.

    Все работает.
    Вот рабочий блок для равновысоких -

    bool NonStandartTFChart::ConvertData(datetime time, double bid, bool doFlush)
    {
    if (!m_isActive)
    return true;

    H_0 = m_chartProperty * m_point; // ????????????????????????????????????????

    // Обновление данных текущего бара /**/
    m_rates.high = MathMax(m_rates.high, bid);
    m_rates.low = MathMin(m_rates.low, bid);
    m_rates.close = bid;
    m_rates.tick_volume++;

    //FileSeek(m_fileHandle, last_fpos, SEEK_CUR); // SEEK_CUR SEEK_SET
    //FileWriteStruct(m_fileHandle, m_rates);


    // Формирование нового бара
    if (m_rates.time == 0 || IsNewBarByConvertType(time))
    {
    // ??????????? - странно как-то, если вынести наверх if (m_rates.time == 0)....
    // то график сразу не появляется в "открыть автономно".

    if (m_rates.time == 0)
    {
    m_rates.open = bid;
    m_rates.close = bid;
    m_rates.high = bid;
    m_rates.low = bid;
    m_rates.tick_volume = 1;

    if ((int)(time - m_rates.time) < 60) // 60 Время открытия нового бара отличается от времени открытия предыдущего бара менее, чем на 1-у минуту
    time = m_rates.time + 60; // 60 Сдвиг времени открытия нового бара на одну минуту вперед
    m_rates.time = time;

    FileSeek(m_fileHandle, -m_ratesSize, SEEK_CUR);
    FileWriteStruct(m_fileHandle, m_rates);

    last_fpos=(long)FileTell(m_fileHandle);
    }
    else
    {

    while( m_rates.close - m_rates.low > H_0) // вверх
    {
    m_rates.high = m_rates.low + H_0;
    m_rates.close = m_rates.low + H_0;

    if ((int)(time - m_rates.time) < 60) // 60 Время открытия нового бара отличается от времени открытия предыдущего бара менее, чем на 1-у минуту
    time = m_rates.time + 60; // 60 Сдвиг времени открытия нового бара на одну минуту вперед
    m_rates.time = time;

    FileSeek(m_fileHandle, last_fpos, SEEK_SET); // SEEK_CUR SEEK_SET
    FileWriteStruct(m_fileHandle, m_rates);
    //FileFlush(m_fileHandle); // ????????????????????????????????????????

    m_rates.low = m_rates.low + H_0;
    m_rates.open=m_rates.low;
    m_rates.tick_volume = 0; // 1 0 ????????????????????????????????????????
    //last_fpos=(long)FileTell(m_fileHandle);
    }

    while(m_rates.high - m_rates.close > H_0) // вниз
    {
    m_rates.low = m_rates.high - H_0;
    m_rates.close = m_rates.high - H_0;

    if ((int)(time - m_rates.time) < 60) // 60 Время открытия нового бара отличается от времени открытия предыдущего бара менее, чем на 1-у минуту
    time = m_rates.time + 60; // 60 Сдвиг времени открытия нового бара на одну минуту вперед
    m_rates.time = time;

    FileSeek(m_fileHandle, last_fpos, SEEK_SET); // SEEK_CUR SEEK_SET
    FileWriteStruct(m_fileHandle, m_rates);
    //FileFlush(m_fileHandle); // ????????????????????????????????????????

    m_rates.high = m_rates.high - H_0;
    m_rates.open = m_rates.high;
    m_rates.tick_volume = 0; // 1 0 ????????????????????????????????????????
    //last_fpos=(long)FileTell(m_fileHandle);
    }


    last_fpos=(long)FileTell(m_fileHandle);
    }
    }
    // Продолжение формирования бара
    else
    {

    FileSeek(m_fileHandle, -m_ratesSize, SEEK_CUR); // SEEK_CUR SEEK_SET
    last_fpos=(long)FileTell(m_fileHandle);
    }

    // Запись данных текущего бара
    if (FileWriteStruct(m_fileHandle, m_rates) != m_ratesSize)
    {
    Alert(WindowExpertName(), ": ошибка при записи в файл истории. Индикатор отключен.");
    return false;
    }

    if (doFlush)

    FileFlush(m_fileHandle);



    return true;
    }

    Много лишнего - я не программист,
    завтра скину картинки (просто они на другом компе)

    Но "тяжелый" индикатор!


    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 282
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 09.06.15 16:27. Заголовок: Вот сегодня! У меня ..




    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 283
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 09.06.15 16:48. Заголовок: Вот сейчас я решил !..




    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1599
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 10.06.15 14:43. Заголовок: Снова что-то странно..


    Снова что-то странное. Для там FileTell? Не могу понять. Неужели сложно привести все к одному единственному FileWriteStruct, а не вызывать его четыре раза в теле одной и той же функции?

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 284
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 10.06.15 15:23. Заголовок: Scriptong пишет: Сн..


    Scriptong пишет:

     цитата:
    Снова что-то странное.



    Ну мать твою, ну не мое зто, я тебе дам ПУРО (пульт управления ракетным огнем) и
    характеристику заряда.
    На 99.99% уверен, что выстрел ты не рассчитаешь не взирая на образование.



    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1601
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 10.06.15 19:11. Заголовок: Balbesik пишет: На ..


    Balbesik пишет:

     цитата:
    На 99.99% уверен, что выстрел ты не рассчитаешь не взирая на образование.


    Я его просто не возьму. Зачем работать с тем, в чем не разбираешься? Тут два варианта: разобраться и спокойно работать, либо не трогать.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 289
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 04.07.15 07:30. Заголовок: Пишу для Игоря и для..


    Пишу для Игоря и для тех кому интересно.

    Вот работающий блок для равновысокого - плавно, не дискретно, как предыдущий.
    Пару недель гонял - не слетает.

    Если использовать IsNewBarByConvertType(time), то слет идет случайным образом.

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

    Переделать блок-схему не смог, да на данном этапе мне и не надо.

    Все работает.

    Встречный вопрос Игорю - можно ли сделать время бара (сколько секунд формировался) и как,
    если строится несколько баров внутри минутного бара или это невозможно?



    bool NonStandartTFChart::ConvertData(datetime time, double bid, bool doFlush)
    {
    if (!m_isActive)
    return true;

    H_0 = m_chartProperty * m_point; // ????????

    // Формирование нового бара

    if (m_rates.time == 0)
    {
    m_rates.open = bid;
    m_rates.close = bid;
    m_rates.high = bid;
    m_rates.low = bid;
    m_rates.tick_volume = 1;

    FileSeek(m_fileHandle, -m_ratesSize, SEEK_CUR); // SEEK_CUR SEEK_SET
    FileWriteStruct(m_fileHandle, m_rates);
    FileFlush(m_fileHandle);

    m_rates.time = time;

    }

    // Обновление данных текущего бара /**/
    m_rates.high = MathMax(m_rates.high, bid);
    m_rates.low = MathMin(m_rates.low, bid);
    m_rates.close = bid;
    m_rates.tick_volume++;


    if ((m_rates.close - m_rates.low > H_0 || m_rates.high - m_rates.close > H_0) && H_0!=0) // IsNewBarByConvertType(time)
    {

    while( m_rates.close - m_rates.low > H_0) // вверх
    {
    m_rates.high = m_rates.low + H_0;
    m_rates.close = m_rates.low + H_0;

    if ((int)(time - m_rates.time) < 60) // Время открытия нового бара отличается от времени открытия предыдущего бара менее, чем на 1-у минуту
    time = m_rates.time + 60; // Сдвиг времени открытия нового бара на одну минуту вперед

    FileSeek(m_fileHandle, -m_ratesSize, SEEK_CUR); // SEEK_CUR SEEK_SET
    FileWriteStruct(m_fileHandle, m_rates);
    FileFlush(m_fileHandle);

    m_rates.time = time;

    m_rates.low = m_rates.low + H_0;
    m_rates.open=m_rates.low;
    m_rates.tick_volume = 1; // 1 0 ????????????????????????????????????????

    }

    while(m_rates.high - m_rates.close > H_0) // вниз
    {
    m_rates.low = m_rates.high - H_0;
    m_rates.close = m_rates.high - H_0;

    if ((int)(time - m_rates.time) < 60) // Время открытия нового бара отличается от времени открытия предыдущего бара менее, чем на 1-у минуту
    time = m_rates.time + 60; // Сдвиг времени открытия нового бара на одну минуту вперед

    FileSeek(m_fileHandle, -m_ratesSize, SEEK_CUR); // SEEK_CUR SEEK_SET
    FileWriteStruct(m_fileHandle, m_rates);
    FileFlush(m_fileHandle);

    m_rates.time = time;

    m_rates.high = m_rates.high - H_0;
    m_rates.open = m_rates.high;
    m_rates.tick_volume = 1; // 1 0 ????????????????????????????????????????

    }

    }
    // Продолжение формирования бара
    else
    {

    FileSeek(m_fileHandle, -m_ratesSize, SEEK_CUR); // SEEK_CUR SEEK_SET
    //last_fpos=(long)FileTell(m_fileHandle);
    }

    // Запись данных текущего бара
    if (FileWriteStruct(m_fileHandle, m_rates) != m_ratesSize)
    {
    Alert(WindowExpertName(), ": ошибка при записи в файл истории. Индикатор отключен.");
    return false;
    }

    if (doFlush)
    FileFlush(m_fileHandle);

    return true;
    }


    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1634
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 05.07.15 18:09. Заголовок: Balbesik пишет: Вст..


    Balbesik пишет:

     цитата:
    Встречный вопрос Игорю - можно ли сделать время бара (сколько секунд формировался) и как,
    если строится несколько баров внутри минутного бара или это невозможно?


    Если речь идет о гэпе, то как можно охарактеризовать время формирования бара? Это ведь один момент, бесконечно малый.
    Если же речь просто о быстром изменении котировок без гэпа (большего, чем высота рендж-бара), то несколько баров равновысокого графика будут принадлежать одной минуте. МТ4 этого "не любит". Поэтому и приходится сдвигать время каждого нового бара на 1 минуту. Меньший сдвиг организовать невозможно из-за ограничений МТ4.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 294
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 07.07.15 20:27. Заголовок: Scriptong пишет: Ес..


    Scriptong пишет:

     цитата:
    Если речь идет о гэпе, то как можно охарактеризовать время формирования бара? Это ведь один момент, бесконечно малый.
    Если же речь просто о быстром изменении котировок без гэпа (большего, чем высота рендж-бара), то несколько баров равновысокого графика будут принадлежать одной минуте. МТ4 этого "не любит". Поэтому и приходится сдвигать время каждого нового бара на 1 минуту. Меньший сдвиг организовать невозможно из-за ограничений МТ4.



    Да нет конечно, ты опять не понял (а может быть это правильно) -
    просто Игорь ты "не догоняешь"
    Простои вопрос реши - время бара? (не время открытия (закрытия)).
    Время формирования, в не закрытия или закрытия.

    Спасибо: 0 
    Профиль
    Scriptong





    Сообщение: 1645
    Зарегистрирован: 03.03.13
    Откуда: Украина, Днепродзержинск
    Репутация: 3
    ссылка на сообщение  Отправлено: 09.07.15 15:06. Заголовок: Balbesik пишет: Да ..


    Balbesik пишет:

     цитата:
    Да нет конечно, ты опять не понял (а может быть это правильно) -
    просто Игорь ты "не догоняешь"
    Простои вопрос реши - время бара? (не время открытия (закрытия)).
    Время формирования, в не закрытия или закрытия.


    Согласен, не догоняю. Объясни, чем отличается время формирования от времени открытия?

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 297
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 07.07.15 22:07. Заголовок: Я не понял по пьяне...


    «Согласен, не догоняю. Объясни, чем отличается время формирования от времени открытия?»


    Я же писал бары внутри стандартного минутного бара.

    Если задали 60 секунд, а бар формировался 20 и допустим следующий бар 25 секунд,
    время открытия все равно через 60 секунд идет.

    Если берем «большой размах», но построение прошло внутри минутного бара,
    то опять конструкция (TimeCurrent()-Time) не работает,
    если минута прошла, а бар с «большим размахом» еще не сформирован, то вроде работает.

    Запутался я с этим временами и «плюнул» - задача не моего уровня.

    Цель была простая - использовать всю доступную информацию.

    Есть более серьезная проблемка и предполагаю вопросы взаимосвязаны.
    Изложу на ветке «Недискрентные рендж-бары».


    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 298
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 07.07.15 22:18. Заголовок: B..


    Кстати запись - FileFlush(m_fileHandle); не нужна.
    можно закомментировать - вроде не влияет.

    Лишняя нагрузка на комп.

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 299
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 10.07.15 09:12. Заголовок: Ответил "на стар..


    Ответил "на старое" место сообщений, а они "не светятся".

    Спасибо: 0 
    Профиль
    Balbesik



    Сообщение: 301
    Зарегистрирован: 13.03.13
    Репутация: -1
    ссылка на сообщение  Отправлено: 13.07.15 18:10. Заголовок: Со свей стороны пос..


    Со свей стороны посмотрел - если есть решение , то я "баллеринв".
    Посмотрим на спеца!
    Просто - это не мое.
    Уверен, что спец не решит -
    Ну нет а массве места, если, тольео за счет спреда!
    Вроде можно решить.
    Жду профи.
    Ну , мне так кажеться - я решу задачку.
    А интересно решение ПРОФИ.

    Спасибо: 0 
    Профиль
    Ответов - 300 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 All [только новые]
    Тему читают:
    - участник сейчас на форуме
    - участник вне форума
    Все даты в формате GMT  2 час. Хитов сегодня: 0
    Права: смайлы да, картинки да, шрифты да, голосования нет
    аватары да, автозамена ссылок вкл, премодерация откл, правка нет