#3bar trailer.mq4
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «#3bar trailer.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Этот исходник представляет собой торговый советник для MetaTrader 4, написанный на языке MQL4. Его задача — сопровождение уже открытой позиции путём изменения уровня стоплосса. Советник не открывает новые сделки и не управляет объёмом; он только модифицирует защитный стоп уже существующего ордера.
Работа построена на анализе теней свечей выбранного таймфрейма. Пользователь задаёт тикет позиции, таймфрейм, количество баров и отступ в пунктах. Советник определяет экстремум по теням заданного числа свечей и переносит стоплосс на рассчитанное расстояние от этого экстремума. Для длинной позиции используется минимум теней, для короткой — максимум.
Дополнительный переключатель позволяет разрешить или запретить трейлинг в зоне убытка, то есть между текущим стоплоссом и ценой открытия позиции. Если трейлинг в убытке выключен, стоп переносится только тогда, когда новый уровень оказывается лучше цены открытия.
Советник вызывается на каждом тике, проверяет корректность входных значений и доступность ордера по тикету, после чего пытается изменить стоплосс через торговые функции MQL4. При неудаче выводится сообщение об ошибке. Исходный код содержит только подтверждённые операции модификации стоплосса и не реализует иных торговых действий.
Настройки программы
| Настройка | Описание |
|---|---|
| iTicket | Уникальный номер (тикет) открытой позиции, которую необходимо сопровождать. Ноль считается некорректным значением. |
| iTmfrm | Таймфрейм, по барам которого выполняется расчёт теней для трейлинга. Допускаются значения 1, 5, 15, 30, 60, 240, 1440, 10080 и 43200 минут. |
| iBars_n | Количество последних баров выбранного таймфрейма, по теням которых рассчитывается экстремум для переноса стоплосса. Должно быть не меньше единицы. |
| iIndent | Отступ в пунктах от найденного экстремума тени, на котором размещается новый уровень стоплосса. Должен быть неотрицательным. |
| bTrlinloss | Логический переключатель, определяющий, разрешён ли перенос стоплосса в зоне убытка — между текущим стоплоссом и ценой открытия позиции. Если выключен, стоп переносится только при условии, что новый уровень лучше цены открытия. |
Поиск по коду файла
extern int iTicket; // уникальный номер (тикет) открытой позиции
extern int iTmfrm; // период, по барам которого следует тралить (1, 5, 15, 30, 60, 240, 1440, 10080, 43200)
extern int iBars_n = 3; // кол-во баров, по которым следует тралить
extern int iIndent = 5; // отступ от тени бара, на котором размещается стоплосс
extern bool bTrlinloss = false; // следует ли тралить на участке лоссов (между курсом стоплосса и открытия)
int init()
{
// код доступен только после оплаты
}
int deinit()
{
return(0);
}
int start()
{
// код доступен только после оплаты
}
void TrailingByShadows(int ticket,int tmfrm,int bars_n, int indent,bool trlinloss)
{
int i; // counter
double new_extremum;
if ((bars_n<1) || (indent<0) || (ticket==0) || ((tmfrm!=1) && (tmfrm!=5) && (tmfrm!=15) && (tmfrm!=30) && (tmfrm!=60) && (tmfrm!=240) && (tmfrm!=1440) && (tmfrm!=10080) && (tmfrm!=43200)) || (!OrderSelect(ticket,SELECT_BY_TICKET)))
{
Print("Трейлинг функцией TrailingByShadows() невозможен из-за некорректности значений переданных ей аргументов.");
return(0);
}
if (OrderType()==OP_BUY)
{
for(i=1;i<=bars_n;i++)
{
if (i==1) new_extremum = iLow(Symbol(),tmfrm,i);
else
if (new_extremum>iLow(Symbol(),tmfrm,i)) new_extremum = iLow(Symbol(),tmfrm,i);
}
if (trlinloss==true)
{
if ((((new_extremum - indent*Point)>OrderStopLoss()) || (OrderStopLoss()==0)) && (new_extremum - indent*Point<Bid-MarketInfo(Symbol(),MODE_STOPLEVEL)*Point))
if (!OrderModify(ticket,OrderOpenPrice(),new_extremum - indent*Point,OrderTakeProfit(),OrderExpiration()))
Print("Не удалось модифицировать ордер №",OrderTicket(),". Ошибка: ",GetLastError());
}
elsПоказано первые 50% кода (символов: 2981)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.