Принцип работы советника ReticoloFX

Основы создания хеджирующего эксперта

Я собираюсь изложить основную идею создания простого хеджирующего эксперта. Вот основные данные о хеджирующем советнике:

Хеджирование (англ. hedge) (финансовый термин) (Из англоязычной Википедии — Wikipedia, the free encyclopedia — Перевод MetaQuotes Software Corp.)

В области финансов, хедж (или хеджирование) — это инвестиция, которая совершается специально с целью снижения или устранения риска в рамках другой инвестиции. Хеджирование — это стратегия, разработанная для минимизации подверженности нежелательному коммерческому риску, но в то же время позволяющая получить прибыль от инвестиционной деятельности. В типичном случае хеджер может вложить средства в финансовый инструмент, который, по его мнению, оценивается ниже своей «справедливой стоимости» (например, ипотечная ссуда, которую он затем берёт), и сочетает это с короткой продажей соответствующего финансового инструмента или инструментов. Таким образом, хеджер может не беспокоиться, растёт или падает цена на рынке в целом, а лишь о том, повышается ли стоимость недооценённого финансового инструмента по отношению к хеджу. Холбрук Воркинг, пионер теории хеджирования, назвал эту стратегию «размышления на основе,» [1], где основой является разница между теоретическим значением хеджирования и его реальным значением (или между ценами спота и фьючерсов во времена Воркинга).

Некоторый риск присущ всем формам деловой активности. Некоторые риски считаются «естественными» в определённых видах деятельности, как, например, риск роста или падения цен на нефть является естественным для компаний, работающих в области добычи и переработки нефти. Другие формы риска нежелательны, но их не удаётся избежать без хеджирования. К примеру, владелец магазина может учитывать такие естественные риски, как риск конкуренции, некачественных или непопулярных продуктов и так далее. Однако риск уничтожения оборудования магазина огнём является нежелательным и может быть хеджирован посредством заключения контракта на страхование от пожара. Не все хеджи являются финансовыми инструментами: производитель, осуществляющий экспорт в другую страну, например, может хеджировать свой валютный риск при продаже, привязывая свои расходы к определённой валюте.
подробнее

Всё, что нам требуется от сервера, должно вызываться функцией MarketInfo(символ string, тип int). Данная функция позволяет нам вызывать не только данные из текущего окна графика, но и любые другие данные по символам, присутствующим в MarketWatch. Эти данные помогут нам выставить ордера для любого символа, а не только для того, из окна которого эксперт работает в данный момент. И всё это с легкостью позволит нам хеджировать 2 символа. Слава Богу и разработчикам MT4, это очень полезная возможность.

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

Корреляция — в финансовом смысле — это статистическое измерение отношения между двумя финансовыми инструментами. Коэффициент корреляции находится в диапазоне между -1 и +1. Корреляция +1 предполагает, что две пары валют движутся в одинаковом направлении 100% времени. Корреляция -1 означает, что две пары валют 100% времени движутся в противоположных направлениях. Нулевая корреляция подразумевает, что отношение между валютными парами совершенно случайно. подробнее

Всё вышеизложенное — несложные понятия, которые должны быть известны хеджерам на рынке Forex для использования хеджирующего эксперта в MT4. Теперь можно приступить к его созданию.

Кодируем хеджирующий эксперт шаг за шагом

До того как начать создание хеджирующего эксперта, мы должны выбрать 2 коррелирующих символа, т.е.:

  • GBPUSD и EURUSD, которые всегда движутся в одном направлении;
  • EURUSD и USDCHF, которые всегда движутся в разных направлениях;
  • * и так далее.

В данной статье я выбрала свою любимую хедж-пару: EURJPY и GBPJPY. Её символы всегда двигаются в одинаковом направлении, что упрощает установку хеджирующего ордера. Теперь давайте начнём. Для создания хеджирующего эксперта нужно ознакомиться с входными переменными, описанными ниже.

Шаг 2: Объявление переменных

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

Шаг 3: Получение всех необходимых статических параметров

Теперь зададим некоторые статические значения, которые будут объявлены в части init().

Шаг 4: Полезные функции

Прежде чем перейти к самой интересной части, функции «start()», начнём с функций, используемых в этом эксперте. Но, пожалуйста, обратите внимание на то, что все функции останутся за пределами функции start().

1. Корреляционная функция

Начнём с функций расчёта корреляции. Ниже приведены функции, которые применял разработчик выложенного в свободный доступ корреляционного индикатора (igorad2004@list.ru) и модифицированного нами для более лёгкого использования в данном эксперте. Так что нам больше не придётся вызывать коэффициент корреляции из внешнего индикатора. Неплохо?

Переменная CorPeriod является внешней и входной переменной, что позволяет нам настроить её. Когда вам понадобится рассчитать корреляцию между двумя символами, просто вызовите функцию Cor(string base,string hedge), например, так: Cor(EURJPY,GBPJPY). Согласитесь, это несложно.

2. Функция отправки хеджа

На мой взгляд, управлять отправкой хеджа проще путём создания функции SendH, описанной ниже.

Здесь вы можете более подробно ознакомиться с функцией OrderSend.

Функция ErrorDescription(GetLastError()), приведённая выше, заставляет наш эксперт сообщать нам, какая ошибка имела место во время работы торговой функции. Чтобы воспользоваться функцией описания ошибки, необходимо включить файл «stdlib.mqh», поместив следующий код:

Чтобы воспользоваться ею, просто вызовите функцию «ErrorDescription()», как показано выше.

3. Функция закрытия хеджа

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

Эта функция закроет только ордера с одинаковым магическим числом (magic number), то есть она не будет влиять на хеджирующие ордера с другими магическими числами. Так что беспокоиться на самом деле не о чем. Перед использованием функции закрытия нам нужно определить, «сколько у нас теперь есть» при помощи функции, описанной ниже.

Читать статью  Новостные советники форекс и авто заработок на новостях

4. Функция нахождения общей прибыли

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

Все значения прибыли рассчитываются в долларах США. Как следует из вышеуказанной строки, если общая прибыль ордеров с магическим номером 318 превышает $100, они будут закрыты. Для открытия хеджирующего ордера нам нужно знать, что нет никакого другого ордера, установленного по тому же символу и с тем же магическим числом, в тот момент, когда мы хотим отправить хедж. Это можно определить при помощи данной функции.

5. Получение количества существующих позиций

Эту функцию можно использовать следующим образом:

Данная функция вернёт нам, «сколько существующих ордеров по GBPJPY с магическим номером 318 активны» в данный момент. Это ещё одна функция для определения типа выставленного ордера.

6. Определение типа ордера конкретной существующей позиции

Данная функция возвращает целое значение типа ордера для указанного символа и заданного магического числа, которые действуют в настоящий момент. Если установленный ордер по GBPJPY является OP_BUY, возвращаемое значение будет «0». Данная функция не только работает вместе с торговой функцией. Она также работает с функцией, показывающей текущий статус хеджирования. This function is called «OP2Str».


7. Показать состояние торговли

Думаю, особых объяснений не требуется — в коде видно, как это работает.

8. Закрыть все ордера определённого типа

Ещё одна функция для прямого закрытия отдельного ордера в случае ошибки при отправке или закрытии хеджа.

то есть функция CloseScrap(«GBPJPY»,OP_BUY,318) закроет только установленные длинные позиции по «GBPJPY» с магическим числом 318. Всё просто. Осталось познакомиться с ещё одной функцией.

9. Показать желаемый логический (Boolean) статус

Ничего особенного, эта функция просто показывает логический статус некоторых параметров, например, значение BlockOpening. Если установить её на true, эта функция вернёт «Yes». Соответственно, будучи установленной на false, она вернёт «No».

Вот и всё о функциях, которые нам понадобятся. А теперь отдадим должное написанию кода процесса хеджирования.

Шаг 5: Ядро кода эксперта

Начнём со следующего:

Потом зададим диапазон корреляции.

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

Теперь установим хедж:

Затем закроем их по достижении ожидаемой прибыли:

Теперь рассмотрим нечто более интересное — ShowStatus.

Завершим стандартным для каждого эксперта блоком:

Шаг 6: Собираем весь код

Ниже вы можете видеть, как выглядит myHedge.mq4.

Заключение

В статье описан пример простого хеджирующего эксперта. Чтобы он соответствовал вашему стилю торговли, вы можете модифицировать его. Уверена, что каждый хеджирует по своему методу. И, пожалуйста, обратите внимание на то, что советник такого типа нельзя протестировать в Тестере Стратегий, поскольку у него есть собственные ограничения. Вам придётся его тестировать только «вживую». Ниже приводится примерный резхультат торговли при помощи хеджирующего советника.

А функция ShowStatus будет выглядеть следующим образом:

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

Перевод с английского произведен MetaQuotes Software Corp.
Оригинальная статья: https://www.mql5.com/en/articles/1479

Предупреждение: все права на данные материалы принадлежат MetaQuotes Ltd. Полная или частичная перепечатка запрещена.

Принцип работы советника ReticoloFX

sovetnik-reticolofx

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

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

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

Советник ReticoloFX. Алгоритм работы

Непосредственно после запуска, советник записывает в собственную память текущий ценовой уровень. Как только он заметит, что цена переместилась на заданный в настройках «шаг», он оперативно создаст ордер в сторону пробоя. Если ценовой уровень продолжит двигаться в том же направлении, то через каждый шаг робот будет создавать новые сделки.

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

Среди особенностей этого советника, которые делают его действительно эффективным и прибыльным, необходимо отметить следующие:

  1. Шаг сетки необходимо подбирать не произвольно, а в полном соответствии с волатильностью используемых валютных пар.
  2. Вести торговлю при помощи этого робота необходимо одновременно на нескольких валютных парах, на каждой из которых применяется хеджирование.
  3. Графики, используемые советником, связаны между собой, поэтому при получении определенной суммы прибыли, все открытые сделки закрываются.

Основой успешного использования советника ReticoloFX является грамотный выбор связанных между собой валютных пар. Торговля осуществляется на 7 валютных парах, которых объединяет одна общая валюта. Существует две основные «корзины» валютных пар, ознакомиться с которыми вы можете на картинке, представленной ниже.

Читать статью  Как установить Советник Альпари

Также советник ReticoloFX может использовать связку валютных пар под названием «кольца». Стандартное «кольцо» включает в себя три возможных пересечения между валютными парами. Существует шесть «колец», которые может использовать робот, ознакомиться с ними вы можете на расположенной ниже картинке.

Установка и настройка советника ReticoloFX

Скачать советник ReticoloFX совершенно бесплатно, воспользовавшись ссылкой, размещенной ниже.
[sociallocker советник ReticoloFX[/sociallocker]
Затем вам необходимо скопировать содержимое скаченного архива в каталог данных вашей торговой платформы. После запуска робота перед вами появится окно настроек, такое же как и на расположенной ниже картинке. Перед тем как установить советник на MT4, узнайте, как правильно это делать.

sovetnik-reticolofx

Для того, чтобы правильно настроить советник, необходимо разобраться, за что именно отвечает каждая строка в меню настроек:

  1. Строка Lot size дает возможность установить размер лота для каждой сделки.
  2. Строка Target profit позволяет задать желаемый размер прибыли, при достижении которого робот закроет все ордера.
  3. Строка minimum step отвечает за расстояние между открываемыми ордерами, входящими в одну сетку.
  4. Stop after close – эту строку необходимо активировать только в тех ситуациях, когда вы желаете прекратить работу советника, но при это решили дать ему самостоятельно закрыть открытые ранее ордера.
  5. Trend following – при активации этой строки советник станет открывать новые сделки лишь в направлении тренда.
  6. Closeby enabled – эта строка отвечает за закрытие ордеров по типу смежных сделок.
  7. On hold – активировав эту функцию, вы запретите роботу открытие новых ордеров.
  8. Show next traders – эта строка отвечает за отображение уровней цены, при достижении которых будут созданы новые ордера.
  9. Show open trades – отвечает за отображение на графике созданных ранее сделок.
  10. Show alert – активировав эту функцию, вы прикажете роботу в момент закрытия сетки ордеров выдавать информационное сообщение.
  11. Play sound – эта функция включает звуковое уведомление в момент, когда робот закрывает сетку ордеров.
  12. Comment – в этой строке вы можете оставить комментарии, которые будут отображаться рядом со всеми открытыми ордерами.

Не смотря на огромное количество параметров, настроить этот советник достаточно просто, так как большую часть характеристик можно оставить без изменения, достаточно просто внести изменения в строки: Lot size, Target profit и minimum step. После того, как вы настроите и запустите советник, он сразу же начнет вести торги.

Особенности применения советника ReticoloFX

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

Для того, чтобы начать торговлю при помощи советника ReticoloFX, необходимо обладать центовым счетом с размером депозита от 80 долларов. Кроме того, успешные Форекс трейдеры не рекомендуют выставлять размер лота больше 0,01.

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

Надеюсь, эта статья поможет вам научиться использовать ReticoloFX для ведения успешных торгов на рынке Форекс.

Торгуем корзинами ордеров вместе с BasketFX

Новый торговый робот BasketFX предназначен для воплощения в жизнь заветной мечты трейдера – стратегии, в которой, с помощью грамотного математического расчета, мы получаем прибыль, независимо от направления и силы движений рынка.

Характеристики советника BasketFX

Версия советника: 1.51

Валютные пары: EUR/USD, GBP/USD, EUR/JPY, EUR/GBP, USD/CAD, AUD/USD, NZD/USD, USD/JPY, AUD/NZD, USDCHF, EURCHF, EURCAD, GBPCHF, GBPJPY, CHFJPY, AUDJPY, CADJPY, NZDJPY

Время работы: Круглосуточно

Рекомендуемый ДЦ: Forex4you (счета Cent-NDD)

Стратегия Советника

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

Что такое сеточный советник? Это бот, открывающий ордера через каждые N пунктов движения цены. N называют шагом сетки. Допустим мы открыли покупку по 1.20000 и шаг сетки составляет 50 пунктов. В зависимости от стратегии, мы откроем следующую сделку на 1.19500 или на 1.2050. В любом случае на расстоянии в 50 пунктов от предыдущего ордера. Следующая сделка будет открыта еще через 50 пунктов и т.д. Думаю, общий принцип понятен

Хеджирование в сетке означает, что мы открываем ордера как на покупку, так и на продажу, в зависимости от того куда движется цены, после установки советника.

Существует множество вариаций применения сетки. К примеру, можно усреднять позицию, открывая новые ордера в том же направлении, когда сделка уходит в минус. А можно, наоборот, наращивать позиции, когда цена двигается в направлении нашей первой сделки. В BasketFX применяется второй вариант.

С сетками, конечно же, не все так просто, иначе можно было бы с легкостью “стричь купоны” и ни о чем не думать)) Есть сеточники, работающие хорошо на трендовых рынках, а есть более подходящие для флэтового, горизонтально направленного рынка.

BasketFX лучше всего работает при сильных трендах, но неплохо показывает себя и при отсутствии четкого направления движения цены. Все зависит от ширины бокового движения. И, т.к. применяется хеджирование, советник на боковом тренде просто какое-то время не дает профита, а сделки висят открытыми. Затем, когда тренд вновь набирает силу, робот закрывает все ордера, получая прибыль. Ордера могут висеть открытыми вплоть до нескольких месяцев – ЭТО НОРМАЛЬНО. Хорошая новость – нам не важно в каком направлении будет тренд. Мы ставим на оба возможных направления и наращиваем позиции в соответствии с наиболее сильным движением.

Читать статью  Argo Averager – маленький секрет твоих прибыльных сделок

Давайте рассмотрим как работает BasketFX. При первом включении советник просто зафиксирует в своей памяти ценовой уровень, на котором мы его запустили и, как только цена продвинется на “шаг”, заданный в параметрах сетки, бот откроет ордер в направлении этого первого пробоя. Если цена продолжит движение в этом направлении, советник будет открывать новые ордера через каждый “шаг”. Если цена разворачивается и идет против нас, то после пробоя стартового уровня (плюс/минус “шаг”), советник откроет ордер в противоположном направлении. Таким образом мы хеджируем, локируем убыток, не давая ему увеличиваться. Далее, BasketFX будет открывать новые ордера только в соответствии с превалирующим трендом.

Теперь перейдем к тем дополнительным элементам, которые делают эту простую стратегию продуманной и проработанной. Во-первых “шаг” базируется на волатильности рынка – чем больше волатильность, тем больше “шаг”. И наоборот в случае малой волатильности.

Но самой главной “фишкой” BasketFX является мультивалютность и связанная с ней тактика выхода из позиций. Советник торгует на нескольких парах одновременно (3 или 7). На каждой паре применяется стратегия хеджирования, описанная выше, но все графики взаимосвязаны и когда сумма профита по ВСЕМ позициям на всех связанный парах достигает N-го значения, все ордера на этих парах закрываются. Мы получаем прибыль (хотя часть ордеров конечно же будет отрицательной, общий итог выйдет положительным), а советник начинает новый круг своей стратегии.

Ключ к успеху в подборе подходящих наборов связанных пар для такой торговой системы.

Первая группа связок это “корзины” (basket). Мы торгуем 7 пар одновременно, а объединяет их валюта, присутствующая во всех семи инструментах. Корзин у нас две: одна включает пары с USD, другая – с JPY.

“USD корзина” состоит из семи торговых пар, в составе которых есть USD: AUDUSD, USDCAD, USDCHF, EURUSD, GBPUSD, USDJPY и NZDUSD.

“JPY корзина” составлена из семи инструментов с йеной: AUDJPY, CADJPY, CHFJPY, EURJPY, GBPJPY, USDJPY и NZDJPY.

Вторая группа связок это “кольца” (ring). “Кольцо” состоит из 3 возможных пересечений между 3 валютами. Всего у нас есть в наличии 6 “колец” (см. рисунок ниже). Например, одно из них это EUR/USD/CHF. Все возможные комбинации между этими валютами: EURUSD, EURCHF и USDCHF. “Кольцо” является чем-то вроде сбалансированного набора показателей. Если одна или две пары идут сильно вверх, то третья будет идти сильно вниз. И наоборот. Или одна идет вверх, другая вниз, то третья стоит на месте. В любом случае всегда наблюдается баланс.

Бэктесты

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

Мониторинги счетов

Разработчики предоставляют нашему вниманию отдельные мониторинги для каждого “кольца” и “корзины”. Не забывайте, что вы можете использовать только те кольца и корзины, которые посчитаете нужными.

Не забывайте, что вы можете использовать только те кольца и корзины, которые посчитаете нужными.

Мониторинг моего реального счета со всеми восемью советниками вы можете отслеживать в разделе RoboTest.

Рекомендуемый мани-менеджмент

Т.к. в советнике отсутствуют стоп-лоссы, то он относится к категории “потенциально опасных” роботов. И в случае неблагоприятного стечения обстоятельств и, в особенности неправильно выставленного лота, может привести к потере большей части депозита. Я очень советую вам прочитать 9 правил работы с опасными советниками – это поможет избежать множества ошибок, ведущих к потере денег на реальном счету.

Итак, при работе с BasketFX крайне важно соблюдать рекомендуемый мани-менеджмент. А именно: лот 0.01 на каждую 1000 единиц валюты счета для каждого кольца/корзины. Т.е. если вы хотите использовать все 8 советников (2 корзины и 6 колец) на одном счету с лотом 0.01 для каждого, то ваш депозит должен быть не менее 8000 единиц (80$ на счете Cent-NDD в Forex4you), для нормального функционирования BasketFX. Для трех советников(к примеру 2 корзины и 1 кольцо) с лотом 0.01 понадобится не менее 3000 единиц валюты депозита на счету. Конечно же рисковать несколькими тысячами долларов вас никто не заставляет, поэтому для этого робота лучше выбрать центовый счет, а именно Cent-NDD в Forex4You – самый оптимальный вариант.

Чтобы более наглядно показать преимущества этого типа счета, взгляните на таблицу ниже, где представлен мин. депозит для торговли всеми 8-ю советниками для разных типов счетов:

Тип счетаМинимальный лот и шаг лотаМин. стартовый депозитПримеры Брокеров
Сent-NDD0.01$80 (8000 центов)Forex4you
Центовый0.1$800Roboforex
Стандарт0.01$8000Alpari
Классика0.1$80000Классический тип счета у большинства брокеров

Установка и использование

Итак, у нас в наличии 8 советников: 2 корзины и 6 колец. Чтобы вы не запутались, привожу инструкцию, какой советник на какую пару ставить :

  1. BasketFX_Basket_JPY: AUDJPY, CADJPY, CHFJPY, EURJPY, GBPJPY, NZDJPY, USDJPY
  2. BasketFX_Basket_USD: AUDUSD, EURUSD, GBPUSD, NZDUSD, USDCAD, USDCHF, USDJPY
  3. BasketFX_Ring_AUD-NZD-USD: AUDNZD, AUDUSD, NZDUSD
  4. BasketFX_Ring_CAD-EUR-USD: EURCAD, EURUSD, USDCAD
  5. BasketFX_Ring_CHF-EUR-USD: EURCHF, EURUSD, USDCHF
  6. BasketFX_Ring_CHF-GBP-JPY: CHFJPY, GBPCHF, GBPJPY
  7. BasketFX_Ring_EUR-GBP-USD: EURGBP, EURUSD, GBPUSD
  8. BasketFX_Ring_EUR-JPY-USD: EURJPY, EURUSD, USDJPY

Всего, при использовании всех 8 советников у вас получится 32 графика.

Для корректной работы советника торговый терминал должен быть включенным с открытия рынка вечером в воскресенье до его закрытия вечером в пятницу. Если у вас нет возможности держать компьютер в рабочем состоянии 24/5, то советую использовать услугу VPS сервера.

Источник https://www.mql5.com/ru/articles/1479

Источник https://womanforex.ru/sovetniki-foreks/sovetnik-reticolofx.html

Источник https://tlap.com/reticolofx/

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: