Навигация по сайту
Реклама
Популярные статьи

Новости
{links1}
На Кубе среди погибших в крушении Boeing 737 были 20 священников

Среди погибших в результате крушения Boeing 737 на Кубе были 20 священников евангелический церкви.

Найден первый черный ящик разбившегося на Кубе пассажирского самолета

На месте крушения самолета Boeing-737 на Кубе был обнаружен один из бортовых самописцев.

Швейцария победила Канаду и вышла в финал чемпионата мира по хоккею

В финале чемпионата мира по хоккею швейцарская сборная сойдется с командой Швеции, которая ранее разгромила США.


{links2}
Счетчик

» »       
Рекламный блок


Сортировать статьи по: дате | популярности | посещаемости | комментариям | алфавиту

Параметры функции OrderSend() - продолжение Гид по интернет трейдингу форекс Форекс

В прошлых выпусках я рассказал о функции OrderSend() и начал рассмотрение ее параметров. В прошлом выпуске мною были рассмотрены параметры cmd и price.


В этом выпуске я расскажу о параметрах StopLoss, TakeProfit и expiration.


Когда Вы открываете позициию (выставляете отложенный ордер), то ордера Stop Loss и Take Profit должны находиться по отношению к текущей цене (цене отложенного ордера) не ближе, чем на расстоянии определенного количества пунктов.

Глобальные массивы: функция SearchItem() Гид по интернет трейдингу форекс Форекс

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

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

  • Если массив неупорядоченный, то самым очевидным методом найти какой-нибудь элемент будет простой перебор всех элементов массива.
  • Если массив упорядоченный, то наилучшим решением (наиболее оптимальным по скорости поиска) будет двоичный поиск.
Как ограничить количество одновременно открытых позиций/отложенных ордеров Гид по интернет трейдингу форекс Форекс

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

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

OrderTakeProfit() - уровень Take Profit ордера Гид по интернет трейдингу форекс Форекс

В прошлых выпусках мы уже достаточно сильно продвинулись в вопросе, как определить, была ли позиция закрыта по Take Profit ордеру или по Stop Loss. Параллельно мы изучили следующие торговые функции советника:

OrderModify() - изменение параметров отложенных ордеров и открытых позиций Гид по интернет трейдингу форекс Форекс

В прошлых выпусках я рассмотрел очень полезную функцию - OrderSend(). А в этом выпуске я расскажу о функции OrderModify().

bool OrderModify(int ticket, double price, double stoploss, double takeprofit, 
datetime expiration, color arrow_color=CLR_NONE)

Эта функция позволяет изменять параметры отложенных ордеров и открытых позиций. В случае успеха она возвращает true, а в случае неудачи - false. Код ошибки можно будет получить с помощью функции GetLastError().

Пример ограничения числа одновременно открытых позиций Гид по интернет трейдингу форекс Форекс

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

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

Глобальные массивы: функция Count() Гид по интернет трейдингу форекс Форекс

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

  • AddItem()
  • DeleteItem()
  • GetItem()
  • Count()
  • Search()
  • BSearch
  • Sort()
GlobalVariableSetOnCondition() - установка нового значения глобальной переменной, если текущее ее значение равно заданному значению Гид по интернет трейдингу форекс Форекс

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

К счастью, создатели языка MetaQuotes Language 4 являются профессиональными программистами и заранее могут предугадать, что может понадобиться трейдеру при написании экспертов. Я им очень благодарен, что они включили в список функций языка MetaQuotes Language 4 функцию GlobalVariableSetOnCondition().

Давайте же рассмотрим, чем так полезна эта функция.

bool GlobalVariableSetOnCondition(string name, double value, double check_value)

Как избежать ошибок, если несколько экспертов торгуют одновременно Гид по интернет трейдингу форекс Форекс

Как я уже говорил в прошлом выпуске, в каждый момент времени только один эксперт может торговать. Если в этот момент второй эксперт попытается совершить торговую операцию, то торговая функция вернет ошибку ERR_TRADE_CONTEXT_BUSY (146).

Что же делать, если у Вас торгует одновременно несколько экспертов?

Напишем функцию, которая возвращает:

  • 0, если торговый поток свободен;
  • 1, если работа эксперта была остановлена (см. причины ниже);
  • 2, если торговля экспертов запрещена на уровне настроек клиентского терминала.
Эксперт, торгующий в ночное время: функция start() - продолжение Гид по интернет трейдингу форекс Форекс

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

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


форекс начинающим | форекс обучение | видео форекс | книги форекс | уроки форекс | советники форекс | {links} Copyright © 2010 центовый форекс All Rights Reserved.