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





Сообщение: 122
Зарегистрирован: 05.03.13
Репутация: 1
ссылка на сообщение  Отправлено: 14.04.14 09:56. Заголовок: Я в шоке! Подскажите.


Всем привет!
Я в шоке! Выпал из рынка на 3,5 месяца, а тут такие перемены. Игорь подскажи, где можно ознакомиться с изменениями в MQL4?
Хотел перенести все данные на новый комп, но некоторые индикаторы после компиляции перестают работать. Вот один из них.
http://gfile.ru/a8cCP
Хотя не перекомпилированные файлы работают.
Компиляция ошибок в коде не выявляет. Но при отладке выдается ошибка формирования массива стр.67. Но в чем ошибка не пойму.
Буду благодарен, если найдешь время исправить.



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







Сообщение: 2582
Зарегистрирован: 03.03.13
Откуда: Украина, Каменское (Днепродзержинск)
Репутация: 3
ссылка на сообщение  Отправлено: 20.02.18 10:35. Заголовок: Sergey пишет: Значе..


Sergey пишет:

 цитата:
Значения есть. Мне видится дело не в этом, а в настойках стартового лота. Проблему решил так: Установил в стартовых настройках вместо расчетного постоянный лот. Таким образом строка в авто проверку не попала. Теперь жду замечания от модератора


Ну это пока Вы решили радикально. Но ведь такая возможность может потребоваться в будущем. Значит, следует разобраться, почему на золоте получены нулевые значения.
Кроме того, в том коде, который Вы привели, нет проверки деления на 0. Может просто ввести ее и ждать, пока будет получен не 0? Такое часто бывает при необходимости подкачки данных.

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





Сообщение: 567
Зарегистрирован: 05.03.13
Репутация: 1
ссылка на сообщение  Отправлено: 20.02.18 15:35. Заголовок: Scriptong пишет: Кр..


Scriptong пишет:

 цитата:
Кроме того, в том коде, который Вы привели, нет проверки деления на 0. Может просто ввести ее и ждать, пока будет получен не 0? Такое часто бывает при необходимости подкачки данных.


Идея верная... Тем более я допустил еще ряд ошибок.....
TickValue = MarketInfo(Symbol(), MODE_TICKVALUE); Я закачиваю при инициации в функции OnInit() вместе с другими параметрами, что в принципе не верно, так как для обратных и кросс курсов эта величина не постоянная. Можно дополнить примерно так: в начале OnTick()

TickValue = SymbolInfoDouble(Symbol(), SYMBOL_TRADE_TICK_VALUE);
if (TickValue = 0) return;

Верно? Или делать запрос при каждом тике не рационально,
а лучше внутри функции расчета лота примерно так:

while (true)
{
TickValue = SymbolInfoDouble(Symbol(), SYMBOL_TRADE_TICK_VALUE);
if (TickValue !=0) break;
}


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





Сообщение: 2583
Зарегистрирован: 03.03.13
Откуда: Украина, Каменское (Днепродзержинск)
Репутация: 3
ссылка на сообщение  Отправлено: 21.02.18 10:08. Заголовок: Sergey пишет: Верно..


Sergey пишет:

 цитата:
Верно? Или делать запрос при каждом тике не рационально,
а лучше внутри функции расчета лота примерно так:


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

Посмотрите, как у меня это реализовано на примере любого советника. Допустим, Quantum. В папке Include\Common есть файл Common_GetSymbolInfo.mqh. В нем - реализация класса GetSymbolInfo. Так вот, метод RefreshInfo этого класса вызывается в начале каждого тика. Внутри этого метода собираются все данные рыночного окружения. При этом неважно, что многие из них (величина пункта, к примеру) практически константы. Всякое может случиться, а потому необходимо быть готовым к изменению любого из этих параметров.

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





Сообщение: 568
Зарегистрирован: 05.03.13
Репутация: 1
ссылка на сообщение  Отправлено: 21.02.18 11:42. Заголовок: Scriptong пишет: По..


Scriptong пишет:

 цитата:
Посмотрите, как у меня это реализовано на примере любого советника.


Огромное спасибо!
Я пока сделал так
if (!SymbolInfoDouble(Symb, SYMBOL_TRADE_TICK_VALUE,TickValue))
{
Comment((isRussianLang)? "Ошибка получения данных SYMBOL_TRADE_TICK_VALUE " :
"Error retrieving data SYMBOL_TRADE_TICK_VALUE ",GetLastError());
return;
}
Но обязательно посмотрю пример. Ваш опыт очень для меня важен. Я именно на ваших примерах научился mql4.

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





Сообщение: 569
Зарегистрирован: 05.03.13
Репутация: 1
ссылка на сообщение  Отправлено: 09.05.18 15:31. Заголовок: Всем Привет! Игорь, ..


Всем Привет! Игорь, подскажи, как определить дыры в истории котировок? Вот пример: индикатор установлен на график Н1, но обсчитывает данные с М1.
Последовательность баров без дары 5,4,3,2,1,0
Та же последовательность с дыркой 4,3,_,2,1,0
Проверка типа:
//+---------------------------------------------------------------------------+
//| Проверка доступности баров указанного таймфрейма |
//+---------------------------------------------------------------------------+
bool IsAllBarsAvailable(int lastBar,int tf)
{
if(lastBar <= 0) return (false);
// Проверка доступности баров
for(int i=lastBar; i>=0; i--)
if(iTime(Symb,tf,i)==0)
return (false);
// Все бары доступны
return (true);
}
Эту дырку на М1 не замечает. Почему не пойму.... В результате проверка пройдена, а индикатор на участке с дыркой не рассчитывается.
Просьба, если есть готовое решение обнаружения дыр в истории скинь пожалуйста.

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





Сообщение: 2599
Зарегистрирован: 03.03.13
Откуда: Украина, Каменское (Днепродзержинск)
Репутация: 3
ссылка на сообщение  Отправлено: 11.05.18 20:53. Заголовок: Sergey пишет: Игорь..


Sergey пишет:

 цитата:
Игорь, подскажи, как определить дыры в истории котировок?


К сожалению, не существует универсального способа автоматической проверки наличия дыр в истории. Сам МТ4 довольно часто не замечает их и, соответственно, не заполняет дыры информацией с сервера. В таких случаях рецепт только один: вручную удалять всю историю и закачивать ее заново. Чаще всего помогает.

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

Простой пример. Открываем график и видим, что между 27.04.2018 и 30.04.2018 имеется визуальный разрыв в значениях котировок. Логично предположить, что тут дыра. Но потом смотрим календарь и видим, что это пятница и понедельник соответственно. То есть на самом деле не дыра. Этот случай еще поддается автоматизации.
Углубимся. Допустим, последняя свеча минутного графика 27.04.2018 - 22:30, хотя официальное закрытие недели значится как 22:55. Что это: недостаток данных длиной в 25 минут (дыра?) или действительно не было котировок до закрытия, потому что рынок под конец недели вялый? Вот такие случаи невозможно решить без наличия эталона. Только вот если эталон у нас имеется, то и сама проблема автоматически исчезает.

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





Сообщение: 570
Зарегистрирован: 05.03.13
Репутация: 1
ссылка на сообщение  Отправлено: 12.05.18 05:28. Заголовок: Scriptong пишет: То..


Scriptong пишет:

 цитата:
То есть нужен эталон, с которым возможно провести сравнение.


Спасибо. Благодаря твоему разъяснению, возникла идея. Попробую ее изложить и проверить.
Суть проблемы:
Скажем, Вы не открывали терминал 3 рабочих дня. После открытия терминала на 4 день, данные по всем ТФ обновляются на истории 2048 баров. Для М1 это 1,4 дня, для М5-7,1 дней. Таким образом мы имеем пробел истории котировок только на М1. Теперь, если устроить проверку согласованности графиков для М1 по времени открытия баров старшего тайм-фрейма, мы получим ошибку. Следовательно нужно закачать историю.... Конечно, полностью дыры на М1 таким образом не проверить, но будет понимание в необходимости обновления истории. По крайней мере этого будет достаточно для подбора минимального ТФ с полной закаченной историей.
Еще раз спасибо. Бегу реализовывать.....


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





Сообщение: 2600
Зарегистрирован: 03.03.13
Откуда: Украина, Каменское (Днепродзержинск)
Репутация: 3
ссылка на сообщение  Отправлено: 14.05.18 09:32. Заголовок: Sergey пишет: Бегу ..


Sergey пишет:

 цитата:
Бегу реализовывать.....


Это уже реализовано на основе тиковой истории. Вот скрипт.

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

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