Реализация глобального массива: обзор задачи
В предыдущих выпусках я рассказал о всех функциях, которые применяются для работы с глобальными переменными. Думаю, что будет полезно привести несколько практических примеров использования этих функций.
Очень часто перед трейдером стоит задача сохранения массивов данных (список тикеров позиций, открытых этим экспертом, и т.д.) в глобальных переменных.
Конечно, можно все данные хранить в переменных эксперта, но при перезапуске клиентского терминала они будут потеряны, поэтому лучше критические данные, которые нельзя потерять ни в коем случае, хранить не в памяти, а сразу в глобальных переменных.
Функции для работы с такими массивами:
- AddItem()
- DeleteItem()
- GetItem()
- Count()
- Search()
- BSearch
- Sort()
В каждой из этих функций мы также будем использовать "критические секции", рассмотренные ранее. А иначе не избежать ситуации, когда данные будут испорчены, если в момент выполнения этих функций будет осуществлен доступ к ним из нескольких советников одновременно.
Итак, давайте попробуем описать, в каком формате у нас будет храниться глобальный массив.
Предположим, что наш глобальный массив имеет имя, которое содержится в переменной global_array_name.
Тогда:
- Количество элементов массива будет находится в глобальной переменной global_array_name+"Count".
- Глобальная переменная с именем global_array_name+"Lock" используется в качестве критической секции при вызове функций для работы с этим массивом.
- Элементы массива будут находится в переменных global_array_name+"1", global_array_name+"2" и т.д.
- Если в переменной global_array_name+"IsSorted" находится ненулевое значение, то массив отсортирован. В противном случае - неотсортированный.
Теперь мы знаем достаточно, чтобы создать необходимые функции для работы глобальным массивом. В следующем выпуске я расскажу о функции Count().
Все статьи по теме "Пишем советников для MetaTrader 4".
- Механическая торговая система - миф или реальность?
- С чего начать при написании советника:
- Создаем нового советника - Настраиваем параметры. - Язык MetaQuotes Language 4:
Комментарии по теме "Реализация глобального массива: обзор задачи"
Здравствуйте, Андрей.
Почему trailing stop в платформе MetaTraider 4 не работает? Мне посоветовали устанавливать stop loss также when I place an order.
Ответьте пожалуйста на мой
адрес ndene1@comcast.net
Спасибо,
Наум Дененберг
Автор: Naum Denenberg | 19.12.2006 16:48
Трейлинг стоп в Метатрейдер РАБОТАЕТ.
Подробности тут:
http://www.vedikhin.ru/2006/01/mt4userguide_trailing_stop.html
Автор: Андрей Ведихин | 19.12.2006 19:53