Стратегия 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), // Режим построения пирамиды.
Остальную информацию можно почерпнуть из кода стратегии. Описание стратегии буду дополнять по мере ответов на вопросы из комментариев.

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

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

- Оптимист верит, что мы живём в лучшем из миров. Пессимист боится, что так оно и есть.
- Все идет хорошо, только мимо.
- Хочешь всего и сразу, а получаешь ничего и постепенно.
- Вначале было Слово.... Однако, судя по тому, как развивались события дальше, Слово было непечатным.
- Мудрость не всегда приходит с возрастом. Бывает, что возраст приходит один.
- Удача улыбается смелым... А потом долго ржет над ними!

Далее...

- Алкоголь в малых дозах безвреден в любом количестве.
- Весь день не спишь, всю ночь не ешь — конечно, устаешь...
- Любого автомобиля хватит до конца жизни, если ездить достаточно лихо.
- Лучше с любовью заниматься трудом, чем с трудом заниматься любовью.
- Чистая совесть — признак плохой памяти.
- Счастлив ли? В разное время на этот вопрос отвечал по-разному, но всегда — отрицательно.
- Концов счастливых не бывает. Если счастливый, значит не конец.
- Если ты споришь с идиотом, то, вероятно, то же самое делает и он.
- Добpо всегда побеждает зло, значит, кто победил, тот и добрый.
- Нас никому не сбить с пути, нам все равно, куда идти.
- Если вам говорят, что вы многогранная личность — не обольщайтесь. Может быть, имеется в виду, что вы гад, сволочь и паразит одновременно.
- Вы видели человека, который никогда не врет? Его трудно увидеть, его же все избегают.
- Труднее всего человеку дается то, что дается не ему.
- Разница между умным и мудрым: умный с большим трудом выкручивается из ситуации, в которую мудрый не попадает.
- Мыслить так трудно, поэтому большинство людей судит.
- Если появился кто-то, готовый свернуть горы, за ним обязательно пойдут другие, готовые свернуть ему шею.
- Каждый человек — кузнец своего счастья и наковальня чужого.
- Рожденный ползать — везде пролезет.
- У одних оба полушария защищены черепом, у других — штанами.
- Жизнь коротка. И надо уметь уходить с плохого фильма, от плохого человека. Бросать плохую книгу. Их много.
- Ничто так не ранит человека, как осколки собственного счастья.
- Никогда не преувеличивайте глупость врагов и верность друзей.
- Настоящее одиночество — когда вы всю ночь говорите сами с собой — и вас не понимают.




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

Pavel Gelium 2000-2017 © All rights reserved.