Стратегия Gelium_Starter (TradeStation, MultiCharts, ProSuite).

Скачать.

Обратите внимание:
  • Стратегия написана на языке EasyLanguage для платформ ProSuite/TradeStation/MultiCharts.
  • Для MetaTrader пока нет реализации этой стратегии.
  • Для использования стратегии трейдеру необходимо произвести самостоятельную настройку и оптимизацию параметров стратегии.

Описание.

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

Краткий список заложенных возможностей и ограничений:
  1. В качестве примера сигналов открытия позиций запрограммированы стратегии "mount", "supres", "ext", "anti-ext", "range", "impuls", "3w".
  2. В качестве методов закрытия позиций заложен фиксированный стоп в пунктах, trailing-стоп, подтягивание стопа к минимуму отката StopExt, выход после разворота на откате StopRT (StopReTarget).
  3. Методика управления капиталом - торговля фиксированным лотом или оптимальной долей (Optimal F).
  4. Базовый пирамидинг позволяет наращивать позицию на откатах или с фиксированным шагом.
Внимание!

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

GeneTest(-1),			// Номер теста с использованием генетического алгоритма. 
// -1 - тестирование не выполняется.
GeneEndDate(CurrentDate), // Конечная дата тестирования. Необходима для сохранения
// результатов теста.
// Параметры генетического алгоритма:
GeneParam("TestName=Test,MinResult=3000,Chromosome=400,Mutation=0.1,SaveCache=0"),
GeneResultType(0), // Тип искомых данных:
// 0 - поиск лучшего результата для худшего года.
// 1 - поиск максимальной прибыли.
Все необходимые расчеты для такой оптимизации делаются, однако из-за того, что моя библиотека генетической оптимизации не будет распространяться в силу сложности ее поддержки,  эти параметры отключены. Необходимо будет подключить внешнюю библиотеку, чтобы осуществить замену. Если будет время, сделаю поддержку библиотеки TS Genetic Optimizer. Желающие могут сделать такое подключение самостоятельно.

Описание параметров торговой стратегии:

Параметр Назначение
p_System Название набора правил для открытия позиций. Проверка на регистр букв не производится, поэтому писать название надо так же как оно объявляется в коде:
if p_System = "mount" then begin
// Вход в направлении индикатора gp_Mount
if m_Go = -1 then begin
OrderBuy = m_Ls[0] + wp_Mount points;
end else begin
OrderSell = m_Hs[0] - wp_Mount points;
end;
end else
p_x1 .. p_x18 Именованные текстовые параметры позволяют использовать любой набор параметров в любом порядке:

starter-1

Такой подход выбран из-за того, что универсальность параметров делает работу с любой стратегией гибкой и удобной. Поскольку оптимизация в основном делается с помощью генетического алгоритма, такой подход к работе с параметрами имеет ряд плюсов из-за дополнительного синтаксиса, который реализован следующим образом:
  1. Простое объявление параметра:

    "mount=100"

    Если параметр не объявлен, его значение по умолчанию устанавливается в ноль.

  2. Параметр объявлен, но отключен:

    "mount=100-"

     Значение параметра устанавливается в ноль.

  3. Диапазон и шаг оптимизации параметра генетическим алгоритмом:

    "mount=(100,200,5)=100+"

    Такое объявление задает оптимизацию от 100 до 200 с шагом 5. Знак плюс указывает, что параметр должен оптимизироваться генетическим алгоритмом. Если знака плюс нет, параметр оптимизироваться не будет. Если в конце стоит знак минус ("mount=(100,200,5)=100-"), значение параметра будет игнорироваться.
В коде своей стратегии обращение к именованному параметру осуществляется через соответствующую внутреннюю переменную. Например, параметру "mount" будет соответствовать переменная wp_Mount. Ограничений на число и названия именованных параметров и соответствующих переменных отсутствует.
p_Opti1 Название параметра, который необходимо прооптимизировать простым перебором. Если название указано, то соответствующий параметр из списка переменных p_x1-p_x18 игнорируется. Для оптимизации перебором используется только два параметра, так как большее число параметров удобнее оптимизировать с помощью генетического алгоритма.
p_Opti1_V Числовой диапазон оптимизации параметра p_Opti1:

starter-2
p_Opti2 Название параметра, который необходимо прооптимизировать простым перебором. Если название указано, то соответствующий параметр из списка переменных p_x1-p_x18 игнорируется.
p_Opti2_V Числовой диапазон оптимизации параметра p_Opti2.
p_SkipMarket 0 - открывать новые позиции только когда нет открытых позиций.
1 - игнорировать наличие открытых позиций.
p_TryCount Допустимое число входов по одному базовому сигналу. Например, если позиция открывается на пробитии экстремума и выбивается из-за короткого стопа, можно установить p_TryCount=4, чтобы было осуществлено 4 попытки входа в направлении базового сигнала.
p_TryExtBars Число баров для вычисления уровня повторного входа. Если p_TryExtBars=-1, то берется экстремум с момента открытия последней позиции. Если p_TryExtBars>0, то берется экстремум за p_TryExtBars последних баров.
p_SeriesName Название серии данных. Может использоваться любой стратегией.
p_Info 0 - не выводить информацию о результатах торговли на график.
1 - выводить информацию о результатах торговли на график.
>1 - дата, начиная с которой надо выводить информацию о результатах торговли на график.

Если параметр GeneTest > -1 (выполняется оптимизация), информация на график не выводится.
p_TradeSpread Спред (плюс средний отрицательный своп для не внутридневных стратегий). Этот параметр необходим для правильного вычисления доли риска в каждой отдельной сделке.
p_ReportHeight Высота выводимого на график отчета в пунктах. Если надо сжать отчет, уменьшаем этот параметр.

Для использования в сигналах открытия позиций уже предопределены следующие именованные параметры и соответствующие им переменные вида wp_XXX:
wp_Model2v(0),		
wp_Mount(0),
wp_Start(0),
wp_Mount1(0),
wp_Start1(0),
wp_Len(0),
wp_BarLeft(0),
wp_BarRight(0),
wp_BarLeft1(0),
wp_BarRight1(0),
wp_Max(0),
wp_Min(0),
wp_Minus(0),
wp_Plus(0),
wp_Otkat(0),
Управление открытием/закрытием позиций, пирамидинг:
wp_Stop(0),		// Стандартный размер стопа в пунктах.
wp_StopBasic(0), // Базовый размер стопа.
wp_StopTR(0), // Размер TrailingStop в пунктах.

// ReTarget
wp_StopRT1(0), // Размер движения для смены направления по методу ReTarget.
wp_StopRT2(0), // Размер отката для выхода по методу ReTarget.

// StopExt
wp_StopExt1(0), // Размер отката в пунктах для подтягивания стопа.
wp_StopExt2(0), // Сколько пунктов надо пройти в направлении позиции, чтобы стоп
// был подтянут.

// TimeStop
wp_StopTm1(0), // Число баров.
wp_StopTm2(0), // Размер диапазона в пунктах.

// Прочие параметры.

wp_Work(0), // Разрешенное направление торговли.
// 0 - торговля в любом направлении.
// 1 - только покупка.
// -1 - только продажа.

wp_MM(0), // Процент риска по методике оптимальной доли.
// 0 - используется фиксированный размер позиции.
wp_MMStop(0), // Размер стопа для расчета оптимальной доли с учетом спреда.
wp_Profit(0), // Размер фиксированного профита в пунктах.
wp_StartDate(0), // Дата начала торговли.

// Базовый пирамидинг.

wp_Pir1(0), // Через какое число пунктов от цены открытия последней позиции
// наращивать объем.
wp_Pir2(0), // Размер отката для наращивания объема. Если 0, то откат
// не используется.
wp_PirStop(0), // Размер стопа для наращиваемых позиций.
wp_PirMM(0), // Риск на сделку во время наращивания позиции
wp_PirMinProf(0), // Минимальная потенциальная прибыль с которой есть смысл
// строить пирамиду.
wp_PirOff(0), // Расстояниe до цели на котором пирамида прекращается строиться.
wp_PirMode(0), // Режим построения пирамиды.
Остальную информацию можно почерпнуть из кода стратегии. Описание стратегии буду дополнять по мере ответов на вопросы из комментариев.

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

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

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

Далее...

Один кирпич следовало положить на тротуар, где пересекается Бродвей и Энн—стрит, второй — возле музея Барнума, третий — наискосок от музея на углу Бродвея и Виси—стрит, рядом с Эстер—Хаус, четвертый перед собором Святого Павла, а с пятым в руках надо было быстрым шагом ходить от одного кирпича к другому. Один класть, другой брать. Каждый же раз, когда пробивают часы на соборе Святого Павла, следовало идти в музей, предъявить билет и обходить зал за залом. После это манипуляции с кирпичами надлежало повторить.

Работник начал свой обход, и уже через полчаса человек пятьсот глазело на его загадочные передвижения.

«Чем он занят? Откуда кирпичи? Почему он бегает по кругу?» — сыпались со всех сторон, но тот хранил молчание. К концу первого часа все тротуары оказались запружены толпой любопытных. А работник, завершив обход, направился в музей. Там он посвятил четверть часа осмотру всех залов и вернулся к своим кирпичам.

И каждый раз, когда он входил в музей, куча зевак покупала билеты и следовала за ним в надежде разгадать смысл его действий. День ото дня число любопытных росло, пока в дело не вмешалась полиция, обеспокоенная чрезмерным столпотворением. «Кирпичник» был отозван, но он и его работа послужили отличной рекламой музею. Именно после этой истории, как утверждал Тейлор Барнум, Бродвей стал самой оживленной улицей Нью—Йорка. Так начинался вирусный маркетинг.


 

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

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