Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
За громким названием "Индекс товарного канала", как это водится, скрывается простой индикатор. Wikipedia
Индикаторы в программе написаны на языке C#, для тех, кто изучает АПИ программы в открытом виде есть на форуме программы.
Как и остальные индикаторы, CCI уже есть, но по традиции прикладываю самодельный индикатор по формулам из wiki.
Строить индикаторы по формулам в программе просто. CCI состоит из TypicalPrice и простой скользящей средней.
Все, что необходимо для создания CCI уже есть в программе, однако в индикаторе показал, как создать и TypicalPrice и простую скользящую среднюю.
Я призываю Вас изучать индикаторы.
Изменив оригинал в лучшую сторону, есть вероятность построить интересные индикаторы.
Прикладываю индикатор CCI_custom, я применил в нем вместо простой скользящей средней, адаптивную скользящую среднюю.
И вместо TypicalPrice применил экспоненциальную среднюю.
На среднем графике оригинал CCI и самодельный индикатор:
Как видно, их значения идентичны, т.е. существующий в программе индикатор CCI написан именно так, как описан в wiki.
На нижнем графике custom Индикатор, получился он с ярко выраженными дивергенциями, видно, цена идет наверх, а значение индикатора вниз.
Однако он не такой дерганный, как оригинальный, более пологий.
В wiki предлагается два варианта стратегий, ссылаясь на то, что у разных авторов есть свое видение работы индикатора.
В построении этих стратегий, вместо оригинального индикатора, я буду использовать свой custom индикатор.
Одна группа, считает, что для длинных позиций нужно:
Покупать, когда CCI поднимается выше 100. Продавать, когда CCI опускается ниже 100.
А для коротких позиций:
Продавать (коротко), когда CCI опустится ниже -100. И закрывать короткую позицию, когда CCI поднимется выше -100.
Вторая группа, в качестве сигнальной линии рекомендует использовать нулевое значение, называя подобную стратегию Zero CCI, то есть: Покупать (открывать длинную, закрывать короткую позицию), когда Индекс товарного канала поднимается выше нуля. Продавать (закрывать длинную, открывать короткую позицию), когда CCI опустится ниже нуля.
Предлагаю Вам самостоятельно создать скрипт, который охватывает оба варианта и решить какая стратегия лучше оптимизатором.
Если чуть задуматься, помимо этих двух стратегий, есть еще одна, это использовать среднюю от CCI, вместо сигнальных линий.
И можно как минимум еще объединить все три стратегии.
Например, входить в позицию около нуля. А выходить из длинных позиций при пересечении CCI со своей средней, когда индикатор находится выше 100 и ниже минус 100 выходить из коротких позиций.
Для такой стратегии мой custom индикатор не подойдет, в силу дивергенций. Как и не подойдет оригинал, в силу своей дёрганности, из-за которой будет много ложных срабатываний.
Попробуйте создать индикатор, который будет таким же пологим, как получился у меня или лучше, но при этом с меньшими дивергенциями.
Всем удачи!
Материалы:
CCI_wiki.tscript CCI_custom.tscript CCI_wiki_custom_simile.tscript CCI_100.tscript CCI_Zero.tscript
(Скачайте файл. Откройте в программе TSLab "Лаб" -> "Управление скриптами" → Нажмите кнопку "Загрузить из файла").
Например, на инструменте биткоин стратегия не выглядит совсем уж не зарабатывающей.
DISCLAIMER
Data, information, and material (“content”) is provided for informational and educational purposes only. This material neither is, nor should be construed as an offer, solicitation, or recommendation to buy or sell any securities. Any investment decisions made by the user through the use of such content is solely based on the users independent analysis taking into consideration your financial circumstances, investment objectives, and risk tolerance. Neither www.tslab.pro nor any of its content providers shall be liable for any errors or for any actions taken in reliance thereon.
В данной статье представлены примеры реализации алгоритмов и индикаторов с помощью визуального редактора скриптов TSLab.
Для того, чтобы запустить пример Вам необходимо:
Скачать пример скрипта на Ваш компьютер.
Запустить программу TSLab.
Выбрать пункт меню Лаб - Скрипты
В открывшемся окне Скрипты
В правой части окна Скрипты нажать на кнопку Загрузить из файла. Перейти в директорию со скачанным скриптом. Выбрать необходимый скрипт и нажать на кнопку Открыть.
В списке доступных скриптов выбрать загруженный скрипт и дважды кликнуть на нем мышкой.
Примеры торговых стратегий, написанных в визуальном редакторе блочного программирования.
Для длинных позиций:
Купить, если +DI > -DI и ADX растёт.
Выйти из позиции, если +DI < -DI или ADX падает.
Для коротких позиций:
Войти в короткую позицию, если +DI < -DI и ADX растёт.
Закрыть короткую позицию, если +DI > -DI или ADX падает.
Скачать пример
Полезные ссылки
Логика работы стратегии
AroonUp > AroonDown - входим в позицию Long и закрываем позицию Short;
AroonUp < AroonDown - входим в позицию Short и закрываем позицию Long;
AroonUp и AroonDown приблизительно равны - это период консолидации.
Фильтр консолидации для входа в позицию построен на разнице двух индикаторов. В качестве уровня фильтрации используется Константа.
Скачать пример
Полезные ссылки
Логика работы стратегии
Покупка - CCI поднимается выше 100.
Продажа - CCI опускается ниже 100.
Для короткой позиции
Продажа - CCI опустится ниже -100.
Закрытие позиции - CCI поднимется выше -100.
Скачать пример
Полезные ссылки
Логика работы стратегии
Покупка (открывать длинную, закрывать короткую позицию), когда Индекс товарного канала CCI поднимается выше нуля.
Продажа (закрывать длинную, открывать короткую позицию), когда Индекс товарного канала CCI опустится ниже нуля.
Скачать пример
Полезные ссылки
Сравнение индикаторов:
Встроенный в программу TSLab CCI
Индикатор CCI из wiki
Модифицированный индикатор CCI
Скачать пример
Полезные ссылки
Логика работы стратегии
Если цена прошла много, то вероятнее всего рынок трендовый.
Покупка - бар большой и цена двигалась наверх.
Выход из позиции если бар маленький.
Скачать пример
Полезные ссылки
Логика работы стратегии
Продажа - если индикатор высоко;
Покупка - если индикатор низко.
Стратегия с коротким профитом и стоплоссом, цена которого рассчитывается трейлстопом в относительных значениях.
Скачать пример
Полезные ссылки
Логика работы стратегии
Продажа и закрытие лонг - если индикатор высоко.
Покупка и закрытие шорт - если индикатор низко.
Скачать пример
Полезные ссылки
Пример иллюстрирует работу блока "Сжать "и дневные диапазоны индикатора.
Скачать пример
Полезные ссылки
Логика работы стратегии
Верхняя граница канала: 3 * Стандартных отклонения
Нижняя граница канала: -3 * Стандартных отклонения от SMA
Для входа в позицию Short выставляется лимитная заявка на уровень верхней границы канала.
Для входа в позицию Short выставляется лимитная заявка на уровень нижней границы канала.
Выход из позиций лимитными заявками на средней SMA.
Скачать пример
Полезные ссылки
Логика работы стратегии
Система построена на пробой уровней максимальных и минимальных цен за период.
Вход в позицию Long - при пробитии текущей ценой вверх верхней линии канала Максимум За;
Вход в позицию Short - при пробитии текущей ценой вниз нижней границы канала.
Выход из позиции осуществляется по индикатору AMA. Запрещено одновременное существование противоположных позиций.
Скачать пример
Полезные ссылки
С ограничением набора макимального количества лотов.
Пример применения блоков формул и индикатора EMA. Пример применения блоков "Изменить По"
Скачать пример
Приведенный пример алгоритма предназначен исключительно в образовательных целях, для изучения программы TSLab.
Всем удачи!
Материалы. StDev_channel_5min.tscript (Скачайте файл. Откройте в программе TSLab "Лаб" -> "Управление скриптами" → Нажмите кнопку "Загрузить из файла").
Среднеквадратическое отклонение
Цены точно не принадлежат нормальному распределению. Однако наc интересуют не математические обоснования, а возможный доход от действий на рынке.
Как прогнозировать отклонение? Прогнозировать не легче, чем прогнозировать рынок. Если отклонение слишком резко выросло и стало 80% в относительных значениях, то конечно есть вероятность, что отклонение будет снижаться. На отклонении есть свои тренды. Как и рынок, отклонение может оцениваться с помощью обычного технического анализа, применять обычные индикаторы SMA, EMA, JMA, константы. У отклонения есть сопротивления, поддержки и т.д. и т.п. Строим среднюю SMA от цен закрытия баров и далее от этой SMA в обе стороны от графика считаем три стандартных отклонения.
Возвращаясь к иллюстрации нормального распределения. Когда случайная величина находится за пределами трех отклонений, есть большая вероятность, что следующая случайная величина окажется внутри трех отклонений, и вероятно будет стремиться к нулю на графике распределения. Другими словами, когда цена находится за пределами трех отклонений, есть большая вероятность, что цена начнет движение к своей средней SMA. И с другой стороны, если цена находится в пределах трех отклонений, с большой вероятностью она там и останется.
Таким образом я и построил торговую систему. При касании трех StDev исполняется лимитная заявка, а на средней SMA поставил профит.
Примечательно, что система показывает положительные результаты на разных таймфреймах. Привожу пример посчитанных результатов, программой TSLab, возможной торговли на графиках 10 минут и 5 минут, одним лотом фьючерса, с учетом комиссионных брокера.
Поэтому количество выборки для расчета стандартного отклонения следует выбирать под себя, под торговлю, которая будет комфортна непосредственно трейдеру. Чем меньше период для расчета отклонения, тем быстрее робот будет принимать решения о действиях на рынке. Если провести оптимизацию по параметру количества отклонений и параметру средней SMA, результаты системы будут значительно лучше, но при этом, сама суть идеи пропадает, так как оптимизатор ничего не знает о моих умозаключениях и просто подгоняет систему под историческую выборку цен. Приведу пример на 5 минутном графике:
При таких параметрах заявки все чаще оказываются на экстремумах баров и их исполнения в реальной торговле скорее всего не будет. Отклонение может быть очень большим в моменты кризиса на рынке. Поэтому при построении такой торговой системы, вероятно, следует смотреть и на наклон выбранной средней и не забывать про стоп-лоссы.
Стратегия описана в одной из статей Юрия Чеботарева и Сергея Яшина в журнале Валютный спекулянт.
Идея построена на том, что цена проходит за определенное кол-во времени определенное кол-во шагов. Если цена прошла много, вероятно рынок трендовый. Т.е. если бар большой и цена двигалась наверх, то покупаем, если бар маленький, то выходим из позиции.
Соответственно, для входа в короткую позицию используем бары с направлением вниз.
Реализация стратегии с параметром, очевидно, выглядела бы достаточно просто, нужно было лишь посчитать размеры баров и написать простые условия, что размер бара больше или меньше, например константы.
Авторы статьи предлагают интересный подход и стратегия интересна именно подходом к параметрам.
Если среднее значение бара (H+L)/2 ниже некоторого значения Дельта (L+∆), то это бар с низкой волатильностью рынка, на котором нам не интересно извлекать прибыль. Если среднее значение бара (H+L)/2 выше значения Дельта (L+∆), то это бар с высокой волатильностью рынка, вероятно есть смысл войти в позицию, с целью извлечения краткосрочной прибыли.
Если (H+L)/2 > L+∆ – это сигнал открытия длинной позиции. Это же условие является условием нахождения в длинной позиции для всех баров. Если (H+L)/2 ≤ L+∆ - это сигнал не открывать длинные позиции.
На следующем рисунке показаны правила входа в рынок с короткими позициями.
Если среднее значение бара выше уровня H-∆
(H+L)/2≥H-∆, то имеет место бар с низкой волатильностью.
Если (H+L)/2<H-∆ – это сигнал открытия короткой позиции и одновременно это условие нахождения в короткой позиции для всех баров.
Здесь, под ∆ понимается некое критическое значение цены, превышая которое, рынок начинает развивать поступательное движение. Его можно выразить через сам бар.
Сначала определим вторичный коэффициент k для длинных позиций: k=(close - open)/(high-low)
для коротких позиций k=(open-close)/(high-low)
Коэффициент k изменяется от 0 до 1. Если k=0, это бар на не волатильном рынке, боковое движение.
Если k=1, то имеет место трендовый рынок.
Следуя этой логике, если k=0, то ∆ должна быть большой, чтобы условия входа в рынок не выполнялись.
Если k=1, то ∆ должна стремиться к нулю. Отсюда и формула: ∆ = (high-low)*(1-k)
Таким образом, дельта находится индивидуально для каждого бара и не требуется оптимизаций. По заверениям авторов статьи, наличие в торговой системе параметров, которые необходимо оптимизировать является недостатком. Как правило, после оптимизации, система работает некоторое время, после чего параметры снова нужно оптимизировать. Поэтому, для любого трейдера приоритетно создавать такие торговые системы, в которых не было бы никаких параметров или параметры бы сильно не влияли на саму торговую идею, и не требовалось бы проводить оптимизацию по историческим данным. Авторы статьи явно не учли параметр Время, то время, за которое цена прошла расстояние, а именно таймфрейм, на котором построены бары.
Приведенный пример алгоритма предназначен исключительно в образовательных целях, для изучения программы TSLab.
Всем удачи!
Материалы: скрипт Strategy without parameters.tscript (Скачайте файл. Откройте в программе TSLab "Лаб" -> "Управление скриптами" → Нажмите кнопку "Загрузить из файла").
Сетка по книге Frank W Linn Quantitative Grid Trading: How a Fisherman Beats Wall Street
Продолжение https://youtu.be/5sG6rJqukSM?t=2156 Дополнительные материалы: Заметки из книги СеткаFrankLinn.docx Скрипт grid_long_short_precision.tscript Скрипт, эфир от 30.09.2021
Приведенный пример алгоритма предназначен исключительно в образовательных целях, для изучения программы TSLab
Всем удачи!
Материалы: Aroon.tscript (Скачайте файл. Откройте в программе TSLab "Лаб" -> "Управление скриптами" → Нажмите кнопку "Загрузить из файла").
Индикатор Aroon был предложен трейдером Тушар Чанде в 1995году.
На картинке синия линия - AroonUp, AroonDown - красная линия
AroonUp - показывает количество баров с момента появления последнего максимума. ((N количество баров – H число баров от максимума) / N количество баров) * 100%
Где, N – выбранный период индикатора, Н – количество баров, прошедших после формирования последнего максимума в рассматриваемом временном периоде. После формирования ценой нового максимума, «Aroon Up» снова равен 100%.
AroonDown - показывает количество баров с момента появления нового минимума. ((количество баров - число баров от минимума) / количество баров) * 100 Строим одну из возможных систем: Если AroonUp больше AroonDown - это бычий сигнал; Если AroonUp ниже AroonDown - это медвежий сигнал; А если AroonUp и AroonDown приблизительно равны - это период консолидации. Фильтр консолидации построил на разнице двух индикаторов, чем больше значение параметра, тем более сильный сигнал от индикаторов ожидаем для входа в позицию.
Выход из позиций организуем на обратных сигналах. Для выхода из позиции так же можно применить фильтр консолидации, я вывел его в отдельную формулу, самостоятельно добавьте данное условие для выхода из позиции. Проведенная оптимизация на акциях Tesla дала параметры 300 для индикаторов Aroon(их параметры связаны) и 62% для консолидации. Т.е. оптимизатор показал, что если разница индикаторов находится вне диапазона 62%, система дает лучшие показатели доходности.
Индекс относительной силы (RSI от англ. relative strength index) — индикатор технического анализа, определяющий силу тренда и вероятность его смены. Популярность RSI обусловлена простотой его интерпретации. Индикатор может рисовать фигуры технического анализа — «голова-плечи», «вершина» и другие, которые часто анализируют наравне с графиком цены.
Подробнее об индикаторе RSI Вы можете прочесть на странице в Википедии: Wikipedia Индекс относительной силы
Как именно рассчитывается RSI в программе? Легко убедиться, что рассчитывается именно так, как описано в wiki.
Находим положительные (U) и отрицательные (D) ценовые изменения.
Рассчитываем относительную силу RS.
На основе RS рассчитывается и сам Индекс относительной силы RSI.
Сейчас рынок меняется очень быстро. Когда Автор создавал индикатор, изменения рынка были медленнее и автор индикатора использовал двухнедельный период.
Чтобы быть ближе к расчетам автора, на одноминутном графике достаточно просто поставить период побольше, но, для удобства расчета, в программе можно использовать готовые дневные свечи, использовав блок "Сжать".
Для более подробного изучения расчета индикатора RSI, Вы можете скачать демонстрационный алгоритм RSIcalc.tscript
Скачайте файл. В программе откройте Лаб | Скрипты. Нажмите кнопку Загрузить из файла.
Откройте скрипт для редактирования.
Таким образом, в программе можно создавать алгоритмы расчета индикаторов.
В приложенном алгоритме представлен расчет индикатора и для сравнения выведен на график расчет встроенного в программу индикатора (Блок RSIintegrated). Свой собственный расчет можно сохранить в Самодельный скрипт.
Для этого в окне Скрипты, создаем индикатор, по кнопке Новый индикатор.
В качестве примера готовые блоки из скрипта RSIcalc.tscript были скопированны в созданный индикатор.
В готовом виде индикатор можно скачать по ссылке: RSI_calc_1.tscript
Обратите внимание!
Вывод значения созданного индикатора всегда выполняется через блок "Возвращаемое значение".
Вывести можно, только одно значение из одного индикатора.
Входов может быть сколько угодно. Выполняются они с помощью Блоков Источников.
Вход в индикатор может быть число, как у меня и индикатор в скрипте можно будет использовать для любого числа.
Также в качестве входа можно использовать вход с источника данных. В этом случае в индикаторе нужно будет использовать определенное значение бара.
После закрытия окна с индикатором, программа автоматически создаст самодельный индикатор.
В Панели инструментов редактора скриптов появится папка Самодельные, и, если в индикаторе нет ошибок, он будет доступен в этой папке.
Самодельный индикатор можно использовать в любых создаваемых скриптах.
В предыдущих статьях были приведены примеры, как с помощью обычной константы можно переключаться с одного расчета на другой.
В данном примере можно применить тот же способ. Вы можете подсчитать несколько различных усреднений, для индикатора.
В некоторых скриптах необходимо использовать один расчет, например EMA, а в некоторых другой. В формуле, малое число избавит от деления на 0. ind_RSI_calc.tscript
В wiki описаны несколько сигналов для индикатора. Обязательно ознакомьтесь с ними, если ещё не знакомы.
Для всех сигналов справедлиов следующее: если индикатор высоко, то не следует покупать, если индикатор низко, то не следует продавать.
В примере RSI_.tscript реализована следующая стратегия: если индикатор высоко, то продаем, если индикатор низко - покупаем.
С коротким профитом. И стоплоссом, цена которого расчитывается трейлстопом в относительных значениях.
Возможно к стратегии стоит добавить индикатор моментум, для сигналов входа в позицию.
Вторая стратегия RSI_trend.tscript: продаем и закрываем лонг, если индикатор высоко и покупаем и закрываем шорт, если индикатор низко.
Оптимизация параметров не проводилась.
Всем удачи!
Обратите внимание! Демонстрационные материалы и примеры скриптов предназначены исключительно для изучения программы TSLab.
Наименование скрипта
Описание
Демонстрационный алгоритм расчета RSI
Самодельный индикатор RSI
Индикатор с встроенным переключением усреднений ЕМА, SMA или AMA
Пример стратегии
Пример стратегии
(Скачайте файл. Откройте в программе TSLab "Лаб" -> "Управление скриптами" → Нажмите кнопку "Загрузить из файла").
Несложно заметить, что наименьшее их количество, всего 0.2% находится за пределами трех отклонений. Вероятно, что это неплохие места для входа в позицию. Тогда как ноль, место, где можно закрыть позицию, так как это место, где случайные величины находятся чаще всего. Грубо говоря, вероятность того, что следующая случайная величина окажется за пределами трех отклонений, всего 0.2%. Я вывел на график стандартное отклонение доходности инструмента фьючерса mini на индекс snp500, рассчитанное на основе исторических данных цены.
Материалы: adx-script.tscript (Скачайте файл. Откройте в программе TSLab "Лаб" -> "Управление скриптами" → Нажмите кнопку "Загрузить из файла").
Стратегия на примере индикаторов ADX и DI , из системы технических индикаторов разработанной Уэллсом Уайлдером и представленная в июне 1978 года в его книге «Новые концепции в технических торговых системах». Уайлдер полагал, что растущие и высокие значения ADX свидетельствуют о сильном тренде, а падающие и низкие значения говорят об отсутствии тренда. О действительном направлении тренда можно судить по соотношению +DI и -DI.
В wiki предложена стратегия, которую и построим:
Для длинных позиций:
Купить, если +DI > -DI и ADX растёт.
Выйти из позиции, если +DI < -DI или ADX падает.
Для коротких позиций:
Войти в короткую позицию, если +DI < -DI и ADX растёт.
Закрыть короткую позицию, если +DI > -DI или ADX падает.
Стратегия достаточно проста, если определить для себя, что это такое «растет» и «падает». Человек, видя график индикатора, четко может сказать, что вот здесь индикатор растет, а здесь его значение уменьшается. Но человек это видит только в истории и не знает, что будет со значением индикатора в будущем. Я могу предложить несколько вариантов определения роста индикатора. Например, если предыдущее значение ADX меньше, чем текущее, очевидно индикатор стал больше, а значит растет. В программе это легко записать:
Или например, такая запись:
Это будет означать, что текущее значение больше, чем пять баров назад, индикатор стал больше. Но это не означает, что например три бара назад индикатор был ниже текущего значения. Поэтому правильнее будет:
Получается последовательный ряд, подтверждающий наличие роста. Таких моментов в истории уже не так уж и много. И здесь важно понимать, а не может ли такое условие означать окончание роста. Т.е. как бы там ни было, человеку, или с помощью оптимизации константы ADX > ADX[i-Константа], или «на глаз», необходимо определить, что индикатор растет. Можно взять среднее значение ADX и относительно него определять состояние индикатора. SMAadx < ADX Вариантов много, есть например такой вариант
Т.е. вместо фиксированного бара, я поставил некоторый индикатор. Здесь есть один маленький технический момент. В блоках формула и логическая формула есть параметр «Начинать С», его необходимо поставить больше, чем возможное значение индикатора. Например, при оптимизации, мы можем задать пройти значения константы от одного до 1000, вот в блоке формулы, данный параметр необходимо поставить 1001. Возможно, стоит сгладить DI, перед тем как делать условия для входа, или как писал Уайлдер, необходимо смотреть на величину ADX, если значение индикатора маленькое, то в данный момент тренда нет.