Подписаться на мою рассылку Материалы в категории ""May 12, 2007 Эксперт по теории Хаоса Б.Вильямса: как анализировать только сформировавшиеся бары (исходный код)May 11, 2007 Эксперт по теории Хаоса Б.Вильямса: как анализировать только сформировавшиеся барыВ этом выпуске я расскажу, как анализировать только сформировавшиеся бары. Я считаю, что совершенно бесполезно, и даже вредно, смотреть на показатели индикаторов бара, который еще не сформировался. Дело в том, что может быть в эту секунду индикаторы и сигнализируют о медвежьих настроениях, но уже через небольшое время на том же баре показатели индикаторов будут совершенно противоположными. Именно по этой причине я никогда не смотрю на последний, несформировавшийся бар. Своей традиции я не изменю и при написании нашего эксперта по теории хаоса. Я буду выходить из функции start(), если мы последний сформировавшийся бар уже анализировали.
May 5, 2007 Эксперт по теории Хаоса Б.Вильямса: определение текущего состояния (исходный код)В прошлом выпуске я рассказал о том, как при запуске эксперта определить его состояние, т.е. стоим ли мы в покупку, или же мы медвежим, или же мы квадратные (т.е. без открытых позиций). В этом выпуске я выложу полный исходный код того, что у нас на данном этапе получилось.
May 4, 2007 Эксперт по теории Хаоса Б.Вильямса: определение текущего состоянияВ прошлом выпуске я рассказал о том, как мы будем рассчитывать магическое число для нашего эксперта, чтобы отличать позиции, открытые нашим экспертом на определенном тайм-фрейме, от позиций, открытых другими экспертами или на других временных периодах. В этом выпуске я расскажу о том, как при запуске эксперта определить его состояние, т.е. стоим ли мы в покупку, или же мы медвежим, или же мы квадратные (т.е. без открытых позиций).
April 22, 2007 Вышел 167-й номер журнала для трейдеров FOREX MAGAZINE
April 15, 2007 Эксперт по теории Хаоса Б.Вильямса: магическое числоВ прошлом выпуске я начал написание эксперта, торгующего по теории Хаоса Б.Вильямса. Я разбил большую задачу написания эксперта на несколько маленьких блоков и тем самым заложил план или структуру нашего эксперта. Этим выпуском я начинаю практическую реализацию каждого блока. Вначале реализуем алгоритм вычисления магического числа, уникального для этого эксперта и периода графика.
April 4, 2007 Эксперт по теории хаоса Билла Вильямса: обзорСегодняшним постом я начинаю публикацию своих действий по созданию эксперта, который будет торговать в соответствии с теорией хаоса Билла Вильямса. У этого эксперта будет только ограничение: он не будет использовать сигналы из пятого измерения. Я очень долго думал, в каком формате провести это практическое занятие в рамках моего блога, и пришел к выводу, что наилучшим выходом будет, если я каждый день буду дополнять код моего эксперта, начав с абсолютного нуля. В этом случае Вы сможете шаг за шагом пройти через все этапы, через которые обычно проходит создатель экспертов. Вместе со мной Вы сможете повторить все мои ошибки и почувствовать ход моей мысли. Даже если он будет иногда идти в неправильном направлении. Это будет своего рода онлайн дневник по созданию эксперта. Сразу хочу предупредить, что зачастую первоначальные мысли через несколько дней могут измениться или быть оптимизированы. В результате этого часто приходится выкидывать в корзину весь предыдущий код. Поэтому прошу в любом случае не кидать в меня помидоры, а пройти со мной весь этот непростой, но очень приятный путь создания эксперта с самого начала и до этапа тестирования его на исторических данных. Итак, начнем...
March 31, 2007 iBWMFI() - функция в эксперте для расчета значения Market Facilitation Index (BW MFI)В прошлом выпуске я рассказал, как рассчитывается Индекс Облегчения Рынка (Market Facilitation Index, BW MFI) и какие сигналы он подает. В этом выпуске я расскажу, как этот индикатор можно использовать в Ваших экспертах.
March 27, 2007 Индекс Облегчения Рынка (Market Facilitation Index, BW MFI)March 23, 2007 Как выходить из рынка, захватив не менее 80% движенияЧувствительная к ценовой динамике методика выхода из рынка позволяет зафиксировать прибыль в последних 10% тренда, захватив не менее 80% движения (со слов Б.Вильямса). Билл Вильямс предложил несколько способов установки Stop Loss ордеров:
March 21, 2007 Пятое измерение: сигнал на продажу выше Линии БалансаПо сути своей сигнал на продажу выше Линии Баланса очень похож на сигнал на покупку ниже Линии Баланса. В обоих случаях ставка делается на "приближение" цены к Линии Баланса, т.е. цена будет "подниматься на гору".
March 16, 2007 Пятое измерение: сигнал на продажу ниже Линии БалансаСигнал на продажу ниже Линии Баланса очень похож по своей сути на сигнал на покупку выше Линии Баланса. В обоих случаях ставка делается на "удаление" цены от Линии Баланса. Согласно правилу №4 нам нужен всего один минимум для формирования сигнала:
March 15, 2007 Пятое измерение рынка: сигнал на покупку ниже Линии БалансаВ прошлых выпусках я рассказал о том, как определить базовый бар и о сигнале на покупку выше Линии Баланса. В этом выпуске я подробно опишу сигнал на покупку ниже Линии Баланса.
March 8, 2007 Пятое измерение рынка: сигнал на покупку выше Линии БалансаВ прошлом выпуске я рассказал, как определить базовый бар на покупку или продажу. О второй необходимой составляющей - поиске момента покупки или продажи Линии Баланса я начну рассказывать в этом выпуске. Начну с сигнала на покупку выше Линии Баланса.
March 2, 2007 Пятое измерение рынка: торговля Линий БалансаЛиния Баланса – это линия, на которой бы находилась цена, если бы не поступало новой информации (Хаоса), влияющей на рынок в настоящей момент. Б.Вильямс попытался с помощью сложнейших математических расчетов и моделирования на компьютере найти эту Линию Баланса и построить гистограмму, которая показывала бы расстояние между ценой и Линией Баланса. К его удивлению оказалось, что это расстояние очень хорошо и с достаточной степенью достоверности описывается гистограммой Awesome Oscillator.
March 1, 2007 Зональная торговля - четвертое измерение рынка Б.ВильямсаКогда движущая сила (Awesome Oscillator - АО) и ускорение (Acceleration/Deceleration - АС) направлены в одну сторону (оба зеленые или оба красные) - это означает, что движущая сила не только движется в этом направлении, но и еще ускоряется. На этом принципе базируется зональная торговля (четвертое измерение Б.Вильямса).
February 28, 2007 Acceleration/Deceleration Oscillator (AC): сигналы на покупку "ниже нулевой линии" / на продажу "выше нулевой линии"В прошлом выпуске я рассказал о сигналах индикатора Acceleration/Deceleration Oscillator (AC) на покупку "выше нулевой линии" / на продажу "ниже нулевой линии". В этом выпуске я расскажу о сигналах Acceleration/Deceleration Oscillator (AC) на покупку "ниже нулевой линии" / на продажу "выше нулевой линии". Если гистограмма AC ниже ноля, то сигнал на покупку "ниже нулевой линии" образуется, когда появилось три последовательных столбца с более высокими значениями, чем самый последний наименьший столбец.
February 22, 2007 iAC(): Acceleration/Deceleration Oscillator (AC) - третье измерение рынкаИндикатор Ускорения/Замедления (Acceleration/Deceleration, AC) измеряет ускорение и замедление движущей силы (третье измерение). Предположим, мяч катится по улице (с помощью Awesome Oscillator можно определить его движущую силу). Если дорога пойдет в гору, то мяч начнет замедляться (т.е. у него появится обратное ускорение), и хотя Awesome Oscillator (AO) будет по-прежнему правильно определять движущую силу мяча, скоро наступит момент, когда мяч остановится. Чтобы этот момент не застал трейдера врасплох, Б.Вильямс предлагает использовать индикатор Acceleration/Deceleration (АС) для измерения этого ускорения. Прежде, чем поменяется динамика цены, изменится движущая сила. А еще раньше изменится ускорение. Поэтому индикатор Acceleration/Deceleration – важная составляющая успешной торговли.
February 21, 2007 Awesome Oscillator (AO): сигнал на покупку/продажу два пикаВ предыдущих выпусках я рассмотрел первые два сигнала индикатора Awesome Oscillator (AO): В этом выпуске я расскажу о третьем виде сигнала индикатора Awesome Oscillator (AO): сигнале на покупку/продажу "два пика".
February 15, 2007 Awesome Oscillator (AO): сигналы на покупку/продажу "пересечение нулевой линии"Сигнал на покупку (продажу) "пересечение нулевой линии" появляется, когда гистограмма пересекает линию ноля снизу вверх (сверху вниз) – см. рис. 1. В этом случае также выставляем отложенный ордер Buy Stop (Sell Stop) на 1 пипс выше максимума (ниже минимума) сигнального бара. В случае сигнала на покупку "пересечение нулевой линии" столбец "B" (сигнальный) обязательно зеленый, а в случае сигнала на продажу – красный.
February 14, 2007 Awesome Oscillator (AO): сигналы на покупку/продажу "блюдце"Сигнал на покупку "блюдце" Сигнал возникает, когда гистограмма, расположенная выше нулевой линии, меняет направление с нисходящего на восходящее (рис. 1). Столбец "A" должен быть выше столбца "B" и может быть любого цвета. Столбец "B" должен быть красным. Столбец "C" (сигнальный) должен быть зеленым. Сигнальный бар - бар, на котором образовался сигнальный столбец.
February 9, 2007 iAO(): Волшебный Осциллятор Билла Вильямса (Awesome Oscillator - AO) - второе измерение рынкаВолшебный осциллятор (Awesome Oscillator - AO) определяет движущую силу рынка (второе измерение) в данный момент по 5 последним барам, сравнивая их с движущей силой на последних 34 барах. Awesome Oscillator – это разница, полученная вычитанием 34-периодного простого скользящего среднего, построенного по центральным значениям баров (H+L)/2, из 5-периодной SMA по центральным значениям баров (H+L)/2. На графике индикатор представляется в виде гистограммы (рис. 1).
February 8, 2007 iFractals(): фракталы Б.Вильямса - первое измерение рынкаФрактал на покупку – серия из пяти последовательных баров, в которой перед самым высоким максимумом и за ним находятся по два бара с более низкими максимумами. Фрактал на продажу – серия из пяти последовательных баров, в которой перед самым низким минимумом и за ним находятся по два бара с более высокими минимумами.
February 7, 2007 iGator() - определение периодов сна и бодроствования Аллигатора с помощью Gator OscillatorGator Oscillator показывает степень схождения/расхождения Линий Баланса (рис. 1). Для добавления индикатора Gator на график платформы MetaTrader 4 выберите пункт меню "Вставка -> Индикаторы -> Билла Вильямса - Gator Oscillator".
February 2, 2007 iAlligator() - Аллигатор Билла Вильямса (Alligator)Рассмотрение функций языка MQL4, с помощью которых Вы можете использовать встроенные индикаторы технического анализа в своих экспертах, я начну с функции iAlligator(). С помощью этой функции можно получить значения Аллигатора Билла Вильямса (Alligator). Думаю, будет нелишним сначала рассказать о самом идикаторе.
February 1, 2007 Стандартные индикаторы технического анализа в MQL4Этим постом я начинаю рассматривать стандартные индикаторы технического анализа, которые можно использовать в экспертах. MetaTrader 4 - один из лучших клиентских терминалов, с очень большим списком встроенных индикаторов технического анализа. В своих предыдущих выпусках, посвященных техническому анализу, теории хаоса Б.Вильямса, индикатору Ишимоку и теории Демарка, я рассказал почти о каждом из них. Вот полный список функций языка MQL4, с помощью которых Вы можете использовать встроенные индикаторы технического анализа в своих экспертах:
January 30, 2007 Пример работы функции Sort() - сортировки методом пузырькаВ прошлом выпуске я привел исходный код функции Sort() глобального массива, которая осуществляет сортировку методом пузырька. На мой взгляд, подробно разбирать ее не имеет смысла, т.к. она содержит много комментариев. Проблема с пониманием может возникнуть только на этом участке кода:
January 25, 2007 Исходный код функции сортировки методом пузырькаВ прошлом выпуске я рассказал о сортировке методом пузырька. В этом выпуске я приведу исходный код функции, которая сортирует массив таким методом.
January 23, 2007 Сортировка методом пузырькаВ прошлых выпусках я начал рассмотрение способа реализации глобальных массивов и рассказал о функциях Count(), AddItem(), SearchItem(), GetItem() и DeleteItem(). В этом выпуске я расскажу о том, как можно отсортировать глобальный массив по возрастанию или убыванию. Один из наиболее простых в реализации, но медленных по скорости методов сортировки - метод пузырька.
January 19, 2007 Эксперт, торгующий в ночное время: реализация трейлинг стопаНа данный момент я разобрал практически весь код "ночного" эксперта. Мне осталось рассказать лишь о реализации трейлинг-стопа. Напомню, что Trailing Stop (трейлинг стоп) – это алгоритм управления уровнем Stop Loss ордера. После выставления трейлинг-стопа (например, на Х пипсов) происходит следующее:
January 17, 2007 Эксперт, торгующий в ночное время: функция start() - продолжениеВ прошлом выпуске я начал рассмотрение того, как реализована функция start() "ночного" эксперта. В этом выпуске я рассмотрю оставшиеся части кода эксперта.
January 16, 2007 Эксперт, торгующий в ночное время: функция start()В этом выпуске я расскажу о том, как работает функция start() "ночного" эксперта, который был описан в прошлых выпусках.
January 12, 2007 Эксперт, торгующий в ночное время: функция init()В прошлом выпуске я разместил код эксперта, торгующего в ночное время. Давайте разберем, как же этот эксперт работает. Начнем с функции init().
January 9, 2007 Торговля в ночное времяЧто-то все так мне и не получается приступить к рассмотрению способов сортировки глобальных массивов. Сегодня я получил очередное письмо от читателя моего блога с просьбой помочь в реализации ночной торговли на языке MQL4. Данное письмо мне показалось интересным и я написал эксперта, который так интересовал автора письма. Основная идея эксперта заключается в том, что определенное время (задается параметром StartTime) эксперт выставляет buy limit ордер на BuyLimit_Diff пипсов ниже Bid и sell limit ордер на SellLimit_Diff пипсов выше цены Ask. Дата эксперации ордеров задается в минутах в параметре Expiration. Если один из отложенных ордеров срабатывает, то второй удаляется (т.е. они OCO ордера - One Cancells Other). Stop Loss ордер выставляется на расстоянии BuyLimit_SL и SellLimit_SL пипсов от цены ордера соответственно. Величина трейлинг стопа задается в параметре TrailingStop.
January 5, 2007 Пример ограничения числа одновременно открытых позицийВ прошлом выпуске я описал функции StartTrading() и StopTrading(), с помощью которых можно ограничить количество одновременно открытых позиций и выставленных ордеров. В этом выпуске я приведу пример использования этих функций. Напишем простого эксперта, который на каждом тике открывает новую позицию на покупку. Максимально возможное число открытых позиций пусть будет 3.
January 4, 2007 Как ограничить количество одновременно открытых позиций/отложенных ордеровПо плану в этом выпуске у меня было изложение теории сортировки глобального массива методом пузырька (медленным методом, но простым в реализации), после вчерашнего письма от клиента мне показалось, что читателям моего блога будет интересно узнать, как можно ограничить количество одновременно открытых позиций и выставленных отложенных ордеров. Дело в том, что если просто проверять количество позиций с помощью функции OrdersTotal() и сразу же открытие новой позиции, то в случае, когда эксперт прикреплен на графики разных периодов, но по одному и тому же инструменту, мы получим "лишние" открытые позиции. Чтобы избежать этого, надо использовать критические секции.
December 28, 2006 Глобальные массивы: функция DeleteItem()В этом выпуске я расскажу о функции DeleteItem(), с помощью которой Вы сможете удалить элемент с индексом index из массива array: bool DeleteItem(string array, int index, bool &is_sorted) Функция возвращает true в случае успешного удаления и false - в случае ошибки.
December 27, 2006 Глобальные массивы: функция GetItem()Очень полезной функцией для работы с глобальным массивом может стать функция GetItem(): bool GetItem(string array, int index, double &result) Эта функция пытается получить значение элемента с индексом index и вернуть это значение через переменную result в переменную, указанную в качестве третьего параметра при вызове этой функции.
December 22, 2006 Глобальные массивы: технология поискаВ прошлом выпуске я привел код функции SearchItem(), с помощью которой можно найти элемент в массиве. Эта функция возвращает:
Для того, чтобы понять принцип работы этой функции, будет полезно рассказать о различных технологиях поиска.
December 21, 2006 Глобальные массивы: функция SearchItem()Поскольку мы используем глобальные массивы для хранения данных, то вполне вероятно, что нам понадобятся функции поиска элемента в массиве. Технология поиска будет зависеть от того, упорядочен ли наш массив:
Итак, напишем функцию SearchItem(), которая осуществляет поиск в массиве и возвращает:
December 19, 2006 Глобальные массивы: функция AddItem()В этомы выпуске я опишу функцию AddItem(), которую мы будем использовать для добавления нового элемента в массив.
December 15, 2006 Реализация глобального массива: обзор задачиВ предыдущих выпусках я рассказал о всех функциях, которые применяются для работы с глобальными переменными. Думаю, что будет полезно привести несколько практических примеров использования этих функций. Очень часто перед трейдером стоит задача сохранения массивов данных (список тикеров позиций, открытых этим экспертом, и т.д.) в глобальных переменных. Конечно, можно все данные хранить в переменных эксперта, но при перезапуске клиентского терминала они будут потеряны, поэтому лучше критические данные, которые нельзя потерять ни в коем случае, хранить не в памяти, а сразу в глобальных переменных.
December 14, 2006 GlobalVariablesDeleteAll() - удаление глобальных переменныхВ прошлых выпусках мы рассмотрели огромное количество функций, которые используются при работе с глобальными переменными, а также я привел большое количество полезных примеров практического использования этих функций. Фактически только одна функция осталась неописанной - GlobalVariablesDeleteAll().
December 8, 2006 GlobalVariableName(): имя глобальной переменнойВ этом выпуске я расскажу о функции GlobalVariableName(): string GlobalVariableName(int index) Функция GlobalVariableName() возвращает имя глобальной переменной с номером index. Порядковый номер переменной должен быть большим или равным нулю, но меньше, чем значение, возвращаемое функцией GlobalVariablesTotal().
December 7, 2006 GlobalVariablesTotal() - количество глобальных переменныхВ прошлых выпусках я рассказал об очень полезных функциях, предназначенных для работы с глобальными переменными:
Рассмотренных ранее функций вполне достаточно, чтобы выполнить любое действие с глобальной переменной, если известно ее имя. Однако иногда Вы можете не знать имени глобальной переменной и Вам захочется ее найти среди других переменных. В этом Вам помогут функции GlobalVariablesTotal() и GlobalVariableName().
December 6, 2006 "Критическая секция": функции Lock() и Unlock()В прошлом выпуске я начал рассказывать о критических секциях и привел исходный код функций, с помощью которых эти критические секции реализуются: Lock() и Unlock(). В этом выпуске я хотел остановится на этих функциях подробнее.
December 1, 2006 "Критическая секция": разграничение доступа к ресурсуВ этом выпуске я расскажу о способе организации "критической секции" в советнике. Дело в том, что если в момент выполнения этих функций будет осуществлен доступ к массивам данных, хранимых в глобальных переменных, из нескольких советников одновременно, то результат будет непредсказуемым и в большинстве случаев данные будут испорчены. Для того, чтобы избежать этого, мы создадим объект "критическая секция", который может находиться в двух состояниях:
В каждый конкретный момент только один советник может получить доступ к данным. Пока советник получает данные, будет гореть "красный свет" и другие советники будут ждать "зеленового света". Если горит "зеленый свет", то дорога свободна, т.к. никто в данный момент к данным не обращается.
GlobalVariableDel() - удаление глобальной переменнойВ этом выпуске я расскажу о том, как удалить глобальную переменную. Для этого используется функция GlobalVariableDel(): bool GlobalVariableDel(string name)
November 30, 2006 GlobalVariableGet() - получение значения глобальной переменнойВ прошлых выпусках я рассказал о том, как:
В этом же выпуске я расскажу о функции GlobalVariableGet(), с помощью которой можно получить значение глобальной переменной.
November 22, 2006 Функции StartTrading() и StopTrading()В прошлом выпуске я привел исходные коды двух функций: StartTrading() и StopTrading(). В этом выпуске я расскажу о том, что делают эти функции и как использовать.
November 21, 2006 Пример использования функции GlobalVariableSetOnCondition()В прошлом выпуске я рассказал о функции GlobalVariableSetOnCondition(). В этом же выпуске я хотел бы рассмотреть пример ее практического использования.
November 18, 2006 Календарь событий рынка FOREX на 20.11.2006-24.11.2006Каждую неделю Вы сможете найти на моем сайте календарь предстоящих событий в мире, которые могут повлиять на динамику валют на рынке FOREX.
November 17, 2006 GlobalVariableSetOnCondition() - установка нового значения глобальной переменной, если текущее ее значение равно заданному значениюВ прошлом выпуске я рассказал о функции GlobalVariableSet(), с помощью которой можно присвоить новое значение глобальной переменной. К счастью, создатели языка MetaQuotes Language 4 являются профессиональными программистами и заранее могут предугадать, что может понадобиться трейдеру при написании экспертов. Я им очень благодарен, что они включили в список функций языка MetaQuotes Language 4 функцию GlobalVariableSetOnCondition(). Давайте же рассмотрим, чем так полезна эта функция.
November 16, 2006 GlobalVariableSet() - установка нового значения глобальной переменнойВ прошлом выпуске я рассказал о том, как проверить наличие глобальной переменной с помощью функции GlobalVariableCheck(). Предположим, что ее не существует или же нам надо изменить ее значение. В этом случае надо использовать функцию GlobalVariableSet().
November 9, 2006 GlobalVariableCheck(): проверка существования глобальной переменнойВ этом и последующих выпусках я хочу рассказать о глобальных переменных и о функциях, с ними связанных. Для человека, имеющего уже опыт написания экспертов, выражение "глобальные переменные" может внести небольшую путанницу. Дело в том, что на самом деле существует два вида "глобальных переменных":
О глобальных переменных первого типа - тех, которые являются общими для всех функций ОДНОГО эксперта, - я рассказывал ранее, в выпуске "Глобальные переменные". Сейчас же речь пойдет именно о глобальных переменных второго типа - общих для ВСЕХ экспертов.
November 8, 2006 Определение режима тестирования на истории с помощью функции IsTesting()В прошлом выпуске я написал функцию WaitBeforeTransaction(), которая выдерживает паузу между двумя последовательными торговыми операциями. В коде этой функции встречается очень много незнакомых функций. В этом и последующих выпусках я планирую очень кратко о них рассказать.
November 4, 2006 Выдерживаем паузу между торговыми операциямиВ клиентском терминале MetaTrader 4 в отличии от MetaTrader 3 нет жесткого ограничения на паузу между торговыми операциями, совершаемых советниками. Поэтому теоретически можно совершать хоть десятки сделок в секунду. Однако чрезмерное злоупотребление этим приведет к тому, что Ваш счет будет заблокирован для торговли. Это произойдет или потому, что сервер подумает, что такое количество запросов в секунду может осуществлять только злоумышленник, который ставит перед собой лишь цель "завалить" торговый сервер. Или потому, что сотнями запросами в минуту Вы разъярите дилера - сотрудника дилингового центра, которому приходится обрабатывать Ваши запросы. Считается правилом хорошего тона не совершать торговые операции чаще, чем 1 раз в 5-10 секунд. Конечно, в любом правиле могут быть исключения и иногда Вам крайне необходимо совершить операции с меньшим временным лагом, но старайтесь этой возможностью не злоупотреблять. Старайтесь выдерживать паузу минимум в 5 секунд. В этом Вам поможет моя функция WaitBeforeTransaction()
November 2, 2006 Пример использования функции WaitUntilTradingIsAllowed()Напомню, что для решения проблемы занятости торгового потока другим экспертом (в MetaTrader 4 в каждый конкретный момент только один эксперт может торговать) я написал функцию WaitUntilTradingIsAllowed(). Ее код был приведен в выпуске "Как избежать ошибок, если несколько экспертов торгуют одновременно". В этом выпуске я расскажу о примере использования этой функции в экспертах.
October 26, 2006 RefreshRates(): обновление информации о текущих котировкахВ прошлых выпусках в эксперте мы использовали функцию RefreshRates(), чтобы обновить информацию о текущих котировках. В нашем примере мы были вынуждены использовать эту функцию, потому что за время ожидания, пока другой эксперт закончит торговать и функция WaitUntilTradingIsAllowed() завершит свое исполнение, котировки могли измениться. Чтобы не пытаться совершить сделку по старым котировкам и не получить сообщение об ошибке, мы обновляем информацию о текущих котировках с помощью функции RefreshRates().
October 25, 2006 IsStopped(): как проверить, что эксперт был остановленВ прошлом выпуске я привел код функции WaitUntilTradingIsAllowed(), которая поможет нам избежать ошибки ERR_TRADE_CONTEXT_BUSY (146), возникающей когда одновременно пытаются торговать два эксперта. В этом коде несколько функций нам незнакомы. Одна из них - функция IsStopped().
October 23, 2006 Как избежать ошибок, если несколько экспертов торгуют одновременноКак я уже говорил в прошлом выпуске, в каждый момент времени только один эксперт может торговать. Если в этот момент второй эксперт попытается совершить торговую операцию, то торговая функция вернет ошибку ERR_TRADE_CONTEXT_BUSY (146). Что же делать, если у Вас торгует одновременно несколько экспертов? Напишем функцию, которая возвращает:
Если в момент обращения к функции торговый поток был занят, то функция ждет, пока он освободится. После этого она обновляет данные о текущих котировках с помощью функции RefreshRates() и возвращает 0.
October 20, 2006 Как убедиться, что советник может торговатьВ прошлых выпусках я рассказал о различных торговых функциях, с помощью которых можно открывать/закрывать позиции, выставлять/модифицировать/удалять ордера: OrderSend(), OrderModify(), OrderDelete(), OrderClose() и OrderClosyBy(). В каждом случае мы исходили из того, что советнику разрешено торговать. Но в реальности это не всегда так. В этом выпуске я расскажу о трех функциях: IsExpertEnabled(), IsTradeContextBusy() и IsTradeAllowed().
October 19, 2006 Коды ошибок в советниках и функция GetLastError()Как я уже неоднократно упоминал в предыдущих выпусках, если какая-то функция вернула ошибку, то код этой ошибки можно получить с помощью функции GetLastError(): int GetLastError()
October 18, 2006 OrderCloseBy() - закрытие одной позиции другой (продолжение)В прошлом выпуске я рассмотрел пример использования функции OrderCloseBy(). Вначале я расскажу о самой функции, а потом разберу каждую новую строчку нашего эксперта.
October 17, 2006 OrderCloseBy() - закрытие одной позиции другойВ прошлых выпусках мы рассмотрели пример применения функции OrderClose(). В этом примере мы закрывали все открытые позиции и удаляли отложенные ордера в 22:00 пятницы по времени торговой платформы. Код эксперта был приведен в выпуске "Пример использования функции OrderClose()". Этот эксперт был абсолютно безупречен с технической точки зрения, но с финансовой точки зрения можно было бы написать более выгодного для нас эксперта. Если вместо того, чтобы просто закрывать открытую позицию по текущей цене, использовать, где возможно, закрытие одной локированной позиции другой локированной позицией, то в этих случаях мы будем терять не два спрэда, а только один. Давайте перепишем нашего эксперта с учетом этого совета. В этом нам поможет функция OrderCloseBy():
October 13, 2006 Пример использования функции OrderClose() - продолжениеПрошу прощения, что на этой неделе я выкладываю материалы на блог не каждый день. В связи с предстоящим запуском открытия реальных счетов в Alpari (UK) моя загруженность на работе просто превысила все мыслимые пределы. В последние 4 дня я сплю по 3 часа в день. Но это не помешает мне более ответственно относиться к публикации материалов на следующей неделе. В прошлом выпуске я разместил код эксперта, который закрывает все открытые позиции и удаляет все отложенные ордера в пятницу после 22:00 (по времени торговой платформы). Этого эксперта я написал, чтобы показать Вам практический пример использования функции OrderClose(). В этом выпуске я хотел бы подробно разобрать каждую строчку кода этого советника.
October 11, 2006 Пример использования функции OrderClose()В прошлом выпуске я рассказал о том, как можно закрыть открытую позицию с помощью функции OrderClose(). Практических примеров применения этой функции можно привести бесчисленное количество, т.к. в большинстве экспертов существует потребность закрывать позиции не только по Stop Loss или Take Profit ордеру, но и по текущей цене. Мы же в качестве примера применения функции OrderClose() рассмотрим эксперт, который закрывает все открытые позиции и удаляет все отложенные ордера в пятницу после 22:00 (по времени торговой платформы).
October 9, 2006 Закрытие позиции с помощью функции OrderClose()В предыдущих выпусках я рассмотрил уже много полезных торговых функций:
Пришло время рассказать о том, как закрыть открытую позицию с помощью функции OrderClose().
October 5, 2006 Пример использования функции OrderDelete()В прошлом выпуске я рассмотрел функцию OrderDelete(). Эта функция удаляет отложенный ордер. Рассмотрим применение этой функции на примере:
October 4, 2006 OrderDelete() - удаление отложенного ордераМы уже знаем, как можно выставить отложенный ордер. Для этого надо использовать функцию OrderSend(). Также мы умеем изменять параметры отложенных ордеров с помощью функции OrderModify(). В этом выпуске я расскажу о том, как можно удалить отложенный ордер. Это можно сделать с помощью функции OrderDelete().
October 3, 2006 OrderModify() - изменение параметров отложенных ордеров и открытых позицийВ прошлых выпусках я рассмотрел очень полезную функцию - OrderSend(). А в этом выпуске я расскажу о функции OrderModify().
October 2, 2006 Пример использования функции OrderSend() - продолжениеВ прошлом выпуске я написал по просьбе одного из читателей моего блога эксперт, в котором воплощена следующая логика:
В этом выпуске я хотел бы разобрать подробно логику работы этого эксперта.
September 28, 2006 Пример использования функции OrderSend()Сегодня, разбирая почту, я наткнулся на очень давнее письмо, в которым один из читателей моего блога попросил мне помочь в написании такого эксперта:
September 26, 2006 Параметры функции OrderSend() - продолжениеВ прошлых выпусках я рассказал о функции OrderSend() и начал рассмотрение ее параметров. В прошлом выпуске мною были рассмотрены параметры cmd и price. В этом выпуске я расскажу о параметрах StopLoss, TakeProfit и expiration.
September 21, 2006 Параметры функции OrderSend()В прошлом выпуске я рассказал о функции OrderSend(). В этом выпуске я хотел бы остановиться на параметрах этой функции более подробно.
September 18, 2006 OrderSend() - открытие позиции или размещение отложенного ордераВ прошлых выпусках я рассказал о большом количестве функций, с помощью которых можно получить информация об ордере, выделенном с помощью функции OrderSelect(). Большинство из этих функций очень важны и полезны. Однако я уверен, что Вам уже давно хочется экшина, т.е. Вы давно уже ждете от меня описания тех торговых функций, с помощью которых можно открывать и закрывать позиции, выставлять, модифировать и удалять ордера. Сегодня я расскажу о первой такой функции - функции OrderSend().
September 15, 2006 OrderMagicNumber() - идентификационное (магическое) число для выбранного ордераОчень часто трейдеру бывает нужно как-то идентифицировать ордера или позиции. Например, полезно знать, открыт ли данный ордер именно этим экспертом или на каком периоде графика сработал торговый сигнал. Разработчики MetaTrader 4 предусмотрели для таких случаев очень полезную торговую функцию - OrderMagicNumber().
September 13, 2006 OrderExpiration() - дата истечения отложенного ордераПеред тем, как я перейду к рассмотрению торговых функций для открытия/закрытия позиции или управления ордерами, мне осталось рассказать о двух функциях: OrderExpiration() и OrderMagicNumber(). В этом выпуске я расскажу о торговой функции OrderExpiration().
September 12, 2006 OrderLots() - количество лотов в выделенном ордере или позицииВ последующих функциях мы рассмотрим торговые функции, с помощью которых можно открывать/закрывать позиции, размещать/модифицировать и удалять ордера:
Очень часто необходимо указать количество лотов открытой позиции или отложенного ордера. Самой простой вариант получить это значение - это выделить позицию или ордер с помощью функции OrderSelect(), а потом вызвать функцию OrderLots().
September 7, 2006 OrderOpenTime() - время открытия ордера или позиции, выделенного функцией OrderSelect()В прошлом выпуске мы посчитали прибыль по закрытым позициям. Теперь усложним задачу: сосчитаем прибыль только по закрытым позициям, которые были открыты сегодня. С помощью функции OrderOpenTime() мы можем получить дату и время открытия ордера или позиции, выделенного предварительно с помощью функции OrderSelect().
September 6, 2006 OrderProfit() - прибыль выделенного ордераЯ еще не начал рассмотрение торговых функций, с помощью которых можно открывать/закрывать позиции и управлять ордерами. Я уверен, что Вам уже не терпится научить Вашего эксперта торговать, и я очень скоро Вас этому научу. Однако перед этим я хотел бы рассмотреть несколько оставшихся торговых функций, с помощью которых можно получить информацию об ордере, выделенном с помощью функции OrderSelect(). Сегодня я расскажу о функции OrderProfit().
August 31, 2006 OrderTicket() - тикер выделенного ордераAugust 30, 2006 OrderOpenPrice() - получение информации о цене открытии позиции или цене отложенного ордераВ этом выпуске я рассмотрю функцию OrderOpenPrice(). В качестве практического примера применения этой функции рассмотрим установку и управление трейлинг стопом.
August 29, 2006 OrderCommission() - комиссия выделенного функцией OrderSelect() ордераВчерашний и сегодняшний выпуски посвящены не очень нужным с практической точки зрения торговым функциям: OrderSwap() и OrderCommission(). К сожалению, при всей моей достаточно буйной фантазии я так и не смог придумать практического применения этих функций. Но раз эти функции присутствуют, то лучше о них расcказать. Вдруг вам они все-таки пригодятся.
August 28, 2006 OrderSwap() - начисленный сторидж по выделенному ордеруВ прошлых выпусках мы рассмотрели очень нужные с практической точки зрения трейдеру функции, с помощью которых можно получить информацию о выделенном с помощью функции OrderSelect() ордере или позиции. В этом выпуске я расскажу о функции OrderSwap(). Честно говоря, я совершенно не вижу практического применения этой функции в экспертах, но раз она присутствует, то лучше о ней рассказать.
August 27, 2006 Вышел 134-й номер журнала для трейдеров FOREX MAGAZINE
August 26, 2006 OrderComment() - комментарий выделенного ордераВ прошлых выпусках мы решали задачу определения того, была ли закрыта позиция по Stop Loss или Take Profit ордеру. Существует еще один способ узнать это. При этом данный способ будет более простым, чем рассмотренные ранее. В этом нам поможет функция OrderComment().
August 24, 2006 OrderSymbol() - инструмент выделенного ордераОчень часто перед трейдером стоит задача перебрать все открытые позиции или отложенные ордера и что-то сделать с позициями или ордерами, которые выставлены по инструменту, к которому прикреплен советник. Предположим, что нас интересуют только отложенные ордера. Используя функцию OrderSymbol(), мы можем получить информация о выделенном с помощью функции OrderSelect() ордере или позиции.
August 23, 2006 OrderTakeProfit() - уровень Take Profit ордераВ прошлых выпусках мы уже достаточно сильно продвинулись в вопросе, как определить, была ли позиция закрыта по Take Profit ордеру или по Stop Loss. Параллельно мы изучили следующие торговые функции советника:
В этом выпуске мы изучим функцию OrderTakeProfit() и доработаем наш пример. Мы почему-то с первых строчек кода безусловно верим в тот факт, что позиция была закрыта именно по Stop Loss или Take Profit ордера. А если нет? Это легко проверить.
August 22, 2006 OrderCloseTime() - время закрытия позицииВ прошлом выпуске я слегка модифицировал наш пример определения по какому ордеру была закрыта позиция. Теперь если по ошибке мы выделили с помощью функции OrderSelect() отложенный ордер, а не позицию, эта ситуация выявляется. Однако возможен случай, когда мы по ошибке выделили открытую позицию. Выявить этот случай нам поможет функция OrderCloseTime().
August 21, 2006 Какие материалы и где можно найти на моем блоге по интернет-трейдингу на форекс / forexНа своем блоге "Интернет-трейдинг на форекс / forex" я уже осветил очень много тем, посвященных интернет-трейдингу на FOREX: Я поделился своим опытом по созданию собственных торговых тактик. И наконец, я начал публиковать руководство по программированию экспертов для начинающих. Материала стало очень много, а навигация, к сожалению, оставляет желать лучшего. Поэтому я решил в этом выпуске выложить список материалов, опубликованных на моем форекс-блоге по состоянию на 21 августа.
August 18, 2006 Получение типа ордера с помощью OrderType()В прошлых выпусках мы научились получать информацию о выделенном с помощью функции OrderSelect() ордере или позиции:
В этом выпуске я расскажу о функции OrderType().
August 17, 2006 OrderStopLoss() - цена закрытия выделенного ордера или позицииВ прошлом выпуске, рассказывая о функции OrderClosePrice(), я рассмотрел пример, как определить по какому ордеру (Stop Loss или Take Profit) была закрыта позиция, если точно известно, что она была закрыта по ордеру. В этом примере была использована функция OrderStopLoss(). Из названия абсолютно понятно ее предназначение, но лучше все-таки остановиться на ней поподробнее. Для того, чтобы изучение функции OrderStopLoss() стало не просто скучным теоретическим описанием, попробуем слегка изменить прошлый пример, чтобы получить максимум практической пользы.
August 16, 2006 OrderClosePrice() - цена закрытия выделенного ордера или позицииПосле того, как мы выделим ордер или позицию с помощью функции OrderSelect(), мы можем получить об ордере саму различную информацию. В этом выпуске я расскажу о функции OrderClosePrice().
August 15, 2006 HistoryTotal(): количество закрытых позиций и удаленных ордеровВ выпуске про OrderSelect() - функцию выбора ордера или позиции - я рассказал, что можно также выбрать закрытую позицию или удаленный отложенный ордер, указав в качестве параметра select значение SELECT_BY_POS, а в качестве pool - MODE_HISTORY. В качестве первого параметра (index) функции OrderSelect() в этом случае указывается номер позиции/ордера в этом списке. Зачастую, чтобы найти нужную нам позицию, приходится "пробежаться" по всему списку. Для этого нам нужно знать общее количество позиций и ордеров в списке закрытых позиций и удаленных отложенных ордеров. В этом нам поможет функция HistoryTotal().
August 14, 2006 OrdersTotal(): количество открытых позиций и неудаленных отложенных ордеровВ прошлом выпуске я рассказал о функции OrderSelect(), с помощью которой можно выбрать ордер или позицию для получения в дальнейшем дополнительной информации об этом ордере или позиции. Мы увидели, что выбрать ордер можно двумя способами:
Если мы выбираем ордер или позицию по порядковому номеру ордера/позиции в списке открытых позиций и неудаленных отложенных ордеров, то бывает очень полезно знать общее количество открытых позиций и неудаленных ордеров. В этом нам поможет функция OrdersTotal().
August 13, 2006 Выбор ордера или позиции с помощью OrderSelect()В прошлом выпуске я привел полный перечень торговых функций, которые можно использовать в эксперте. Как Вы уже, наверное, успели заметить, подавляющее большинство этих функций позволяет получить какую-то информацию об ордере или позиции, которые были предварительно выбраны с помощью функции OrderSelect().
August 10, 2006 Учим эксперта торговатьЯ уверен, что Вам уже не терпиться научить Вашего эксперта торговать. Язык MetaQuotes Language 4 позволяет осуществлять ПОЛНЫЙ контроль над торговым счетом - открывать/закрывать позиции, размещать/модифицировать и удалять ордера, получать информацию об открытых позициях и уже закрытых сделках и многое-многое другое. В этом выпуске я хочу привести полный список торговых функций, которые можно вызывать в эксперте, а в следующих выпусках подробно остановлюсь на каждой функции.
August 7, 2006 Оператор переключения switchРанее я рассказал об условном операторе if-else, с помощью которого можно изменить порядок выполнения операторов в эксперте. Достаточно часто возникают ситуации, когда нам надо заложить в эксперте не два, а больше варианта развития событий. Например, переменная i может принимать целочисленные значения от 1 до 5 и в зависимости от того, какое значение имеет эта переменная, возможны 5 различных последовательностей операторов. Такую задачу легко можно решить с использованием множества вложенных условных операторов if-else.
August 4, 2006 Досрочное завершение очередной итерации цикла с помощью оператора continueВ прошлом выпуске я рассказал о том, как можно досрочно выйти из цикла с помощью оператора break. Однако иногда нам нужно не навсегда выйти из цикла, а просто завершить досрочно очередную его итерацию. Для этого используется оператор continue.
Досрочный выход из цикла с помощью оператора breakВ прошлых выпусках я рассказал о двух способах организации циклов в советнике: операторе цикла while и об операторе цикла for. Достаточно часто возникает потребность досрочно выйти из цикла - для этого используется оператор break.
August 3, 2006 Оператор цикла forВ прошлом выпуске я рассказал об операторе цикла while. Этот оператор используется, когда необходимо повторить некоторую последовательность действий несколько раз (или ни одного). Подобную задачу можно решить также с помощью другого оператора цикла - оператора for.
August 2, 2006 Оператор цикла whileОбычно операторы в коде эксперта выполняются последовательно - один за другим. Однако часто требуется изменить последовательность их выполнения в зависимости от каких-то условий. В прошлом выпуске я рассмотрел один из способов изменения этой последовательности: условный оператор if-else. Применение этого оператора оправдано, когда есть необходимость выполнить две разные последовательности действий в зависимости от какого-то условия. В этом выпуске я планирую рассказать об операторе цикла while. Уже само название говорит о том, что этот оператор применяется в тех случаях, когда нужно повторить какое-то количество раз одну и ту же последовательность операторов.
August 1, 2006 Условный оператор if-elseВ этом выпуске я вернусь к рассмотрению нашего первого советника и расскажу об условном операторе if-else, который я использовал в функции init().
July 27, 2006 Приоритеты операций и порядок выполнения выраженийВ прошлых выпусках я рассказал о следующих типах операций в выражении:
Зачастую в выражении можно встретить сразу несколько операций. Возникает вопрос - в какой последовательности эти операции будут выполняться. Это очень важный вопрос, ведь от этого зависит конечный результат, который мы в итоге получим.
July 26, 2006 Объединение арифметических и побитовых операций с операцией присваиванияВ прошлых выпусках мы рассмотрели арифметические и побитовые операции. Ранее я рассказал об операторе присваивания. В синтаксисе MetaQuotes Language 4 - языка написания советников - есть возможность объединить арифметические и побитовые операции с операцией присваивания.
July 25, 2006 Побитовые операцииВ прошлом выпуске я рассказал о логических операциях, а этот выпуск будет посвящен побитовым операциям. Для начала необходимо рассказать о формате представления чисел в компьютере. Мы в нашей жизни привыкли к десятичному представлению чисел: 56, 777, 10957 и т.д. Десятичное представление числа 10957 означает, что 10957 = 1*104 +0*103+9*102+5*101+7*100. Иными словами десятичное число - это a0*100+a1*101+a2*102+...+an*10n. Т.е. сумма произведений соответствующей цифры (ai) на соответствующую степень числа 10 (10i). В компьютере внутренний формат представления чисел - двоичный. В двоичном формате все числа состоят из нулей и единиц, а в качестве множителя используется не число 10, возведенное в степень, а соответствующая степень числа 2. Например, двоичное число 10001101 равно десятичному (обычному) числу 1*27+0*26+0*25+0*24+1*23+1*22+0*21+1*20 = 128+0+0+0+8+4+0+1 = 141. Каждая такая двоичная цифра (1 или 0) называется битом. Теперь мы знаем достаточно, чтобы рассмотрить побитовые операции.
July 24, 2006 Логические операцииВ прошлом выпуске я рассказал об операциях отношения, с помощью которых можно сравнить две переменные. Результатом выступало значение типа bool. Напомню, что значение ЛОЖЬ (false) представляется в виде нулевого значения, а ИСТИНА (true) - ненулевого. В этом выпуске я рассмотрю логические операции НЕ (!), ИЛИ (||) и И (&&).
July 23, 2006 Операции отношенияКак мы уже знаем, один из стандартных типов переменных в языке MetaQuotes Language 4 - тип bool. Переменная типа bool может принимать только два значения: ИСТИНА (true) и ЛОЖЬ (false). Значение ЛОЖЬ представляется в виде нулевого значения, а ИСТИНА - ненулевого. Значение операции отношения или логической операции будет иметь тип bool.
July 21, 2006 Оператор присваивания. Арифметические операцииВ предыдущем выпуске я рассказал о составном операторе. В этом выпуске я расскажу об операторе присваивания. Формат оператора присваивания: переменная = выражение;
July 19, 2006 Составной операторВ выпуске "Использование констант в эксперте" мы научились описывать константы и разобрались, что же в коде нашего первого эксперта означают следующие строчки: #define STATE_SQUARE 0 В выпуске Внешние переменные мы научились задавать параметры эксперта, и нам стали понятны следующие строчки: extern int MAPeriod = 13; Кроме локальных и статических переменных мы рассмотрели и глобальные (на уровне одного модуля) переменные, в результате приоткрылась завеса над еще двумя строчками нашего эксперта: int CurrentState; Теперь рассмотрим более подробно, что же в нашем эксперте делает функция init().
July 18, 2006 Параметры функцийВ выпуске "Создание собственных функций" я рассказал достаточно подробно о том, как описывать собственные функции. В этом выпуске я продолжу рассмотрение функций и детально разберу, как в функцию можно передать значения и получить результат функции.
July 17, 2006 Глобальные переменныеВ прошлом выпуске я рассказал о внешних переменных. В этом выпуске я остановлюсь на глобальных переменных.
July 14, 2006 Внешние переменныеВ прошлом выпуске я рассказал о локальных и статических переменных. В этом выпуске я остановлюсь на внешних переменных.
July 13, 2006 Локальные и статические переменныеВ прошлом выпуске я рассказал о том, как использовать переменные и массивы в эксперте. Единственным нераскрытом моментом остались области видимости переменных. Дело в том, что переменные бывают нескольких типов:
July 12, 2006 Хранение данных в переменныхЛюбой эксперт оперирует с некоторыми данными - ценами, значениями индикаторов, объемами, количеством открытых позиций и пр. Те, места, где эти данные хранятся в эксперте, называются переменными. В качестве имен переменных можно использовать цифры (0-9), латинские прописные и строчные буквы (а - z и А - Z, следует помнить, что буквы 'a' и 'A' - совершенно разные символы), символ подчеркивания (_). Первый символ не может быть цифрой. Также имя переменной не должно совпадать с зарезервированным словом (т.е. словом, которое имеет особый смысл в языке MetaQuotes Language 4 - но об этом позже).
July 10, 2006 Использование констант в экспертеВ прошлом выпуске я выложил код нашего первого эксперта. Вначале разберем, что означают следующие строчки: #define STATE_SQUARE 0 #define STATE_LONG 1 #define STATE_SHORT 2
July 7, 2006 Пишем простейшего экспертаНа мой взгляд, наиболее простым способом для новичка изучить процесс написания экспертов будет подробный разбор специально написанных мной для этой цели экспертов. На данный момент (да и далее в своих статьях) я не буду ставить перед собой цель написать супер гениального эксперта, который способен будет зарабатывать десятки процентов в месяц и делать это стабильно. Основная цель - показать все аспекты программирования экспертов, а не написать "грааль".
July 5, 2006 Функции init(), start() и deinit()Как я уже говорил в прошлых постах, любой эксперт состоит как минимум из трех функций: init(), start() и deinit(). В этом выпуске я расскажу о них подробнее.
July 4, 2006 Создание собственных функцийЛюбой эксперт, как мы уже увидели в прошлом выпуске, состоит из как минимум трех функций: init(), start() и deinit(). Без понимания, что они делают, невозможно написать своего эксперта, поэтому я в следующем выпуске подробно эти функции рассмотрю.
July 3, 2006 Анализ кода заготовки экспертаПосле совершения действия, описанных в предыдущем выпуске мы получили код-заготовку, который мы можем изменить в соответствии с нашей торговой тактикой и получить работоспособного эксперта. Давайте разберем, что же мы в итоге получили...
June 29, 2006 Настраиваем параметры нового экспертаИтак, в прошлом выпуске мы вызвали контекстное меню окна "Навигатор" группы "Expert Advisors" и выбрали пункт меню "Create". В результате появилось окно, в котором нам предстоит выбрать тип объекта, который мы хотим создать (см. рис. 1).
June 28, 2006 С чего начать при написании советникаЕстественно, что первым делом Вы должны иметь представление, а в чем же заключается Ваша торговая тактика, и что Вы хотите запрограммировать. Принципы создания любой торговой тактики подробно описаны в разделе "Торговые тактики", поэтому примем за аксиому, что Вы знаете, что делаете, т.е. в Вашей голове уже сформировался торговый алгоритм, который Вы желаете запрограммировать в виде советника на языке MetaQuotes Language 4. Итак, начнем...
June 26, 2006 Механическая торговая система - миф или реальность?В сети Интернет Вы можете найти бесплатно или купить за небольшие деньги великое множество механических систем, которые, со слов авторов, принесут Вам десятки, а то и сотни процентов дохода в месяц. Большинство таких "граалей" показывают очень хорошие результаты при тестировании на исторических данных, однако на демо-счете и реальном счете такие системы терпят неудачу. Дело в том, что написание советников (Expert Advisors) - механических торговых систем для MetaTrader 4 - очень легкое занятие, которое по силам любому трейдеру. Поэтому в сети Интернет появилось огромное количество любительских "поделок", в которых допущен ряд ошибок. Этим постом я начинаю серию статей о том, как написать собственного эксперта, как недопустить классические ошибки, которые искажают реальную прибыльность механической торговой системы, и о многом другом.
Подписаться на мою рассылку |
Рекомендую: Подписаться на мои рассылки: ПОИСК
Не можете определиться через какой дилинговый центр торговать на форекс / forex ?
Карта блога
Начинающим
Механические торговые системы Последние посты:
Журнал FOREX MAGAZINE:Котировки Forex:Счетчики:
Авторские права © 2005-2006 Андрей Ведихин
Условия использования материалов блога "Интернет-трейдинг на форекс / forex" Контакты с автором: Движок сайта: Movable Type 5.04 |