биржа форекс, рынки форекс

Элитные трейдеры рекомендуют: FOREX MMCIS group

Скачать учебник по рынку форекс бесплатно

Комментарии

    » От Максим Сухомлин в новости:
    Как выбрать брокера?
    » От Борис в новости:
    Самый совершенный советник в истори ...
    » От Лизаветта в новости:
    Заработок без вложений? - Это реаль ...
    » От Ильнур в новости:
    Лок. Локирование
    » От sheffcov в новости:
    Мой рейтинг форекс-брокеров
    » От Gorini4 в новости:
    Мой рейтинг форекс-брокеров
    » От Иван64 в новости:
    Школа Марченко
    » От sheffcov в новости:
    Nord Group Investments Inc (NordFX)
    » От Андрей в новости:
    Nord Group Investments Inc (NordFX)
    » От Forel в новости:
    Заработок без вложений? - Это реаль ...

Просмотреть все комментарии

заработок в интернете. блоги о заработке.
29 августа 2008 | Программное обеспечение трейдера » Механические торговые системы » Теория и практика написания советников | автор: mt4

В прошлом выпуске я привел исходный код функции Sort() глобального массива, которая осуществляет сортировку методом пузырька.

На мой взгляд, подробно разбирать ее не имеет смысла, т.к. она содержит много комментариев. Проблема с пониманием может возникнуть только на этом участке кода:
 
 int i, up_idx;   
    for (up_idx=count; up_idx>1; up_idx--)     
      {
        // обработаем участок массива 1..up_idx
        for (i=1; i
          {
28 августа 2008 | Программное обеспечение трейдера » Механические торговые системы » Теория и практика написания советников | автор: mt4
В прошлом выпуске я рассказал о сортировке методом пузырька. В этом выпуске я приведу исходный код функции, которая сортирует массив таким методом.
 
//+---------------------------------------------------------------------------------------------------+
//| Функция Sort() - сортирует массив методом пузырька                      |
//|                                                                                                   |
//| Возвращает true, если не было ошибки, и false, если ошибка была  |
//|                                                                                                   |
//| Параметры:                                                                                 |
//|   array        - имя массива                                                             |
//|   is_asc_order - если true, то сортируется по возрастанию; если      |
//|                  false, то по убыванию                                                  |
//+--------------------------------------------------------------------------------------------------+
27 августа 2008 | Программное обеспечение трейдера » Механические торговые системы » Теория и практика написания советников | автор: mt4

В прошлых выпусках я начал рассмотрение способа реализации глобальных массивов и рассказал о функциях Count(), AddItem(), SearchItem(), GetItem() и DeleteItem(). В этом выпуске я расскажу о том, как можно отсортировать глобальный массив по возрастанию или убыванию. Один из наиболее простых в реализации, но медленных по скорости методов сортировки - метод пузырька.

Основная идея сортировки (например, по возрастанию) методом пузырька очень простая. Предположим, что у нас N элементов в массиве и индекс каждого элемента лежит в промежутке от 1 до N.

26 августа 2008 | Программное обеспечение трейдера » Механические торговые системы » Теория и практика написания советников | автор: mt4

На данный момент я разобрал практически весь код "ночного" эксперта. Мне осталось рассказать лишь о реализации трейлинг-стопа.

Напомню, что Trailing Stop (трейлинг стоп) – это алгоритм управления уровнем Stop Loss ордера. После выставления трейлинг-стопа (например, на Х пипсов) происходит следующее:

  • MetaTrader не предпринимает никаких действий до того момента, пока по открытой позиции не образуется прибыль в Х пипсов. После этого MetaTrader выставляет Stop Loss ордер на расстоянии Х пипсов от текущей цены (в данном случае - на уровне безубыточности).
  • После выполнения первого шага MetaTrader посылает команду на изменение уровня Stop Loss ордера на расстояние Х пипсов от текущей котировки каждый раз, когда расстояние между ней и старым уровнем ордера превысит Х пипсов. В результате этого Stop Loss ордер «подтягивается» к текущей цене.
25 августа 2008 | Программное обеспечение трейдера » Механические торговые системы » Теория и практика написания советников | автор: mt4

В прошлом выпуске я начал рассмотрение того, как реализована функция start() "ночного" эксперта. В этом выпуске я рассмотрю оставшиеся части кода эксперта.

После того, как мы выставили (если необходимо) отложенные ордера и проверили, не надо ли нам удалить отложенный ордер (как OCO), пришла пора проверить, не пришло ли время закрыть открытую позицию:
 
 if (((c_hour>CloseHour)||((c_hour==CloseHour)&&(c_minute>=CloseMinute)))&&
       (TimeDay(c_time)!=TimeDay(LastTradeTime)))
      {
       // закрываем позицию
       ...
      }
24 августа 2008 | Программное обеспечение трейдера » Механические торговые системы » Теория и практика написания советников | автор: mt4

В этом выпуске я расскажу о том, как работает функция start() "ночного" эксперта, который был описан в прошлых выпусках.

В начале мы присваиваем значения текущего времени, текущего часа и текущей минуты локальным переменным c_time, c_hour и c_minute соответственно:

datetime c_time = TimeCurrent();

int c_hour = TimeHour(c_time);

int c_minute = TimeMinute(c_time);

23 августа 2008 | Программное обеспечение трейдера » Механические торговые системы » Теория и практика написания советников | автор: mt4

В прошлом выпуске я разместил код эксперта, торгующего в ночное время. Давайте разберем, как же этот эксперт работает. Начнем с функции init().

Напомню, что основная идея эксперта заключается в том, что определенное время (задается параметром StartTime) эксперт выставляет buy limit ордер на BuyLimit_Diff пипсов ниже Bid и sell limit ордер на SellLimit_Diff пипсов выше цены Ask. Дата эксперации ордеров задается в минутах в параметре Expiration. Если один из отложенных ордеров срабатывает, то второй удаляется (т.е. они OCO ордера - One Cancells Other). Stop Loss ордер выставляется на расстоянии BuyLimit_SL и SellLimit_SL пипсов от цены ордера соответственно.

22 августа 2008 | Программное обеспечение трейдера » Механические торговые системы » Теория и практика написания советников | автор: mt4

Что-то все так мне и не получается приступить к рассмотрению способов сортировки глобальных массивов. Сегодня я получил очередное письмо от читателя моего блога с просьбой помочь в реализации ночной торговли на языке MQL4. Данное письмо мне показалось интересным и я написал эксперта, который так интересовал автора письма.

Основная идея эксперта заключается в том, что определенное время (задается параметром StartTime) эксперт выставляет buy limit ордер на BuyLimit_Diff пипсов ниже Bid и sell limit ордер на SellLimit_Diff пипсов выше цены Ask. Дата эксперации ордеров задается в минутах в параметре Expiration.

22 августа 2008 | Программное обеспечение трейдера » Механические торговые системы » Теория и практика написания советников | автор: mt4

В прошлом выпуске я описал функции StartTrading() и StopTrading(), с помощью которых можно ограничить количество одновременно открытых позиций и выставленных ордеров.

В этом выпуске я приведу пример использования этих функций. Напишем простого эксперта, который на каждом тике открывает новую позицию на покупку. Максимально возможное число открытых позиций пусть будет 3.

21 августа 2008 | Программное обеспечение трейдера » Механические торговые системы » Теория и практика написания советников | автор: mt4

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

Дело в том, что если просто проверять количество позиций с помощью функции OrdersTotal() и сразу же открытие новой позиции, то в случае, когда эксперт прикреплен на графики разных периодов, но по одному и тому же инструменту, мы получим "лишние" открытые позиции. Чтобы избежать этого, надо использовать критические секции.

19 августа 2008 | Программное обеспечение трейдера » Механические торговые системы » Теория и практика написания советников | автор: mt4

Очень полезной функцией для работы с глобальным массивом может стать функция GetItem():

bool GetItem(string array, int index, double &result)

Эта функция пытается получить значение элемента с индексом index и вернуть это значение через переменную result в переменную, указанную в качестве третьего параметра при вызове этой функции.

Параметры:

  • array - имя массива
  • index - индекс элемента
  • result - элемент массива с индексом index
18 августа 2008 | Программное обеспечение трейдера » Механические торговые системы » Теория и практика написания советников | автор: mt4

В прошлом выпуске я привел код функции SearchItem(), с помощью которой можно найти элемент в массиве.

Эта функция возвращает:

  • индекс найденного элемента в массиве, если элемент найден; или
  • 0 - если элемента в массиве нет; или
  • -1 - если произошла какая-то ошибка.
17 августа 2008 | Программное обеспечение трейдера » Механические торговые системы » Теория и практика написания советников | автор: mt4

Поскольку мы используем глобальные массивы для хранения данных, то вполне вероятно, что нам понадобятся функции поиска элемента в массиве.

Технология поиска будет зависеть от того, упорядочен ли наш массив:

  • Если массив неупорядоченный, то самым очевидным методом найти какой-нибудь элемент будет простой перебор всех элементов массива.
  • Если массив упорядоченный, то наилучшим решением (наиболее оптимальным по скорости поиска) будет двоичный поиск.
 

/templates/EliteForex/images/spacer.gifdiv class=