Перейти к содержанию

Поиск сообщества

Показаны результаты для тегов 'библиотека'.

  • Поиск по тегам

    Введите теги через запятую.
  • Поиск по автору

Тип контента


Форумы

  • Общее
    • Форум Trade Like a Pro
    • Общие вопросы
    • В помощь трейдеру
    • Hardware/Software для трейдера
    • Платежные системы
    • Беседка
  • Инвестирование
    • Бородатые ПАММы
    • Проверенные ПАММы
    • Рискованные ПАММы
    • Архив ПАММ-счетов и Сигналов
  • Ручная торговля
    • Интерактивная Торговля
    • Дневники трейдеров
    • Торговые системы
    • Индикаторы
    • Классические индикаторы
    • Скрипты
    • Черный список
  • Автоматические Торговые Системы (EA)
    • Советники Форекс
    • Уголок Программиста
    • Совы в розыске
    • Черный список
  • Разработки форума
    • Лаборатория ProfitFX
  • Форекс брокеры и VPS-сервисы
    • Форекс Брокеры
    • Черный список
    • VPS-сервисы
  • Криптотрейдинг
    • Криптовалюты
    • Биржи криптовалют
    • Общие вопросы по крипте
  • Фондовый и срочный рынок
    • Брокеры фондового рынка
    • Индексы и отдельные акции
    • Стратегии для фондового и срочного рынка
  • Разное
    • Архив
  • Бинарные Опционы
    • Стратегии и Индикаторы
    • Брокеры БО

Поиск результатов в...

Поиск контента, содержащего...


Дата создания

  • Начало

    Конец


Дата обновления

  • Начало

    Конец


Фильтр по количеству...

Регистрация

  • Начало

    Конец


Группа


Обо мне


Опыт торговли


Страна


Город

Найдено: 4 результата

  1. Намедни занялся я подключением новостного индикатора к одному из советников. Выбрал urdala_news, зарекомендовавший себя в Генерике. Задача сама по себе нехитрая, но после запуска советника в тестере я заметил, что он регулярно сообщает мне о попытках загрузить новости. И возвращает он одно значение: новости в интервале, или нет. А если мне чуть более интересную логику хочется, с закрытием в один интервал, запретом открытия в другой - это к нему нужно несколько раз обратиться. Заглянул я в код и ужаснулся - на вызов основной функции индикатора он что только не делает. А потом еще, чтобы поделиться этим советником, нужно поделиться индикатором... В общем, написал я подключаемый модуль, который делает все то же самое, но эффективно - и можно позвать его напрямую из советника и получить структуру вида struct NewsCheckStatus { int minutesSinceLastNews; int minutesToNextNews; }; Соответственно, объект этот можно получать не чаще раза в минуту и повсеместно переиспользовать. Технические детали: Для использования библиотеки нужно ее подключить и создать экземпляр класса NewsLoader: NewsLoader(int _serverGMTOffset, string _currencies = "", bool _high = true, bool _medium = true, bool _low = true, bool _drawLines = true, bool _onlyDrawFutureNews = false, color _colorHigh = clrRed, color _colorMedium = clrLime, color _colorLow = clrBlue, int _refreshPeriodSeconds = 86400) Параметры конструктора: serverGMTOffset - сдвиг брокера от GMT. Этот параметр может меняться за время жизни советника из-за DST, ниже я объясню, как с этим бороться currencies - строка с набором валют через запятую. Определяет, по каким валютам вы хотите фильтровать новости. Если строка пустая, используются две валюты текущего символа high, medium, low - фильтрация по волатильности новости: если вы не хотите учитывать малозначимые новости, например, поставьте low в false drawLines - рисовать ли вертикальные линии на чарте onlyDrawFutureLines - рисовать только линии в будущем colorHigh, colorMedium, colorLow - цвета соответствующих линий refreshPeriodSeconds - как часто перекачивать новости с сервера. Не злоупотребляйте, эта операция занимает несколько секунд и будет выполнена на одном из обращений из основной программы, запросто может притормозить торговый процесс в важный момент Как я уже упомянул, в определенный момент за счет перехода на летнее время GMT сдвиг меняется. Новости же поставляются по времени GMT, поэтому, если ничего не делать, они будут отображаться и обсчитываться неправильно - со сдвигом в час. Если ваша программа умеет обрабатывать DST (например, вы используете мою библиотеку для работы с планировщиком), то достаточно оповестить NewsLoader о новом GMT: void SetGMTOffset(int _offset) Он все пересчитает и перерисует (только грядущие новости). Операция незатратная, можно просто отсылать оффсет на каждом тике, например, так: NewsCheckStatus newsCheckStatus; tradeTimeStatus = tradeTimeManager.GetTradeTimeStatus(); if (UseNewsFilter) { newsLoader.SetGMTOffset(tradeTimeManager.GetLiveGMTOffset()); newsLoader.CheckNewsStatus(newsCheckStatus); } Опросить библиотеку можно двумя способами: void CheckNewsStatus(NewsCheckStatus &newsCheckStatus) Эта функция вернет вышеупомянутую структуру, которую можно использовать, например, так: if (newsCheckStatus.minutesSinceLastNews >= TimeAfterNews && newsCheckStatus.minutesToNextNews > TimeBeforeNews) isOrderOpened = CheckOpen(); Или так: if (UseNewsFilter && CloseTimeBeforeNews != 0 && newsCheckStatus.minutesToNextNews <= CloseTimeBeforeNews) //фильтр новостей CloseAll(IntegerToString(CloseTimeBeforeNews) + " minutes before news"); А можно просто спросить, нет ли новостей в интервале: bool IsNews(int _minutesBefore, int _minutesAfter) Подключение новостей в тестере: Скачиваем скрипт с маркета: https://www.mql5.com/ru/market/product/23961 Запускаем его с выбранными датами. Когда закончит, заходим в папочку MQL4/files и копируем файл Calendar.txt в папочку tester/files Все, новости работают на истории (не забываем выставить правильный GMT offset) Всем профитов! UrdalaNewsLoader.mqh
  2. Внимание! Добавлена новая версия библиотеки, TradeTimeFull Реализованы все возможные финтифлюшки: поддержка множества интервалов внутри дня возможность задать разное расписание в разные дни возможность задать разное расписание зимой и летом есть встроенная поддержка оптимизации добавочного интервала переходы на летнее время и обратно обход ролловера автоопределение GMT с синхронизацией по стороннему серверу (через ДЛЛ и через WebRequest по выбору разработчика) задание расписания в произвольном часовом поясе с произвольным контрактом перехода на летнее время обход рождества обход определенных месяцев в году все настройки, которые требуются, изолированы в подключаемый файл, то есть всю библиотеку вместе с настройками можно включить одним include statement Все это оптимизировано с точки зрения скорости выключения, есть удобные флажки "торговать круглосуточно" (который очень быстро считается), "торговать летом по зимнему расписанию" В целом, все, что может захотеться от библиотеки расчета времени. В архиве присутствует руководство PDF по настройкам и пример подключения в советника (без реализации торговых функций, но с комментариями на экране) Ниже - описание первой версии >>>>>>>>>>>>>>>>> В некоторых торговых стратегиях мы выбираем определенный интервал времени для торговли. Или набор интервалов. Связано это с какими-то событиями, которые происходят непосредственно до, во время, или после этого интервала. Эти события привязаны к определенной временной зоне, с ее переходами на летнее и зимнее время и все вот это вот - в то время, как ваш брокер может потенциально придерживаться других контрактов в вопросах DST и, кроме того, находится в совсем другой временной зоне. Я искренне считаю, что для правильной реализации таких стратегий нужно указывать временные интервалы в координатах тех событий, к которым мы хотим привязываться. Я написал библиотечку, которая принимает торговые интервалы в выбранной вами таймзоне, с определенным контрактом перехода на DST, а так же умеет автоматически определять, какой контракт у вашего брокера. Поскольку в тесте это определить нельзя, для теста нужно указать вручную, каков зимний GMT Offset вашего брокера и каков контракт DST. Для Альпари, например, контракт европейский, то есть, они переходят на летнее время в последнее воскресенье марта и обратно в последнее воскресенье октября (поэтому Альпари будет на час ближе к Нью-Йорку последние пару недель марта и около недели в конце октября - начале ноября) Tickmill придерживается американского стандарта. Ну и есть еще выродки, вроде IG Markets, которые вообще никуда на лето не ходят, потому, что у них бОльшая часть operations сосредоточена вблизи экватора, где большинство стран не знают, что такое DST и нафига он нужен. Вы выбираете целевой рынок (например, американский, как в нашем скальпере), задаете смещение от GMT и контракт DST этого целевого рынка. Этот выбор можно оставить пользователю, или спрятать в реализации конкретного советника, если советник нацелен на определенный, заранее известный рынок. После этого все торговые интервалы указываете во времени вашего целевого рынка. Для теста нужно указать GMT Offset и DST контракт вашего брокера (или что вы выбрали в настройках ТДС2). Ролловер Ролловер это понятие с внятным временем, он случается на закрытии нью-йорка в 5pm EST. Поэтому задавать время ролловера не надо. Можно задать, за сколько минут до, и сколько минут после действует фриз, и что вы хотите запретить в период фриза: открытие, закрытие. Это все будет посчитано и отдано в советник в удобной для разработчика форме. Ну и много еще плюшек. Например, можно указать много интервалов, через запятую (например, "15:00-16:00,19:00-21:00"), библиотечка считает, сколько минут прошло с последней сессии, сколько осталось до следующей, сколько до конца текущей - практически любая логика советника, связанная с обсчетом времени, должна легко портироваться. Раздельно указываются сессии по дням недели. Важно: Формат интервала строго hh:mm-hh:mm, никаких пробелов, в том числе после запятых. 1:00-15:00 - неправильно. Правильно 01:00-15:00 Интервал считается интервалом понедельника, если он начинается в понедельник! То есть, если для понедельника вы указали интервал с 23:00 до 02:00 - это значит, вы хотите, чтобы советние торговал с 11 вечера понедельника до 2 утра вторника (в выбранном вами часовом поясе). Поскольку по американскому времени рынок открывается в 5 часов дня в воскресенье, в список дней добавлено воскресенье. Как с этим работать: В приложении три файла: Include/TradeTimeImpl.mqh - сама библиотека. В ней объявлены все необходимые классы и структуры. Для работы с библиотекой нужно создать экземпляр класса TradeTimeStatus и отдать ему все параметры. Например, так: TradeTimeManager tradeTimeManager(SUNDAY_TradeIntervals, MONDAY_TradeIntervals, TUESDAY_TradeIntervals, WEDNESDAY_TradeIntervals, THURSDAY_TradeIntervals, FRIDAY_TradeIntervals, BrokerGMTOffsetWinter, BrokerDstMode, TargetGMTOffsetWinter, TargetDSTMode, OpenOrdersInRollover, CloseOrdersInRollover, FreezeMinutesBeforeRollover, FreezeMinutesAfterRollover); После этого можно воспользоваться одним из трех публичных методов этого класса: GetLiveGMTOffset возвращает автоматически определенный сдвиг вашего брокера от GMT. Нужно разве что для отображения на экране, косметическая функция GetTradeTimeStruct - возвращает структуру, содержащую три времени: GMT, EST (обязательно вычисляется для определения времени ролловера) и target - время в вашем целевом рынке. Вспомогательный метод, структура также включена в результат следующего вызова GetTradeTimeStatus - основная функция. Есть смысл вызывать раз на тике и переиспользовать результат вызова в советнике, ибо он содержит всю необходимую информацию, а именно: bool isTradingSessionActive - активна ли одна из торговых сессий bool isRollover - находимся ли мы в зоне заморозки ролловера bool isOpenAllowed - разрешено ли открытие (комбинация активной торговой сессии и настроек ролловера. Вне сессии false, внутри сессии true, за исключением ролловера. Внутри ролловера - зависит от соответствующего ограничения ролловера) bool isCloseAllowed - разрешено ли закрытие (Вне ролловера - true. Внутри ролловера - зависит от соответствующего ограничения ролловера) int activeSessionWeekDay - информационный элемент, сессия какого дня активна сейчас. 0 - воскресенье. -1, если сессия не активна. int minutesSinceSessionFinished - сколько минут прошло с окончания последней сессии (считается независимо от того, торговал советник в эту сессию, или нет). 0 когда сессия активна int minutesToSessionFinish - сколько минут до конца текущей сессии. 0 когда сессия не активна int minutesToNextSession - сколько минут до следующей сессии. 0 когда сессия активна TradeTimeStruct tradeTimeStruct - вышеупомянутая структура, содержащая три времени: GMT, EST, target Include/TradeTimeEng.mqh - еще один подключаемый файл, в котором собраны все настройки и инициализация TradeTimeManager. Настройки на английском, можно создать TradeTimeRus по образу и подобию и использовать его. Если вы хотите отдать пользователю контроль за всеми настройками библиотеки, достаточно подключить этот файл и можно сразу обращаться к инициализированному в нем экземпляру tradeTimeManager, удобно и минимум хлопот. Если хочется более тонкой настройки, параметры и инициализацию можно скопировать из этого файла в советник и докрутить по вкусу. Experts/SandboxTime.mq4 - пример советника, использующего библиотеку. Все, что он делает - это пишет большинство параметров в коммент на чарте, вычисляя разницы во времени и т д. Позволяет визуально протестировать логику: выберите разные контракты DST для брокера и целевого рынка и понаблюдайте, как разница во времени меняется вокруг середины-конца марта и конца октября-начала ноября. Заодно задайте ему множество интервалов и посмотрите, как он справляется с вычислением минут до и после. Напоследок покрутите его вокруг ролловера - он пишет, чего и когда он замораживает. Библиотечка проверяет осмысленность ваших настроек при запуске, используя открытый API от worldclock.com Вам нужно будет разрешить советникам/индикаторам, подключающим библиотеку, загружать DLL. Вот полный URL, к которому он обращается: http://worldclockapi.com/api/json/gmt/now Если есть конструктивные пожелания - я попытаюсь выкроить время на поддержку. Всем профитов! TimeLib.zip TradeTimeFull.zip
  3. Здравствуйте Уважаемые Форумчане. Сопровождение ордеров это один из столпов всех советников. И, зачастую, достаточность и правильность сопровождения отделяет хороший советник от плохого. На форуме представлены множество советников и тем по ТЗ к ним. В каждой из них данный вопрос обстоит остро и поднимается чуть ли не с каждым обновлением версии. А если учитывать темы по ручной торговле, то тактик по сопровождению позиций можно и не счесть. Итак представляю Вашему вниманию третью версию библиотеки. Я постараюсь составить наиболее полную инструкцию по применению. Составил чистые и несколько пресетов настройки для примера. Что сделано: Есть функция БУ; функция трала: стандартный Трал; АТР трал; трал по фракталам; функция многоуровневого сопровождения; функция получения Цены открытия; функция получения ТП; функция получения СЛ; функция получения Лота; функция открытия ордера; функция закрытия ордеров; функция частичного закрытия; функция счетчика ордеров; функция логгирования; функция определения нового бара. Провел отладку всего этого добра, решено много вопросов по техническим решениям. Библиотека сохраняет состояние наблюдаемых ордеров в файл. Библиотека подхватывает ордера с магическим номером по текущей паре, так что необязательно пользоваться встроенной функцией. Библиотека ведет независимый лог работы. Многоуровневое сопровождение может одновременно обрабатывать множество ордеров. Может одновременно использовать любые комбинации блоков сопровождения. Дребезга по СЛ и многократного закрытия по одному уровню быть недолжно. Постарался по максимуму комментировать код, но кое где мог и пропустить. Я так понимаю делаю не совсем то что ожидают, но зато то что хотелось бы видеть. В планах: 1 Сделать отдельное логирование в файл внутри библиотеки. Наверное с настройкой подробности логирования. 2 Сделать функцию получения цены для типовых решений размещения отложек 3 Добавить МБ пару тралов типо "Трал по Параболику" и "Трал по теням" 4 Продумать вариант работы В зоне СЛ. 5 Продумать вариант сопровождения по Времени. 6 Выслушать критику и предложения, обсудить их Если у кого то появится желание кинуть в меня что то грязное (кроме денег) Прочитайте инструкцию еще раз |3=3 ОГРОМНАЯ просьба: Поменьше флуда - Побольше конструктива, не хотелось бы раздувать топик на овер 100500 страниц, что бы потом никто не смог его осилить и тема заглохла без результата! При цитировании кого-либо во время обсуждения скрывайте цитату под спойлер! Хоть через силу, но ознакомиться и применять информацию из статьи. Хаос начинается с Нас! Инструкция по эксплуатации: Шпаргалка программиста Пример реализации проекта с использованием библиотеки: SPM_v0.1.rar SPM_v0.3.rar
  4. Многим программистам торговых систем приходит понимание, что неплохо было вы внедрить в своего робота функцию сопровождения открытых позиций. Предлагаю вашему вниманию несколько функций траллинг стопов в одной библиотеке. Функции: 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.mq4 MyFractalsпример.mq4
×
×
  • Создать...