![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Я предлагаю придумать алгоритм формирования ключевого значения из значений в столбцах 2,3,4,5,6,7,8,9,10,11. Для этого даже необязательно брать все столбцы. Посмотрите, может достаточно будет двух-трёх. Ключевое значение писать в первый столбец ещё на этапе заполнения массива и проверять его на дублирование.
Могу предложить два варианта формирования ключевого значения:
1. Все значения привести к типу string и сцепить их в одну строку.
2. Все значения привести к типу int просуммировать их.
Для первого случая скорее всего понадобится первый столбец вынести в отдельный одномерный массив.
Первоначальная разработка взята из ветки 'автооптимизатор', xeon предложил достаточно интересный вариант автоматической оптимизации экспертов. Но я начал его затачивать под свой эксперт.
Подключение к эксперту:
#include <Optimization.mqh>
Обращение к функции:
Tester(Symbol());
На данный момент идут пляски вокруг дубликатов в массивах, дальше хочу добавить:
1. Закачку минутной истории по нужным парам в базу торгового терминала
2. конвертацию минутной истории во все таймфреймы и копирования сконвертированных данных в терминал тестера
Попробывать сделать интелектуальный выбор варианта для торговли.
Но сначала нужно бы с массивом разобрать дубликаты по моему мнению не дают выбрать более подходящий вариант. Поэтому избавиться бы от них
Вопрос к тебе такой для чего ты используешь дробные значения, если на самом деле они целые.
Пришлось прочесать весь код в исправлениях. Или может быть тайный смысл в этом есть.
Как например смысла в строчке
if(PrFactDouble==0){PrFactDouble=1000;} //Убираем 0 в прибыльности для правильного анализа
я моло вижу. Для правильного анализа и 0.0 можно оставить. Всеравно же только сортировка идет, расчеты то никакие не видуться. С какой целью ты присваиваешь переменной значение 1000
xeon, спасибо за приведенный пример.
Вопрос к тебе такой для чего ты используешь дробные значения, если на самом деле они целые.
Пришлось прочесать весь код в исправлениях. Или может быть тайный смысл в этом есть.
Как например смысла в строчке
if(PrFactDouble==0){PrFactDouble=1000;} //Убираем 0 в прибыльности для правильного анализа
я моло вижу. Для правильного анализа и 0.0 можно оставить. Всеравно же только сортировка идет, расчеты то никакие не видуться. С какой целью ты присваиваешь переменной значение 1000
2) При сортировке максимальные значения оказываются на вершине списка, а 0.0 как известно меньше 1.0 :-) и соответственно будет меньше чем даже прибыльность 1.0
xeon, каким образом решаешь вопрос по синхронизации базы катеровок в терминале где торгует эксперт и в терминале где проходит оптимизация?
Для DDE нужно прогу отдельную будет писать, я вот думаю как штатными способами реализовать, частично реализовано, но вот беда с принудительной перезаписью HST файлов пока не совсем еще разобрался.
Поэтому я хочу сделать скрипт или интегрировать в сам эксперт генерацию hst файлов по барам в окне. Т.е. допустим открыть М1 валютной пары в нее поступают катеровки, потом их конвертим в нужные нам таймфреймы с записью на диск. После того как конвертнули скопировали в папку тестера и уже по этим данным прогнали оптимизацию.
Генерация рые файлов должна быть сделана до открытия терминала тестера.
Или вот сейчас изучяю NTFS ссылки, но проблема впринципе останется.
Нужно понять как научить эксперт обновлять историю с переодичностью 1 раз в сутки по всем таймфреймам. Скрипт впринципе есть для этого, но вешать его в бесконечный цикл на чар даже с суточной задержкой как-то не очень хочется.