Стратегия Gelium_Trader (TradeStation).

История изменений материала

24.04.2018 Выложена версия Gelium_Trader 2019.04.24.
23.06.2018 Выложена версия Gelium_Trader 2018. Обновлено описание параметров.
06.03.2016 Выложена версия Gelium_Trader 2015 Final.
17.09.2013  Выложена версия Gelium_Trader 2013.09.17.
Добавлен раздел "Вопросы и ответы".
15.09.2013  Выложена версия Gelium_Trader 2013.09.15.
12.09.2013  Выложена версия Gelium_Trader 2013.09.12.

Дистрибутив.

Для работы стратегии необходимы:
  • TradeStation 9.1.12098 (Update 12) или новее.
  • Для работы с моделями необходима библиотека Puls 2013.319 или новее. Для использования других стратегий Gelium_Trader_XXX библиотека Puls не нужна.
Обратите внимание:
  • Стратегия написана на языке EasyLanguage для платформы TradeStation 9.x. Для MetaTrader нет реализации этой стратегии и пока не планирую это делать.
Изменения в версии 2019.04.24: Изменения в версии 2018.06.23:
  • Изменений в версии 2018 по сравнению с версией 2015 огромное количество, поэтому необходимо прочесть новое описание всех параметров.

Описание.

Торговая стратегия Gelium_Trader является базовым движком для всех стратегий Gelium_Trader_XXX. Полное описание всех общих параметров стратегий есть в этой статье. Текущая версия Gelium_Trader содержит сигнал p_MD_XXX, который позволяет провести тестирование торговых решений на базе моделей, которые самостоятельно устанавливает трейдер с помощью индикатора Gelium_Expert.

Возможности стратегии:
  • Открытие позиций по установленным трейдером моделям.
  • Пирамидинг на откатах или с фиксированным шагом.
  • Закрытие позиций фиксированным стопом.
  • Закрытие позиций фиксированным лимитом.
  • Подтягивание стопа к минимуму отката (StopExt).
  • Выход после разворота на откате StopRT (двойной трейлинг StopReTarget).
  • Подтягивание стопа в случае нахождения цены долгого времени в малом диапазоне (StopTM). 
  • Подтягивание стопа с использованием Gelium_Q.
  • Риск фиксированным лотом или процентом депозита (Optimal F).
  • Ограничение числа повторных входов по одному базовому сигналу.
  • Собственный целевой критерий оптимизации (поиск максимальной доходности для года с минимальной отдачей) .
  • Экспорт торговых сигналов в MetaTrader с помощью советника Gelium_2MT.
  • Экспорт параметров стратегии в Excel.
Обсуждение стратегии на форума: "Gelium_Trader - торговля на базе моделей".
Параметры стратегии:

Параметр Назначение
p_MD - параметры для работы с моделями. В других стратегиях Gelium_Trader_XXX параметры сигналов для открытия позиций будут другие. Например, p_SRB_XXX. Соответственно параметры p_MD_XXX в других стратегиях будут отсутствовать.
p_MD(1) 1 - разрешается торговля по моделям.
p_MD_ExtIdent(1) Отступ в пунктах от экстремума для входа на прорыве.
p_MD_TargetMinus(20) Количество пунктов, на которое уменьшается размер цели. В среднем, для базовых пар и золота, цена не доходит до целевого уровня в среднем 20 пунктов Fоrexite.
p_MD_Ident2w(100) Уровень входа на опережение относительно предыдущего экстремума на второй волне. Для входа по второй волне стоп размещается на 1 пункт выше предыдущей волны.
p_MD_Open(1) 1 - разрешаются входы по моделям.
p_MD_Exit(1) 1 - разрешаются закрытия позиций по моделям.
p_MD_Series
("model_"+gp_SymbolName)
Название серии с данными моделей (серия создается с помощью индикатора Gelium_Expert).
p_Impuls - параметры детектирования наличия импульса.
p_Impuls_Rollback(0) Максимально допустимый размер отката против импульсного движения.
p_Impuls_Start(0) Размер движения в одном направлении без откатов больше p_Impuls_Rollback-пунктов, достижение которого включает флаг наличия импульса.
p_Risc - параметры управления вычислением объёма сделки.
p_RiscCapital(10000) Размер депозита на начало года.
p_RiscPrc(10) Процент риска в одной позиции относительно текущего остатка. Если параметр равен нулю, используется фиксированный размер позиции.
p_RiscPrc_NoLossReserve(0) Если параметр равен нулю, то после установки ордера размер рискового депозита уменьшается на величину возможной потери. Если параметр равен 1, резервирование под возможный убыток не осуществляется.
p_Profit - фиксирование прибыли с помощью заданного размера профита в пунктах относительно цены открытия позиции.
p_Profit(0) Размер фиксированного профита в пунктах.
p_Profit_Indiv(0) Если параметр равен нулю, уровень фиксации прибыли для всех открытых позиций вычисляется относительно цены открытия последней позиции. Если параметр равен 1, то каждый вход имеет свой отдельный уровень фиксации прибыли.
p_Profit_Impuls(0) Если параметр равен нулю, ордер для фиксации прибыли ставится всегда. Если параметр равен 1, то ордер для фиксации прибыли ставится только в том случае, если был детектирован импульс.
p_Stop - параметры фиксирование убытка с помощью заданного размера уровня stop loss в пунктах относительно цены открытия позиции.
p_Stop(50) Размер стопа в пунктах.
p_Stop_Indiv(0) Если параметр равен нулю, уровень фиксации убытка для всех открытых позиций вычисляется относительно цены открытия последней позиции. Если параметр равен 1, то каждый вход имеет свой отдельный уровень фиксации убытка.
p_StopZero - подтягивание стопа к уровню без убытка или фиксации гарантированной прибыли. В случае, когда стоп подтягивается к уровню гарантированной прибыли, будущая прибыль добавляется к объёму рискового депозита и учитывается при расчёте объёма новых позиций.
p_StopZero(0) Если параметр больше нуля, то после прохождения в направлении позиции более p_StopZero-пунктов, стоп переносится в ноль или на уровень фиксации прибыли в p_StopZeroProf-пунктов лучше цены открытия позиции.
p_StopZeroProf(0) Размер фиксации профита в пунктах.
p_StopZeroAsLimit(0) Если параметр равен нулю, параметр p_StopZeroProf не может быть больше параметра p_StopZero. Это приводит к запрещению установки ордера фиксации прибыли. Если параметр равен 1 и p_StopZeroProf>=p_StopZero, то при прохождении StopZero-пунктов будет установлен лимитный ордер согласно параметру p_StopZeroProf. Это может быть полезно, когда целью стратегии являются краткосрочные импульсы.
p_StopZeroWait(0) Время ожидания в минутах, прежде чем изменение ордеров согласно параметров p_StopZero можно будет использовать. Параметр имеет смысл для торговли внутри дня.
p_StopRT - закрытие позиции двойным трейлингом по методу StopRT (StopReTarget).
p_StopRT1(0) Порог движения в пунктах против открытой позиции, после достижения которого позиция будет закрыта на откате в направлении открытой позиции.
p_StopRT2(0) Размер отката в пунктах в направлении ранее открытой позиции, по достижению которого позиция будет закрыта.
p_StopRT_Impuls(0) Если параметр равен нулю, метод закрытия позиций используется всегда. Если параметр равен 1, то метод закрытия позиций используется только в том случае, если был детектирован импульс.
p_StopRT_PlusPos(0) Пока не используется. Зарезервировано на будущее.
p_StopRT_Stop(0) Пока не используется. Зарезервировано на будущее.
p_StopExt - закрытие позиции с помощью подтягивания стопа к минимуму/максимуму отката против направления текущей позиции.
p_StopExt1(0) Размер отката в пунктах для подтягивания стопа.
p_StopExt2(0) Порог прохождения в направлении открытой позиции в пунктах, по достижению которого стоп будет установлен на один пункт ниже экстремума отката.
p_StopTm - закрытие позиции с помощью подтягивания стопа к минимуму/максимуму диапазона цен за заданное число баров.
p_StopTm1(0) Число баров бокового диапазона для подтягивания стопа.
p_StopTm2(0) Максимальный допустимый размер диапазона в пунктах.
p_SF - параметры управления целевым критерием оптимизации. Метод управления целью оптимизации рассматривается на форуме в теме "Gelium_Helper_SF - установка своего критерия оптимизации в TradeStation".
p_SF(-16) Последний год интервала настройки в формате YY, для которого делается учёт минимальной годовой прибыли. Если параметр меньше нуля, коррекция результата работы стратегии не производится и оптимизация выполняется согласно заданному целевому критерию оптимизации TradeStation. Например, если мы задаём p_SF=16 и оптимизация производится на данных [2010-2018], то интервалом настройки будет интервал [2010-2016] и минимальная годовая доходность этого интервала будет установлена в качестве результата работы стратегии. Интервалом проверки будут данные за период [2017-2018]. Результаты торговли на интервалах и настройки, и проверки, будут сохранён в Excel. Стоит учесть, что оптимизация на данных с добавлением интервала проверки потребует больше времени, так как стратегия считается на большем объёме истории.
p_SF_AllYear(1) Если p_SF_AllYear=1, то все года интервала настройки должны иметь сделки. Если в какой-то год сделок не будет, минимальной доходностью будет -10000 (потеря депозита).
p_SF_TargetMode(0) Если p_SF_TargetMode=0, ведётся поиск максимальной доходности для года с меньшим доходом. Если параметр p_SF_TargetMode=1, ведётся поиск максимальной средней геометрической прибыли для серии из всех прибыльных лет (функция СРГЕОМ в Excel).
p_SF_WinPrc(0) Если параметр p_SF_WinPrc>0, то параметр p_SF_WinPrc используется как коэффициент коррекции минимальной годовой доходности пропорционально проценту прибыльных сделок по формуле: MinYearPrc * ((WinTrades / TotalTrades) / p_SF_WinPrc). Таким образом, чем больше p_SF_WinPrc, тем сильнее процент прибыльных сделок влияет на результат генетической оптимизации. На мой взгляд, достаточно использовать p_SF_WinPrc=1.
p_SF_FileFlag(0) Если параметр равен 1, создаётся файл-флаг "c:\Optimization.flag" во время оптимизации. Файл флаг может использоваться для отправки уведомлений в случае завершения оптимизации. Что может быть весьма актуально при использовании арендованных многопроцессорных серверов.
p_SF_Debug(0) Если параметр равен 1, в лог TradeStation выводится отладочная информация и производится коррекция результирующей доходности стратегии не зависимо от того, выполняется оптимизация или нет. Включение этого режима позволяет проверить работу коррекции итогового дохода стратегии и разобраться с проблемой, если таковая возникнет.
Управление возможностью открытия позиции и числом входов по одному и тому же сигналу.
p_IgnoreMP(1) 0 - открывать новые позиции только когда нет открытых позиций.
1 - игнорировать наличие открытых позиций.
p_MaxEntryCount(4) Допустимое число входов по одному базовому сигналу. Например, если позиция открывается на пробитии экстремума и выбивается из-за короткого стопа, можно установить p_MaxEntryCount=4, чтобы было осуществлено 4 попытки входа в направлении базового сигнала.
p_MaxEntryMode(0) Режим вычисления цены для повторного входа:  0 - максимальный/минимальный экстремум с момента открытия позиции, 1 - максимальный/минимальный экстремум за заданное параметром p_MaxEntBars число баров, 2 - исходная цена входа.
p_MaxEntryBars(0) Число баров для вычисления уровня повторного входа.
Управление использованием истории цен. Обратите внимание: в случае пропуска истории в объёме года или более, при включении оптимизации с p_SF_AllYear=1, пропуск заданного промежутка истории не приведёт к блокировке работы стратегии. Пропуск истории будет корректно учтён во время генетической оптимизации с собственным критерием оптимизации.
p_StartDate(0) Дата начала торговли в формате TradeStation. До достижения этой даты сигналы для открытия позиций игнорируются.
p_SkipDate1(-1081020) Дата начала пропуска истории. Если параметр меньше нуля, он игнорируется.
p_SkipDate2(-1091020) Дата окончания пропуска истории. Если параметр меньше нуля, он игнорируется.
p_SkipLastBarOnChart(1) 1 - последний бар чарта игнорируется. Это необходимо в некоторых случаях при синхронизации экспорта торговых сигналов.
Использование тиковых баз. В последних версиях стратегии эта группа сигналов отключена.
p_TickBase(0) Флаг использования тиковой базы для установки ордеров по точным цена. Если p_TickBase=1, используется тиковая база. Если p_TickBase=0, тиковая база не используется.
p_TickBaseFile
(Getsymbolname)
Название файл базы данных с тиками без расширения. Например: p_TickBaseFile(Getsymbolname) или p_TickBaseFile("XAU-D"). Расположение файлов с тиковыми базами устанавливается в параметрах Puls.
p_TickDebug(0) Флаг режима отладки установки ордеров на базе цен тиковой базы.
p_Trade - экспорт торговых приказов в текстовый файл для автоматизации торговли в MetaTrader4 с помощью советника Gelium_2MT.
p_TradeExport(0) 1 - выполнять экспорт торговых приказов в текстовый файл. 0 - не выполнять.
p_TradeSymbol(gp_GetSymbolName) Название торгового символа.
p_TradeFile("c:\Chart\Trade\Test") Путь и название файла сигнала без расширения. В качестве расширения к названию файла будет добавлен текст ".Signal". В данном примере будет производиться экспорт в файл "c:\Chart\Trade\Test.Signal".
p_TradeStart(0) Дата начала торговли в формате TradeStation. Если p_TradeStart меньше первого бара графика, торговля ведётся без ограничений.
p_TradeSumPlus(0) Зарезервировано на будущее.
p_TradeOpenSpread(1) Использовать спред для вычисления цены ордера ASK. В качестве спреда берётся комиссия, установленная для стратегии в параметрах TradeStation.
p_TradeShow(1) 1 - показывать окно с информацией об изменениях ордеров.
p_TradeMail(1) 1 - отправлять уведомление о наличии изменений на электронную почту с помощью утилиты MailSender.
p_TradeMinChange(1) Минимальное изменение цены ордера в пунктах, ведущее к созданию уведомления.
Исходные цены баров, которые используются внутри стратегии. При необходимости можно использовать любую серию данных. Например, все расчёты можно делать на базе O Data2, H Data2, L Data2, С Data2, а торговля будет вестись на главной серии Data1.
p_O(O) Open.
p_H(H) Heigh.
p_L(L) Low.
p_C(C) Close.
p_Excel - экспорт статистики работы стратегии в Excel. Ручное сохранение в Excel выполняется с помощью кнопки Save, которая расположена сверху на информационной панели.
p_Excel_WorkBook("c:\Chart\Reports\GT_Reports.xlsm") Рабочая книга Excel с поддержкой макросов.
p_Excel_Sheet("Test") Рабочий лист для записи информации.
p_Excel_Comment(1) 1 - осуществлять запись сжатого комментария с основными параметрами стратегии.
p_Excel_Optim(0) 1 - делать экспорт статистики во время оптимизации стратегии.
0 - не делать экспорт во время оптимизации.
p_Excel_OverHelper(0) 1 - отправка данных в Excel через экспериментальную версию Gelium_Helper. 0 - отправка данных напрямую в Excel. Пока лучше делать экспорт данных напрямую в Excel после завершения оптимизации.
p_Excel_OverText(0) 1 - экспериментальный экспорт данных в текстовый файл. 0 - экспорт напрямую в Excel. Пока лучше делать экспорт данных напрямую в Excel после завершения оптимизации.
p_Excel_TextFile("c:\GT_Op.txt") Файл для записи данных в текстовом формате.
p_Excel_MinYear(-100) Сохранять данные только если доходность в процентах худшего года интервала настройки больше значения p_Excel_MinYear.
p_Excel_MinProfit(0) Сохранять данные только если общая доходность интервала настройки больше значения p_Excel_MinProfit.
p_Excel_OOSProfit(0) Сохранять данные только если минимальная доходность худшего года интервала проверки больше значения p_Excel_OOSProfit.
p_Excel_SparkLine(0) 1 - экспортировать данные для построения в Excel SparkLine. Экспорт этих данных замедляет экспорт в Excel.
p_Excel_AutoSave(0) 1 - автоматически сохранять рабочую книгу Excel после экспорта данных.
p_Info - информационная панель.
p_Info(1)

Тип вывода результатов стратегии на график справа от текущей цены:

  • p_Info = 0 - отчет не выводится.
  • p_Info = 1 - отчет выводится на график.
  • p_Info = 2 - отчет выводится в отдельную панель, вне окна графика, справа.
  • p_Info > 20 - отчет выводится и текст отчета выводится с отступом p_Info-баров справа от последнего бара на графике.
В TradeStation расположение отчета масштабируется при перетягивании или сжатии графика по вертикали.



В первых строках отчета выводится название стратегии и параметры актуальных ордеров. Далее выводится таблица с результатами работы стратегии по годам:
  • Yaer - год.
  • Profit - доход стратегии в долларах.
  • Profit% - годовой доход относительно начального капитала 10 000$.
  • MaxDD % - максимальная просадка относительно начального баланса или максимального дохода в течение года.
  • TT - количество сделок.
  • Win% - количество выигрышных сделок.
После таблицы с результатами торговли находится список используемых параметров. Параметры с нулевыми значениями, как правило, не используются и в список не выводятся.
p_Info_Font
("Lucida Console")
Шрифт для отображения текста отчета.
p_Info_FontSize(8) Размер шрифт для отображения текста отчета.
p_Info_Width(550) Ширина информационной панели.
p_Info_Orders(1) 1 - отрисовывать линии ордеров и позиций.
p_Info_Slippage(0) Если p_Info_Slippage > 0, на график выводятся исходные уровни ордеров, которые можно сравнить с исполнением с учетом проскальзываний:



p_Color1(Black) Обычный цвет текста или цвет линий входа на графике.
p_Color2(Blue) Выделяемый цвет текста.
p_Color3(Red) Цвет текста для убыточных позиций или уровня стопа.
p_Debug - вывод отладочной информации.
p_DebugXXX Серия параметров, включающий вывод отладочной информации. Подробную информацию не привожу, так как эти параметры нужны только в случае проблем со стратегией.

Вопросы и ответы.

  • Почему не срабатывает продажа по второй модели, с пробитием цены 1352.1?



    Ведь окончание этой модели захватывает участок цен для продажи.


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

    В вашем случае необходимо создать вторую модель для входа ниже уровня 1352.1. Для этого необходимо перенести модель в конец дня заключения первой сделки продажи:



    Далее повторно создается модель для продажи ниже 1352.1 и она делается главной, чтобы ее целевой уровень использовался последующими моделями:


Разработка систем

Для души и разума.

Профессор философии, стоя перед своей аудиторией, взял пятилитровую стеклянную банку и наполнил её камнями, каждый не менее трёх сантиметров в диаметре. Потом спросил студентов, полна ли банка?

Далее...

Ответили: да, полна.

Тогда он открыл банку горошка и высыпал её содержимое в большую банку, немного потряс её. Горошек занял свободное место между камнями. Ещё раз профессор спросил студентов, полна ли банка?

Ответили: да, полна.

Тогда он взял коробку, наполненную песком, и насыпал его в банку. Естественно, песок занял полностью существующее свободное место и всё закрыл.

Ещё раз профессор спросил студентов, полна ли банка?

Ответили: да, и на этот раз однозначно, она полна.

Тогда из-под стола он достал кружку с водой и вылил её в банку до последней капли, размачивая песок. Студенты смеялись.

- А сейчас я хочу, чтобы вы поняли, что банка - это ваша жизнь. Камни - это важнейшие вещи вашей жизни: семья, здоровье, друзья, свои дети - всё то, что необходимо, чтобы ваша жизнь всё-таки оставалась полной даже в случае, если всё остальное потеряется. Горошек - это вещи, которые лично для вас стали важными: работа, дом, автомобиль. Песок - это всё остальное, мелочи.

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

Тогда студентка подняла руку и спросила профессора, какое значение имеет вода?

Профессор улыбнулся.

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


 

Перепечатка авторских материалов сайта без указания ссылки на
сайт Gelium.net запрещена.

Gelium.net | 2000-2019 | © All rights reserved.