trailingudavka.mq4
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «trailingudavka.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный продукт представляет собой торговый советник для платформы MetaTrader 4, написанный на языке MQL4. Советник реализует систему трейлинг-стопа с несколькими ступенями дистанции и уровней, применяемую к конкретной торговой позиции по её тикету.
Советник работает на каждом тике, определяет тип текущей позиции (покупка или продажа) и выбирает соответствующую дистанцию трейлинга в зависимости от удаления цены от точки открытия ордера. Затем он проверяет допустимость изменения стоп-лосса с учётом стоп-уровня брокера и при необходимости модифицирует ордер.
Система поддерживает три ступени дистанций и уровней, переходя на более близкую дистанцию по мере роста прибыли. Пользователь задаёт номер ордера и параметры каждой ступени через входные настройки советника.
Настройки программы
| Настройка | Описание |
|---|---|
| ?????????? ????? (?????) ???????? ??????? (iTicket) | Тикет ордера — Тикет (номер) торгового ордера, к которому применяется трейлинг-стоп. |
| ???????? ?????????? ????????? (???????) (?? ?????? MarketInfo(Symbol(),MODE_STOPLEVEL), ?????? trl_d (iTrl_dist_1) | Дистанция трейлинга 1 — Дистанция трейлинга (в пунктах) для первой ступени, используемая при нахождении цены в пределах первого уровня. |
| ??????? ??????? (???????), ??? ?????????? ???????? ????????? ????????? ????? ????????? ? trl_dist_1 (iLevel_1) | Уровень 1 — Первый уровень цены (в пунктах) относительно точки открытия ордера, определяющий границу первой ступени трейлинга. |
| ?????????? ????????? (???????) ????? ?????????? ?????? ?????? ??????? ? level_1 ??????? (?? ?????? M (iTrl_dist_2) | Дистанция трейлинга 2 — Дистанция трейлинга (в пунктах) для второй ступени, используемая при нахождении цены во втором уровне. |
| ??????? ??????? (???????), ??? ?????????? ???????? ????????? ????????? ????? ????????? ? trl_dist_2 (iLevel_2) | Уровень 2 — Второй уровень цены (в пунктах) относительно точки открытия ордера, определяющий границу второй ступени трейлинга. |
| ?????????? ????????? (???????) ????? ?????????? ?????? ?????? ??????? ? level_2 ??????? (?? ?????? M (iTrl_dist_3) | Дистанция трейлинга 3 — Дистанция трейлинга (в пунктах) для третьей ступени, используемая при нахождении цены за пределами второго уровня. |
Поиск по коду файла
extern int iTicket; // ?????????? ????? (?????) ???????? ???????
extern int iTrl_dist_1 = 30; // ???????? ?????????? ????????? (???????) (?? ?????? MarketInfo(Symbol(),MODE_STOPLEVEL), ?????? trl_dist_2 ? trl_dist_3);
extern int iLevel_1 = 50; // ??????? ??????? (???????), ??? ?????????? ???????? ????????? ????????? ????? ????????? ? trl_dist_1 ?? trl_dist_2 (?????? level_2; ?????? trl_dist_1);
extern int iTrl_dist_2 = 20; // ?????????? ????????? (???????) ????? ?????????? ?????? ?????? ??????? ? level_1 ??????? (?? ?????? MarketInfo(Symbol(),MODE_STOPLEVEL));
extern int iLevel_2 = 70; // ??????? ??????? (???????), ??? ?????????? ???????? ????????? ????????? ????? ????????? ? trl_dist_2 ?? trl_dist_3 ??????? (?????? trl_dist_1 ? ?????? level_1);
extern int iTrl_dist_3 = 10; // ?????????? ????????? (???????) ????? ?????????? ?????? ?????? ??????? ? level_2 ??????? (?? ?????? MarketInfo(Symbol(),MODE_STOPLEVEL)).
int init()
{
// код доступен только после оплаты
}
int deinit()
{
return(0);
}
int start()
{
// код доступен только после оплаты
}
void TrailingUdavka(int ticket,int trl_dist_1,int level_1,int trl_dist_2,int level_2,int trl_dist_3)
{
double newstop = 0; // ????? ????????
double trldist; // ?????????? ????????? (? ??????????? ?? "???????????" ????? = trl_dist_1, trl_dist_2 ??? trl_dist_3)
if ((trl_dist_1<MarketInfo(Symbol(),MODE_STOPLEVEL)) || (trl_dist_2<MarketInfo(Symbol(),MODE_STOPLEVEL)) || (trl_dist_3<MarketInfo(Symbol(),MODE_STOPLEVEL)) ||
(level_1<=trl_dist_1) || (level_2<=trl_dist_1) || (level_2<=level_1) || (ticket==0) || (!OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)))
{
Print("???????? ???????? TrailingUdavka() ?????????? ??-?? ?????????????? ???????? ?????????? ?? ??????????.");
return(0);
}
if (OrderType()==OP_BUY)
{
if ((Bid-OrderOpenPrice())<=level_1*Point) trldist = trl_dist_1;
if (((Bid-OrderOpenPrice())>level_1*Point) && ((Bid-OrderOpenPrice())<=level_2*Point)) trldist = trl_dist_2;
if ((Bid-OrderOpenPrice())>level_2*Point) trldist = trl_dist_3;
if ((OrderStopLoss()==0) || (OrderStopLoss()<OrderOpПоказано первые 50% кода (символов: 3543)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.