Для установки отложенных ордеров используются функция OrderSend(),а для удаления – OrderDelete(). Блок 3-9 представляет цикл модификации выбранного ордера. В блоке 3-4 определяетсяновое текущее значение ограничивающей дистанции (брокер может изменить это значениев любой момент).
Размещение рыночного ордера
Также можно выполнить команду “Новый ордер” контекстных меню окон “Обзор рынка” и “Терминал — Торговля”. При этом для управления торговыми позициями откроется окно “Ордер”. На мой взгляд основной минус отложенных ордеров заключается в том, что мы не можем контролировать спред во время их срабатывания в отличие от рыночных ордеров, которые мы просто можем не открывать, пока он не нормализуется.
Рассчет размера лота
Если цена отложенного ордера уже была достигнута и ордер был исполнен, он больше не является отложенным ордером и его нельзя изменить. Переменные BuyStopLoss и BuyTakeProfit передают измененный стоп-лосс и значения тейк-профита в функцию OrderModify(). Если вы планируете использовать время истечения ордера для отложенных ордеров, вы можете использовать OrderExpiration(). Если мы не изменяем определенный параметр, мы должны передать исходное значение в функцию OrderModify().
Торговые функции
- Рассмотрим, какие параметры требуется указать в функции OrderSelect() для того, чтобыполучить указанные выше характеристики рыночных ордеров.
- На втором этапе, если цены будут соответствовать условию ордера, происходит его удаление и открытие вместо него торговой позиции.
- Для того чтобы в этом убедиться, рассмотримнаиболее простой вариант использования торговой функции OrderSend() для открытиярыночного ордера.
- Для валюты из 4 цифр Point составит 0,0001, а для валюты из 5 цифр — 0,00001.
- Так как индикатор может продолжительное время не обновлять свои экстремумы, то в итоге мы будем получить одно и то же значение переменной zz2.
Таким критерием является, например, цена открытия ордера(и зависимая от неё прибыль по ордеру). Если бы заранее было точно известно, что в течение периода закрытия ордеров ценане изменится, то порядок закрытия ордеров не имел бы значения. Однако за то время,пока исполняется торговый приказ на закрытие одного из ордеров, цена может измениться.Поэтому, фрикономика скачать закрыть следует тот ордер, который при неблагоприятном развитии событийпринесёт больше вреда. При изменении цены на 1 пункт прибыль по первому ордерууменьшится на $5, а по второму – на $10. Очевидно, что вреда будет больше от второгоордера, т.е. Таким образом, в вопросе о порядке закрытияордеров определяющее значение имеет количество лотов.
В противном случае, LotSize будет округлен до 2 десятичных знаков. Если ордер успешно открыт — пишем об этом в журнал, если же нет, то обнуляем значение переменной Update_Time для того, чтобы на следующий тик иметь возможность заново попробовать открыть этот ордер, а не ждать новой свечи. Далее мы определим ТП и СЛ в зависимости от типа ордера, ну и выставим цвет треугольничка для отображения на графике и строковое значение с текстом для журнала. Зиг Заг не является встроенным индикатором терминала МТ4, поэтому импорт его данных нужно проводить с помощью функции iCustom, которую мы проходили в этом уроке. В функцию обработки событий OnInit как всегда добавляем определение знака после запятой для корректного подсчета значений в пунктах.
Лимитный ордер на покупку размещается ниже текущей цены, а лимитный ордер на продажу — выше текущей цены. Ожидается, что цена вырастет или упадет до этого уровня, сработает ордер, а затем цена развернется. Лимитные ордера не очень часто используются в автоматической торговле.
Если необходимо сделать выбор между двумя ордерами, открытыми на одинаковое количестволотов, то следует принять во внимание другие характеристики ордеров. Например,можно учитывать дистанцию между текущей ценой и заявленным значением StopLoss каждогоиз ордеров. При этом необходимо проанализировать, какой из ордеров принесёт большевреда при сильном движении цены. Ответ также очевиден – больше вреда будет от тогоордера (из двух ордеров, открытых на одинаковое количество лотов), StopLoss которогонаходится дальше от текущей цены. Когда мы закрываем рыночный ордер, мы выходим из сделки по текущей рыночной цене.
Мы используем OrderCloseTime(), чтобы проверить время закрытия ордера, и чтобы увидеть, был ли ордер уже закрыт. Если OrderCloseTime() возвращает 0, то мы знаем, что ордер еще не закрыт. Мы будем использовать эту функцию, чтобы найти значение единственного пункта в оставшейся части этой книги. Как мы показали, переменная Point не будет работать корректно на брокерах с пятизначными котировками при расчете стоимости одного пункта. Вы никогда не можете предполагать, что советник будет использоваться только на 2-х и 4-х значном брокере, поэтому необходимо автоматически определять значение пункта для одного пункта с помощью функции PipPoint(). Если же разрыв цен происходит в пределах одного бара, то такой разрыввизуально определить нельзя (рис. 75б).
В блоке 6-7 выполняется проверка наличия найденных рыночных ордеров. Еслив блоке 2-4 не было обнаружено ни одного рыночного ордера (а это в общем случаевполне возможно), то значение флага Real_Order остаётся равным -1, что означаетотсутствие рыночных ордеров. Если при проверке в блоке 6-7 выявлено отсутствиерыночных ордеров, то выполнение цикла while прерывается и программа заканчиваетработу. Если же значение переменной Real_Order оказывается равным 0 или 1, то этозначит, что рыночный ордер к закрытию ранее определён и его надо закрыть.
У нас есть стандартная функция обработки ошибок для обработки ошибок при размещении ордера. Затем мы рассчитываем и проверяем цену нашего отложенного ордера, которая 770capital скам хранится в PendingPrice. Затем мы пересчитываем UpperStopLevel и вычисляем LowerStopLevel так, чтобы они были размещены относительно цены отложенного ордера.
Наконец, мы будем использовать OrderModify(), чтобы добавить стоп-лосс и зафиксировать прибыль в ордере. Во-первых, нам нужно убедиться, что ордер был размещен правильно. Мы делаем это, проверяя возвращаемое значение функции OrderSend(), которая является номером тикета только что размещенного ордера.
Мы делим EquityPercent на 100, чтобы получить дробное значение (0,02). Затем мы умножаем его на AccountEquity(), чтобы вычислить сумму используемого капитала. 2% от долларов — это 200 долларов, и они будут храниться в переменной RiskAmount. Отложенные ордера немного отличаются от рыночных по логике их параметров.
Вы можете закрыть часть сделки, указав частичный размер лота. Например, если у вас есть открытая сделка с размером лота 2,00 и вы хотите закрыть половину сделки, укажите 1 лот для аргумента Lots. Обратите внимание, что не все брокеры поддерживают частичное закрытие. После того, как мы успешно разместили ордер, нам нужно получить некоторую фрактальная теория информацию об ордере, если мы хотим изменить или закрыть его. Чтобы использовать OrderSelect(), мы можем либо использовать номер ордера, либо пройтись по всем открытым ордерам и выбрать каждый из них по порядку. Допустим, мы используем торговую систему, которая размещает стоп-лосс на 2 пункта ниже минимума текущего бара.