КАК ЗАРАБОТАТЬ НА ФОРЕКСЕ
Пятница, 03.05.2024, 10:48
Приветствую Вас Гость | RSS
 
Главная Учимся программировать на языке MQL4-Урок 15 - Торговые функцииРегистрацияВход
<a href="http://instaforex.com/ru/">Форекс портал</a>
Меню сайта
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Урок 15 - Торговые функции

В этом уроке мы рассмотрим 25 торговых функций, часть из которых необходимы нам для продолжения изучения нашего первого советника.
Для начала мы разберём самую главную функцию - OrderSend(). А затем - все остальные в алфавитном порядке.
Готовы? Поехали!


1 - OrderSend()

Синтаксис:
int OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, int magic=0, datetime expiration=0, color arrow_color=CLR_NONE)

Описание:
Основная функция, используемая для открытия позиции или установки отложенного ордера.
Возвращает номер тикета, который назначен ордеру торговым сервером или -1 в случае неудачи. Чтобы получить дополнительную информацию об ошибке, необходимо вызвать функцию GetLastError().
Замечания.
При открытии рыночного ордера (OP_SELL или OP_BUY) в качестве цены открытия могут использоваться только самые последние цены Bid (для продажи) или Ask (для покупки). Если операция проводится по финансовому инструменту, отличному от текущего, то для получения последних котировок по этому инструменту необходимо воспользоваться функцией MarketInfo() с параметром MODE_BID или MODE_ASK. Нельзя использовать расчетную либо ненормализованную цену. Если запрашиваемой цены открытия не было в ценовом потоке либо запрашиваемая цена не нормализована в соответствии с количеством знаков после десятичной точки, то будет сгенерирована ошибка 129 (ERR_INVALID_PRICE). Если запрашиваемая цена открытия сильно устарела, то независимо от значения параметра slippage будет сгенерирована ошибка 138 (ERR_REQUOTE). Если же запрашиваемая цена устарела, но ещё присутствует в ценовом потоке, то позиция открывается по текущей цене и только в том случае, если текущая цена попадает в диапазон price+-slippage.

Цены StopLoss и TakeProfit не могут располагаться слишком близко к рынку. Минимальное расстояние стопов в пунктах можно получить, используя функцию MarketInfo() с параметром MODE_STOPLEVEL. В случае ошибочных, а также ненормализованных стопов генерируется ошибка 130 (ERR_INVALID_STOPS).

При установке отложенного ордера цена открытия не может быть слишком близкой к рынку. Минимальное расстояние отложенной цены от текущей рыночной цены в пунктах также можно получить, используя функцию MarketInfo() с параметром MODE_STOPLEVEL. В случае неправильной цены открытия отложенного ордера будет сгенерирована ошибка 130 (ERR_INVALID_STOPS).

На некоторых торговых серверах может быть установлен запрет на применение срока истечения отложенных ордеров. В этом случае при попытке задать ненулевое значение в параметре expiration будет сгенерирована ошибка 147 (ERR_TRADE_EXPIRATION_DENIED).

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

Параметры:
symbol - Наименование финансового инструмента, с которым проводится торговая операция.
cmd - Торговая операция. Может быть любым из значений торговых операций.
volume - Количество лотов.
price - Цена открытия.
slippage - Максимально допустимое отклонение цены для рыночных ордеров (ордеров на покупку или продажу).
stoploss - Цена закрытия позиции при достижении уровня убыточности (0 в случае отсутствия уровня убыточности).
takeprofit - Цена закрытия позиции при достижении уровня прибыльности (0 в случае отсутствия уровня прибыльности).
comment - Текст комментария ордера. Последняя часть комментария может быть изменена торговым сервером.
magic - Магическое число ордера. Может использоваться как определяемый пользователем идентификатор.
expiration - Срок истечения отложенного ордера.
arrow_color - Цвет открывающей стрелки на графике. Если параметр отсутствует или его значение равно CLR_NONE, то открывающая стрелка не отображается на графике.

Торговые операции:



2 - OrderClose()

Синтаксис:
bool OrderClose( int ticket, double lots, double price, int slippage, color Color=CLR_NONE)

Описание:
Закрытие позиции. Возвращает TRUE при успешном завершении функции. Возвращает FALSE при неудачном завершении функции. Чтобы получить информацию об ошибке, необходимо вызвать функцию GetLastError().

Параметры:
ticket - Уникальный порядковый номер ордера.
lots - Количество лотов для закрытия.
price - Цена закрытия.
slippage - Значение максимального проскальзывания в пунктах.
Color - Цвет стрелки закрытия на графике. Если параметр отсутствует или его значение равно CLR_NONE, то стрелка на графике не отображается.


3 - OrderCloseBy()

Синтаксис:
bool OrderCloseBy( int ticket, int opposite, color Color=CLR_NONE)

Описание:
Закрытие одной открытой позиции другой позицией, открытой по тому же самому инструменту, но в противоположном направлении. Возвращает TRUE при успешном завершении функции. Возвращает FALSE при неудачном завершении функции. Чтобы получить информацию об ошибке, необходимо вызвать функцию GetLastError().

Параметры:
ticket - Уникальный порядковый номер закрываемого ордера.
opposite - Уникальный порядковый номер противоположного ордера.
Color - Цвет стрелки закрытия на графике. Если параметр отсутствует или его значение равно CLR_NONE, то стрелка на графике не отображается.


4 - OrderClosePrice()

Синтаксис:
double OrderClosePrice( )

Описание:
Возвращает цену закрытия выбранного ордера.
Ордер должен быть предварительно выбран с помощью функции OrderSelect().

Параметры:
- отсутствуют -


5 - OrderCloseTime()

Синтаксис:
datetime OrderCloseTime( )

Описание:
Возвращает время закрытия для выбранного ордера. Только закрытые ордера имеют время закрытия, не равное 0. Открытые или отложенные ордера имеют время закрытия, равное 0.
Ордер должен быть предварительно выбран с помощью функции OrderSelect().

Параметры:
- отсутствуют -


6 - OrderComment()

Синтаксис:
string OrderComment( )

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

Параметры:
- отсутствуют -


7 - OrderCommission()

Синтаксис:
double OrderCommission( )

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

Параметры:
- отсутствуют -


8 - OrderDelete()

Синтаксис:
bool OrderDelete( int ticket, color arrow_color=CLR_NONE)

Описание:
Удаляет ранее установленный отложенный ордер. Возвращает TRUE при успешном завершении функции. Возвращает FALSE при неудачном завершении функции. Чтобы получить информацию об ошибке, необходимо вызвать функцию GetLastError().

Параметры:
ticket - Уникальный порядковый номер ордера.
arrow_color - Цвет стрелки на графике. Если параметр отсутствует или его значение равно CLR_NONE, то стрелка на графике не отображаются.


9 - OrderExpiration()

Синтаксис:
datetime OrderExpiration( )

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

Параметры:
- отсутствуют -


10 - OrderLots()

Синтаксис:
double OrderLots( )

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

Параметры:
- отсутствуют -


11 - OrderMagicNumber()

Синтаксис:
int OrderMagicNumber( )

Описание:
Возвращает идентификационное ("магическое") число для выбранного ордера.
Ордер должен быть предварительно выбран с помощью функции OrderSelect().

Параметры:
- отсутствуют -


12 - OrderModify()

Синтаксис:
bool OrderModify( int ticket, double price, double stoploss, double takeprofit, datetime expiration, color arrow_color=CLR_NONE)

Описание:
Изменяет параметры ранее открытых позиций или отложенных ордеров. Возвращает TRUE при успешном завершении функции. Возвращает FALSE при неудачном завершении функции. Чтобы получить информацию об ошибке, необходимо вызвать функцию GetLastError().
Замечания: цену открытия и время истечения можно изменять только у отложенных ордеров.
Если в качестве параметров функции передать неизмененные значения, то в этом случае будет сгенерирована ошибка 1 (ERR_NO_RESULT).
На некоторых торговых серверах может быть установлен запрет на применение срока истечения отложенных ордеров. В этом случае при попытке задать ненулевое значение в параметре expiration будет сгенерирована ошибка 147 (ERR_TRADE_EXPIRATION_DENIED).

Параметры:
ticket - Уникальный порядковый номер ордера.
price - Новая цена открытия отложенного ордера.
stoploss - Новое значение StopLoss.
takeprofit - Новое значение TakeProfit.
expiration - Время истечения отложенного ордера.
arrow_color - Цвет стрелок модификации StopLoss и/или TakeProfit на графике. Если параметр отсутствует или его значение равно CLR_NONE, то стрелки на графике не отображаются.


13 - OrderOpenPrice()

Синтаксис:
double OrderOpenPrice( )

Описание:
Возвращает цену открытия для выбранного ордера.
Ордер должен быть предварительно выбран с помощью функции OrderSelect().

Параметры:
- отсутствуют -


14 - OrderOpenTime()

Синтаксис:
datetime OrderOpenTime( )

Описание:
Возвращает время открытия выбранного ордера.
Ордер должен быть предварительно выбран с помощью функции OrderSelect().

Параметры:
- отсутствуют -


15 - OrderPrint()

Синтаксис:
void OrderPrint( )

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

Параметры:
- отсутствуют -


16 - OrderProfit()

Синтаксис:
double OrderProfit( )

Описание:
Возвращает значение чистой прибыли (без учёта свопов и комиссий) для выбранного ордера. Для открытых позиций это - текущая нереализованная прибыль. Для закрытых ордеров - зафиксированная прибыль.
Ордер должен быть предварительно выбран с помощью функции OrderSelect().

Параметры:
- отсутствуют -


17 - OrderSelect()

Синтаксис:
bool OrderSelect( int index, int select, int pool=MODE_TRADES)

Описание:
Функция выбирает ордер для дальнейшей работы с ним. Возвращает TRUE при успешном завершении функции. Возвращает FALSE при неудачном завершении функции. Чтобы получить информацию об ошибке, необходимо вызвать функцию GetLastError().
Параметр pool игнорируется, если ордер выбирается по номеру тикета. Номер тикета является уникальным идентификатором ордера. Чтобы определить, из какого списка выбран ордер, необходимо проанализировать его время закрытия. Если время закрытия ордера равно 0, то ордер является открытым или отложенным и взят из списка открытых позиций терминала. Отличить открытую позицию от отложенного ордера можно по типу ордера. Если время закрытия ордера не равно 0, то ордер является закрытым или удаленным отложенным и был выбран из истории терминала. Отличить закрытый ордер от удаленного отложенного также можно по типу ордера.

Параметры:
index - Позиция ордера или номер ордера в зависимости от второго параметра.
select - Флаг способа выбора. Mожет быть одним из следующих величин:
SELECT_BY_POS - в параметре index передается порядковый номер позиции в списке,
SELECT_BY_TICKET - в параметре index передается номер тикета.
pool - Источник данных для выбора. Используется, когда параметр select равен SELECT_BY_POS. Mожет быть одной из следующих величин:
MODE_TRADES (по умолчанию) - ордер выбирается среди открытых и отложенных ордеров,
MODE_HISTORY - ордер выбирается среди закрытых и удаленных ордеров.


18 - OrderHistoryTotal()

Синтаксис:
int OrdersHistoryTotal( )

Описание:
Возвращает количество закрытых позиций и удаленных ордеров в истории текущего счета, загруженной в клиентском терминале. Размер списка истории зависит от текущих настроек вкладки "История счета" терминала.

Параметры:
- отсутствуют -


19 - OrderStopLoss()

Синтаксис:
double OrderStopLoss( )

Описание:
Возвращает значение цены закрытия позиции при достижении уровня убыточности (stop loss) для текущего выбранного ордера.
Ордер должен быть предварительно выбран с помощью функции OrderSelect().

Параметры:
- отсутствуют -


20 - OrdersTotal()

Синтаксис:
int OrdersTotal( )

Описание:
Возвращает общее количество открытых и отложенных ордеров.

Параметры:
- отсутствуют -


21 - OrderSwap()

Синтаксис:
double OrderSwap( )

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

Параметры:
- отсутствуют -


22 - OrderSymbol()

Синтаксис:
string OrderSymbol( )

Описание:
Возвращает наименование финансового инструмента для текущего выбранного ордера.
Ордер должен быть предварительно выбран с помощью функции OrderSelect().

Параметры:
- отсутствуют -


23 - OrderTakeProfit()

Синтаксис:
double OrderTakeProfit( )

Описание:
Возвращает значение цены закрытия позиции при достижении уровня прибыльности (take profit) для текущего выбранного ордера
Ордер должен быть предварительно выбран с помощью функции OrderSelect().

Параметры:
- отсутствуют -


24 - OrderTicket()

Синтаксис:
int OrderTicket( )

Описание:
Возвращает номер тикета для текущего выбранного ордера.
Ордер должен быть предварительно выбран с помощью функции OrderSelect().

Параметры:
- отсутствуют -


25 - OrderType()

Синтаксис:
int OrderType( )

Описание:
Возвращает тип операции текущего выбранного ордера. Mожет быть одной из следующих величин:
OP_BUY - позиция на покупку,
OP_SELL - позиция на продажу,
OP_BUYLIMIT - отложенный ордер на покупку по достижении заданного уровня, текущая цена выше уровня,
OP_BUYSTOP - отложенный ордер на покупку по достижении заданного уровня, текущая цена ниже уровня,
OP_SELLLIMIT - отложенный ордер на продажу по достижении заданного уровня, текущая цена ниже уровня,
OP_SELLSTOP - отложенный ордер на продажу по достижении заданного уровня, текущая цена выше уровня.
Ордер должен быть предварительно выбран с помощью функции OrderSelect().

Параметры:
- отсутствуют -


Замечания
Хотел бы, чтобы Вы обратили внимание на наиболее важные торговые функции:
OrderSend()
OrderModify()
OrderSelect()
OrderClose()
OrderDelete()

А на закуску мы рассмотрим ошибки исполнения:

Любая торговая операция (функции OrderSend(), OrderClose, OrderCloseBy, OrderDelete или OrderModify) по ряду причин может завершиться неудачей и вернуть либо отрицательный номер тикета, либо FALSE. Причину неудачи можно выяснить, вызвав функцию GetLastError(). Каждая ошибка должна быть обработана по-своему. Ниже в таблице приведены общие рекомендации.

Коды ошибок, возвращаемые торговым сервером:

Поиск
<a href="http://instaforex.com/ru/">Форекс портал</a>
Copyright MyCorp © 2024
Бесплатный конструктор сайтов - uCoz