Как заработать деньги. Проект сам себе финансист.
ноябрь 2024
пн вт ср чт пт сб вс
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30

IsStopped(): как проверить, что эксперт был остановлен

IsStopped(): как проверить, что эксперт был остановлен В предыдущей статье я привел код функции WaitUntilTradingIsAllowed(), которая поможет нам избежать ошибки ERR_TRADE_CONTEXT_BUSY (146), возникающей когда одновременно пытаются торговать два эксперта. В этом коде несколько функций нам незнакомы. Одна из них - функция IsStopped(). bool IsStopped() Функция возвращает true, если эксперт был "остановлен", и false - в противном случае. Эксперт получает команду на завершение в следующих случаях: При завершении работы клиентского терминала, При закрытии графика, к которому прикреплен эксперт, При удалении эксперта с графика, При изменении инструмента или периода графика, После перекомпиляции эксперта в MetaEditor, После изменения параметров советника, При переключении на другой счет. В следующей статье будет рассказано о функции RefreshRates(). Автор статьи: Андрей Ведихин
Полная версия статьи
Категория: Советники форекс


Функции init(), start() и deinit()

Функции init(), start() и deinit() Как я уже говорил в прошлых постах, любой эксперт состоит как минимум из трех функций: init(), start() и deinit(). В данной статье будет рассказано о них подробнее. Функция init() Эта функция вызывается в следующих случаях: После присоединения советника к графику; После старта MetaTrader 4 и подгрузки исторических данных; После смены инструмента или периода графика; После перекомпиляции программы в редакторе MetaEditor; После изменения настроек эксперта; После смены торгового счета. Функция start() Функция start() запускается на каждом новом тике. Собственно это основная функция эксперта, т. к. она вызывается на каждом тике и выполняет основную работу. Важно: Если функция start() не успела завершить свою работу до прихода следующего тика, следующий тик пропускается и функция для него не вызывается. Функция deinit() С помощью UninitializeReason() можно узнать причину вызова функции deinit(). Функция deinit() вызвается в следующих случаях: При завершении работы MetaTrader 4 или при закрытии графика (функция UninitializeReason() возвращает REASON_CHARTCLOSE); При удалении эксперта с графика (REASON_REMOVE); Перед изменением инструмента графика или периода графика (REASON_CHARTCHANGE); При удачной перекомпиляции программы в MetaEdito (REASON_RECOMPILE)r; При изменении параметров эксперта (REASON_PARAMETERS); При переключении на другой счет (REASON_ACCOUNT).
Полная версия статьи
Категория: Советники форекс


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

Как избежать ошибок, если несколько экспертов торгуют одновременно Как уже говорилось в предыдущей статье, в каждый момент времени только один эксперт может торговать. Если в этот момент второй эксперт попытается совершить торговую операцию, то торговая функция вернет ошибку ERR_TRADE_CONTEXT_BUSY (146). Что же делать, если у Вас торгует одновременно несколько экспертов? Напишем функцию, которая возвращает: 0, если торговый поток свободен; 1, если работа эксперта была остановлена (см. причины ниже); 2, если торговля экспертов запрещена на уровне настроек клиентского терминала. Если в момент обращения к функции торговый поток был занят, то функция ждет, пока он освободится. После этого она обновляет данные о текущих котировках с помощью функции RefreshRates() и возвращает 0. Напомню возможные причины остановки эксперта: Завершение работы MetaTrader 4, Закрытие графика, Удаление эксперта с графика, Изменение инструмента или периода графика, Удачная перекомпиляции программы в MetaEditor, Изменение параметров эксперта, Переключение на другой счет.
Полная версия статьи
Категория: Советники форекс


OrderCloseBy() - закрытие одной позиции другой

OrderCloseBy() - закрытие одной позиции другой В прошлых выпусках мы рассмотрели пример применения функции OrderClose(). В этом примере мы закрывали все открытые позиции и удаляли отложенные ордера в 22:00 пятницы по времени торговой платформы. Код эксперта был приведен в выпуске " Пример использования функции OrderClose() ". Этот эксперт был абсолютно безупречен с технической точки зрения, но с финансовой точки зрения можно было бы написать более выгодного для нас эксперта. Если вместо того, чтобы просто закрывать открытую позицию по текущей цене, использовать, где возможно, закрытие одной локированной позиции другой локированной позицией, то в этих случаях мы будем терять не два спрэда, а только один. Давайте перепишем нашего эксперта с учетом этого совета. В этом нам поможет функция OrderCloseBy(): В следующей статье мы объясним принцип работы этого эксперта и расскажем подробно о функции OrderCloseBy().
Полная версия статьи
Категория: Советники форекс


Коды ошибок в советниках и функция GetLastError()

Коды ошибок в советниках и функция GetLastError() Как я уже неоднократно упоминал в предыдущих выпусках, если какая-то функция вернула ошибку, то код этой ошибки можно получить с помощью функции GetLastError(). int GetLastError() После вызова этой функции код последней ошибки обнуляется, поэтому если в промежутке между двумя вызовами функции GetLastError() не произошло новой ошибки, то второй раз функция вернет 0. Функция GetLastError() возвращает числовой код ошибки. Если же Вы хотите получить словесное описание ошибки, то используйте функцию ErrorDescription(), описанную в файле stdlib. mqh: Коды ошибок, возвращаемые сервером: Константа Значение Описание  ERR_NO_ERROR 0  Нет ошибки  ERR_NO_RESULT 1  Нет ошибки, но результат неизвестен  ERR_COMMON_ERROR 2  Общая ошибка  ERR_INVALID_TRADE_PARAMETERS 3  Неправильные параметры  ERR_SERVER_BUSY 4  Торговый сервер занят  ERR_OLD_VERSION 5  Старая версия клиентского терминала  ERR_NO_CONNECTION 6  Нет связи с торговым сервером  ERR_NOT_ENOUGH_RIGHTS 7  Недостаточно прав  ERR_TOO_FREQUENT_REQUESTS 8  Слишком частые запросы  ERR_MALFUNCTIONAL_TRADE 9  Недопустимая операция нарушающая функционирование сервера  ERR_ACCOUNT_DISABLED 64  Счет заблокирован  ERR_INVALID_ACCOUNT 65  Неправильный номер счета  ERR_TRADE_TIMEOUT 128  Истек срок ожидания совершения сделки  ERR_INVALID_PRICE 129  Неправильная цена  ERR_INVALID_STOPS 130  Неправильные стопы  ERR_INVALID_TRADE_VOLUME 131  Неправильный объем  ERR_MARKET_CLOSED 132  Рынок закрыт  ERR_TRADE_DISABLED 133  Торговля запрещена  ERR_NOT_ENOUGH_MONEY 134  Недостаточно денег для совершения операции  ERR_PRICE_CHANGED 135  Цена изменилась  ERR_OFF_QUOTES 136  Нет цен  ERR_BROKER_BUSY 137  Брокер занят  ERR_REQUOTE 138  Новые цены  ERR_ORDER_LOCKED 139  Ордер заблокирован и уже обрабатывается  ERR_LONG_POSITIONS_ONLY_ALLOWED 140  Разрешена только покупка  ERR_TOO_MANY_REQUESTS 141  Слишком много запросов  ERR_TRADE_MODIFY_DENIED 145  Модификация запрещена…
Полная версия статьи
Категория: Советники форекс


OrderModify() - изменение параметров отложенных ордеров и открытых позиций

OrderModify() - изменение параметров отложенных ордеров и открытых позиций В прошлых выпусках я рассмотрел очень полезную функцию - OrderSend(). А в данной статье будет рассказано о функции OrderModify(). Эта функция позволяет изменять параметры отложенных ордеров и открытых позиций. В случае успеха она возвращает true, а в случае неудачи - false. Код ошибки можно будет получить с помощью функции GetLastError(). Параметры функции: Ticket - тикер отложенного ордера или открытой позиции; Price - новый уровень отложенного ордера (для открытых позиций не может быть изменен); Stoploss - новый уровень Stop Loss; Takeprofit - новый уровень Take Profit; Expiration - новые дата и время истечения отложенного ордера (если к этой дате и времени отложенный ордер не сработает, то он будет удален - см. выпуск "OrderExpiration() - дата истечения отложенного ордера"); Arrow_color - цвет открывающей стрелки на графике.
Полная версия статьи
Категория: Советники форекс


OrderDelete() - удаление отложенного ордера

OrderDelete() - удаление отложенного ордера Мы уже знаем, как можно выставить отложенный ордер. Для этого надо использовать функцию OrderSend(). Также мы умеем изменять параметры отложенных ордеров с помощью функции OrderModify(). В данной статье будет рассказано о том, как можно удалить отложенный ордер. Это можно сделать с помощью функции OrderDelete(). bool OrderDelete(int ticket) Эта функция удаляет отложенный ордер с тикером ticket. Функция возвращает true в случае успешного удаления и false - в случае возникновения ошибки. Код ошибки можно получить, вызвав функцию GetLastError(). Применение функции OrderDelete() рассмотрим на следующем примере: Предположим, что наш эксперт по какой-то логике (не будем здесь вдаваться в подробности) выставляет по одному инструменту сразу два отложенных ордера - Buy Limit и Sell Limit. Наша задача - если один из ордеров сработал, то удалить оставшийся отложенный ордер. Предположим, что по данному инструменту работает только наш эксперт.
Полная версия статьи
Категория: Советники форекс


OrderComment() - комментарий выделенного ордера

OrderComment() - комментарий выделенного ордера В прошлых выпусках мы решали задачу определения того, была ли закрыта позиция по Stop Loss или Take Profit ордеру. Существует еще один способ узнать это. При этом данный способ будет более простым, чем рассмотренные ранее. В этом нам поможет функция OrderComment(). string OrderComment() После того как ордер или позиция выбраны функцией OrderSelect() вызов функции OrderComment() вернет комментарии этого ордера/позиции в виде строки. Очень часто сервер пишет в комментарий ордера или позиции полезные вещи: [sl] - если сработал Stop Loss; [tp] - если сработал Take Profit; Cancelled - если отложенный ордер был отменен клиентом; Deleted [no money] - если отложенный ордер должен был сработать, но был удален сервером из-за недостатка свободных средств на счете; Partial close - если позиция была закрыта частично; Close hedge by #тикер - если локированная позиция была закрыта полностью другой локированной позицией; [число%] - позиция была закрыта по Stop Out (т.
Полная версия статьи
Категория: Советники форекс


Закрытие позиции с помощью функции OrderClose()

Закрытие позиции с помощью функции OrderClose() Итак, к настоящему моменту мы знаем уже достаточно много полезных торговых функций: С помощью функции OrderSend() можно открыть позицию или выставить отложенный ордер; Функция OrderModify() изменяет параметры открытой позиции или отложенного ордера. Используя функцию OrderDelete() можно удалить отложенный ордер. Пришло время рассказать о том, как закрыть открытую позицию с помощью функции OrderClose(). bool OrderClose(int ticket, double lots, double price, int slippage, color Color=CLR_NONE) Параметры функции: Ticket - тикер открытой позиции; Lots - объем в лотах; Price - цена закрытия позиции; Slippage - максимально допустимое отклонение между price и ценой сервера, при котором позиция будет закрыта; Arrow_color - цвет закрывающей стрелки на графике. Если параметр отсутствует или его значение равно CLR_NONE, то стрелка не отображается на графике. Функция OrderClose() вернет true, если позиция закрыта успешно. Если же произошла какая-то ошибка, то функция вернет false и код ошибки можно будет получить с помощью функции GetLastError().
Полная версия статьи
Категория: Советники форекс


OrderExpiration() - дата истечения отложенного ордера

OrderExpiration() - дата истечения отложенного ордера Перед тем, мы приступим к рассмотрению торговых функций для открытия/закрытия позиции или управления ордерами, хотелось бы рассказать о двух функциях: OrderExpiration() и OrderMagicNumber(). В данной статье будет рассказано о торговой функции OrderExpiration(). datetime OrderExpiration() Эта функция возвращает дату эксперации (истечения) отложенного ордера. Если до указанного времени ордер не сработал, то он автоматически удаляется из системы. Ордер должен быть предварительно выбран с помощью функции OrderSelect(). Если дата истечения не установлена (т. е. ордер может существовать бесконечное время, пока не исполнится или не будет удален), то OrderExpiration() вернет 0. Для чего используется дата истечения отложенного ордера? Причин может быть множество. Например, довольно разумно удалять отложенные ордера в пятницу поздно вечером - перед закрытием недели. В качестве примера использования функции OrderExpiration() напишем кусок кода, которых пробегает по всем неудаленным отложенным ордерам и если дата истечения не установлена, то устанавливает ее на 23:59:59 ближайшей пятницы.
Полная версия статьи
Категория: Советники форекс


Прыг: 02 03 04 05 06 07 08 09 10 11
Скок: 10

Есть что сказать? Не стесняйтесь!






Видео по теме:




В мире больших денег

  • Самые богатые люди
    планеты. Ежегодные рейтинги FORBS. Истории успеха признаных финансовых гуру
  • Самые дорогие вещи:
    Часы, автомобили, ноутбуки стоимотью в десятки и сотни тысяч долларов. Рубрика "Чтоб я так жил"
  • Денежные прогнозы
    Что покупать и что продавать? Периодические прогнозы цен на иностранные валюты, акции крупнейших компаний и драгоценные металлы

ВКонтакте с деньгами

УГОЛОК АДМИНИСТРАТОРА