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





Пост N: 1
Зарегистрирован: 17.01.13
ссылка на сообщение  Отправлено: 19.01.13 12:44. Заголовок: не подходит тип данных INT для тикетов ? посмотрим FileReadArray...


Добрый день Сергей и остальные гуру языка !
столкнулся и не смог понять странное поведение программы или отдельных функций при применении типа данных int для сохранения тикетов в файл, и последующего извлечения в массив.
на данный момент задуманная и реализованная идея заработала..НО!!! ..при применении типа данных double (8 байтового) !!!
Хотелось бы с Вашей помощью разобраться и понять на каком этапе в моем коде происходит ошибка, если я использую тип данных INT точностью 4 байта. В представленных мной кодах обширно размещены отладочные Alert , позволяющие на каждом этапе видеть ошибки или рабочие данные, в реальной программе они удалятся.
.....предыстория и структура: задумано -при удачной установке ордера сохранять(дописывать) его тикет в файл BIN с помощью функции File_WR (тип ордера, тикет ордера);.."взбираемся на волну противоп. тренда". Эта же функция подчищает при необходимости файл таким вызовом- File_WR(0,0);
Затем в любой момент времени мы можем обратиться к функции Profit (тип ордера, тип профита);для расчета профита грядки ордеров.(закрытых или рыночных), тикеты берем из того файла BIN.
В общем, у меня в коде при использовании конструкций и функций работающих с типом INT происходило "слепливание в кучу" на каком то этапе. возможно это FileReadArray...
!!! Применяемые мной конструкции int ,вместо double (стоящих теперь), оставлены за комментариями после символов >!!!!!< попробуйте их, возможно Вам ошибка будет более очевидна.

Вот в ссылке включаемый файл File_.mqh с функциями File_WR и Profit :
https://dl.dropbox.com/u/40468150/File_.mqh
Вот микроэксперт 10.mq4 для тестирования(получение результатов происходит при смене ТФ, перекомпиляции..):
https://dl.dropbox.com/u/40468150/10.mq4

надеюсь на Ваши подсказки и соображения, так как хочется более подробно понять язык.
skype: eliks100


Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 6 [только новые]







Пост N: 2
Зарегистрирован: 17.01.13
ссылка на сообщение  Отправлено: 19.01.13 14:59. Заголовок: не подходит тип данных INT для тикетов ? посмотрим FileReadArray...


Вот визуализация всего накоденного-
блок схема функции File_WR (int tip , int tikt)
https://dl.dropbox.com/u/40468150/PIC/File_WR.JPG

блок схема функции Profit (int tip, int var=-1 )
https://dl.dropbox.com/u/40468150/PIC/Profit.JPG
https://dl.dropbox.com/u/40468150/PIC/Profit2.JPG
https://dl.dropbox.com/u/40468150/PIC/Profit3.JPG

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


Пост N: 578
Зарегистрирован: 03.09.09
ссылка на сообщение  Отправлено: 19.01.13 22:00. Заголовок: Доброго времени суто..


Доброго времени суток.

Пока не удалось воспроизвести описываемую Вами ошибку (в тестере, т.к. нет под рукой терминала, в котором открыто два и более ордеров; установить реальные ордера тоже невозможно - суббота). Подставил вместо типа double тип int везде, где это требуется. Алгоритм работы программы не изменился. Все данные пишутся и читаются верно.
Возможно, для воспроизведения ошибки требуется какая-то специфическая ситуация, не описанная Вами.

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 3
Зарегистрирован: 17.01.13
ссылка на сообщение  Отправлено: 23.01.13 12:51. Заголовок: спасибо! немного ст..


спасибо!
немного странно...но теперь и у меня с INT заработало.
наверно была синтаксическая ошибка которую не заметно..
вот такая рабочая версия
https://dl.dropbox.com/u/40468150/File__.mqh

вот еще существенный вопрос: в связи с идеей применения функций File_WR (1 , 0), File_WR (0 , 0) в теле init() , возникает такая задача:
КАК избежать создания и ОБНУЛЕНИЯ файлов типа SYMBOL_B_tickets.bin при ПЕРЕИНИЦИАЛИЗАЦИИ эксперта по причине: 1. смена таймфрейма, 2. перекомпиляция кода., 3. переинициализация после обрыва связи с сервером, 4. и др. причины инициализации... кроме ПРИЧИНЫ -ПРИСОЕДИНЕНИЕ К ГРАФИКУ В ПЕРВЫЙ РАЗ(когда нужно создать файлы).
Буду рад услышать советы мастеров ! :)



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


Пост N: 583
Зарегистрирован: 03.09.09
ссылка на сообщение  Отправлено: 23.01.13 16:33. Заголовок: В этом случае достат..


В этом случае достаточно воспользоваться функцией UninitializeReason, которую необходимо вызвать при деинициализации советника (событие deinit). Результат вызова функции можно записать в глобальную переменную, которую потом проверять в событии init:

 цитата:

int g_unInitReason = 0;

int init()
{
...
switch (g_unInitReason)
{
case REASON_CHARTCLOSE: <действие 1>; break;
case REASON_REMOVE: <действие 2>; break;
case REASON_RECOMPILE: <действие 3>; break;
case REASON_CHARTCHANGE:<действие 4>; break;
case REASON_PARAMETERS:<действие 5>; break;
case REASON_ACCOUNT: <действие 6>; break;
case 0: <действие при первом присоединении к графику>; break;
}
...
}
int deinit()
{
...
g_unInitReason = UnitializeReason();
...
}



Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 4
Зарегистрирован: 17.01.13
ссылка на сообщение  Отправлено: 23.01.13 17:01. Заголовок: UnitializeReason() ..


UnitializeReason() - показывает код ТЕКУЩЕЙ деинициализации( мы вызвали UnitializeReason в deinit( ) ) , или ПРЕДЫДУЩЕЙ деинициализации советника?
..я как то ранее думал, что код деинициализации становится известен Этой функции после завершения deinit()...или это предположение не верно?

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


Пост N: 584
Зарегистрирован: 03.09.09
ссылка на сообщение  Отправлено: 23.01.13 17:35. Заголовок: Функция сообщает при..


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

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 11
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет