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

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

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 нет реализации этой стратегии и пока не планирую это делать.
Изменения в версии 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_StopRT - закрытие позиции двойным трейлингом по методу StopRT (StopReTarget).
p_StopRT1(0) Порог движения в пунктах против открытой позиции, после достижения которого позиция будет закрыта на откате в направлении открытой позиции.
p_StopRT2(0) Размер отката в пунктах в направлении ранее открытой позиции, по достижению которого позиция будет закрыта.
p_StopRT_Impuls(0) Если параметр равен нулю, метод закрытия позиций используется всегда. Если параметр равен 1, то метод закрытия позиций используется только в том случае, если был детектирован импульс.
p_StopRT_PlusPos(0) Пока не используется. Зарезервировано на будущее.
p_StopRT_Stop(0) Пока не используется. Зарезервировано на будущее.
p_StopQ - закрытие позиции с помощью Ama_Q (индикатор Gelium_Q).
p_StopQ(0) Число баров для расчета Ama_Q. Если значение меньше или равно нулю, StopQ не используется.
p_StopQ_Start(0) Размер разницы между текущим значением Ama_Q и значением в момент последнего пересечения с ценой, по достижению которого будет использоваться StopQ. Например, если p_StopQ_Start=200 и мы имеем длинную позицию, то стоп на уровень значения Ama_Q будет установлен только тогда, когда Ama_Q вырастет с момента последнего пересечения с ценой минимум на 200 пунктов.
p_StopQ_Impuls(0) Если параметр равен нулю, метод закрытия позиций используется всегда. Если параметр равен 1, то метод закрытия позиций используется только в том случае, если был детектирован импульс.
p_StopQ_Price(c) Значение, которое используется для расчёта Ama_Q. Например, вместо Close можно использовать (H+L)/2 или любую другую вычисляемую в параметре формулу.
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 запрещена.

Pavel Gelium 2000-2017 © All rights reserved.