Автор#1

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

Функции:

void TrailingByShadows(int ticket, int tmfrm, int bars_n, int indent)

void TrailingByFractals(int ticket, int tmfrm, int frktl_bars, int indent)

void TrailingStairs(int ticket, int trldistance, int trlstep)

void TrailingUdavka(int ticket, int trl_dist_1, int level_1, int trl_dist_2, int level_2, int trl_dist_3)

void TrailingByTime(int ticket, int interval, int trlstep, bool trlinloss)

void TrailingByATR(int ticket,int atr_timeframe,int atr1_period,int atr1_shift,int atr2_period,int atr2_shift,double coeff,bool trlinloss)

void TrailingRatchetB(int ticket,int pf_level_1,int pf_level_2,int pf_level_3,int ls_level_1,int ls_level_2,int ls_level_3,bool trlinloss)

void TrailingByPriceChannel(int iTicket, int iBars_n, int iIndent)

void TrailingByMA(int iTicket, int iTmFrme, int iMAPeriod, int iMAShift, int MAMethod, int iApplPrice, int iShift, int iIndent)

void TrailingFiftyFifty(int iTicket,int iTmFrme,double dCoeff,bool trlinloss)


Описание:
TrailingByShadows() - по теням N последних свечей (на текущем или других таймфреймах);

TrailingByFractals() - по фракталам, образованным заданным количеством баров (на текущем или других таймфреймах).

TrailingStairs() - аналогичный стандартному трейлинг, который, однако, переносится "скачкообразно", с определённым, задаваемым шагом.

TrailingUdavka() - производный от стандартного трейлинга, но при прохождении заданных уровней профита дистанцию трейлинга сокращаем.

TrailingByTime() - через заданный интервал времени переносим стоплосс (при возможности и независимо от результатов по позиции) на заданный шаг.

TrailingByATR() - тралим на расстоянии в N x ATR.
Более подробное описание - см. в описании соответствующих функций.

TrailingRatchetB() - система быстрого поджатия в безубыток и "ступеньками" на начальном этапе роста профита, поджатие на "лоссовом" участке для предупреждения роста убытков после их "отката".

TrailingByPriceChannel() - трейлинг по противоположной границе ценового канала.

TrailingByMA() - трейлинг по скользящему среднему.

TrailingFiftyFifty() - по закрытии очередного бара расстояние между текущим курсом и стоплоссом уменьшаем в заданное кол-во раз.

Как использовать:
- скачать библиотеку (Trailing_All.mq4);
- поместить её в папку [директория MetaTrader'a]/experts/libraries;
- подключить её в вашем советнике;
- в соответствующем участке кода Вашего советника, в соответствующее время, выбрав предварительно конкретный ордер открытой позиции (функция OrderSelect()), вызвать необходимую функцию, указав её параметры (см. эксперт с примером - MyFractals(пример).mq4);

Trailing_All.mq4153 скач.
MyFractalsпример.mq4113 скач.

#2


TrailingByATR() - тралим на расстоянии в N x ATR.
Более подробное описание - см. в описании соответствующих функций.


Вообще блок тралов этого автора хорош и хорошо что его выложили.
Но я не понял все ли описание здесь или его часть в описании функций, которые/которое в каком-то другом месте?

Кроме того, помнится, на форуме есть топик "Умные тралы" или схоже.
Может, данный пост было бы уместнее разместить в том топике?

Отдельный вопрос к админу или модерам - может, топик "Умные тралы" переместить в "Уголок Программиста"?
Автор#3



Кроме того, помнится, на форуме есть топик "Умные тралы" или схоже.
Может, данный пост было бы уместнее разместить в том топике?

Отдельный вопрос к админу или модерам - может, топик "Умные тралы" переместить в "Уголок Программиста"?



В топике умные тралы все представленное там используется совместно с советниками которые торгуют, либо сопровождают ручное открытие сделок. Здесь же возможность, людям которые пишут что то свое, встраивать и эксперементировать.
Очень много тралов в закрытом коде, а просить каждый раз декомпил, да и если только начал изучать mql, очень сложно разбирать код декомпелированный.

Добавлено: 22-12-2012 03:27:44

Таралинг по АТR

Функция:

void TrailingByATR(int ticket,int atr_timeframe,int atr1_period,int atr1_shift,int atr2_period,int atr2_shift,double coeff,bool trlinloss)

Описание:
ATR - (Average True Range, Средний Истинный Диапазон) - один из индикаторов волатильности; чем больше значение, тем, соответсвенно, выше средняя волатильность за заданный период (индикатора) времени; измерятеся в пунктах. Трейлинг по ATR в большинстве случаев позволяет изменять стоплосс соответственно к характеру поведения курса - при высокой волатильности (выраженных рывках) курс "отпускаем", при "топтании на месте" поджимаем более "плотно". В трейлинге используется 2 ATR, которым предлагается задавать отличные периоды - один короткий (напр., 5), другой - длинный (напр., 20). Какому из них - atr1_period или atr2_period - без разницы. Для расчета стоплосса используется всегда большее из значений 2 ATR - это сделано для того, чтобы несколько низковолатильных дней подряд (например, перед выходом новостей) не сделали наш стоплосс слишком близким к текущему курсу (т.е. обычно большим будет более "короткий" ATR, но если имеем несколько баров с низкой волатильностью, то "переходим" на более длиннопериодный ATR). atr_timeframe - период графика, минут (5, 15, 30, 60, 240, 1440 и т.д.), на котором рассчитываются ATR (одинаков для обоих ATR). atr1_shift и atr2_shift - на каком баре (текущем, 0, предыдущем - 1 или дальше "в прошлое") считать соответственно первый и второй ATR. coeff - коэффициент, на который множим ATR, чтобы получить стоплосс (при coeff=1 стоп будер размещен на расстоянии в 1 ATR, при coeff=1.5 - на расстоянии в полтора ATR и т.д.). trlinloss - указатель того, следует ли тралить на участке лоссов (от исходного стоплосса, при наличии такового, до курса открытия).

Пример:
TrailingByATR(OrderTicket(),1440,5,1,36,1,1,false), где OrderTicket() - номер ордера, 1440 - (минут, 1 сутки) таймфрейм, на котоором рассчитываются значения ATR, 5 - период "короткого" ATR, 1 - ATR с периодом 5 считаем на предыдущем баре (№1), 36 - период "длинного" ATR, 1 - второй ATR также рассчитываем на предыдущем баре, 1 - коэффициент, на который множим ATR - в данном случае стоплосс будет размещаться на расстоянии в один ATR, false - на "лоссовом" участке не тралим.

Изменено 22 декабря, 2012 пользователем talliy

#4
talliy, понял.
Ладно, наверно, подход приемлемый.

Но все равно - отсутствует описание используемых в функциях переменных.
Надо или дать прямые ссылки где это читать на сайте-источнике, либо все таки здесь по каждой функции дать описание используемых в них переменных.

Причем, учитывая, что сайт-источник давно не сопровождается и может исчезнуть в любой момент, хоть с этого НГ, желательно описание переменных разместить тут, в топике.

А так, конечно, хорошее дело делаете, молодец.
Просто, пожалуйста, еще потрудитесь и доведите до автономности и исчерпывающей полноты выложенные вами описания.

Добавлено: 23-12-2012 05:01:37

http://codebase.mql4.com/ru/1101

Это оно?
Или вы выложили более свежую версию библиотеки трала?

Изменено 23 декабря, 2012 пользователем Старик

Для публикации сообщений создайте учётную запись или авторизуйтесь

Перейти к списку тем
Форум · 2.0.20260627.0025