советник на нескольких индикаторах

 

Предлагаю вашему вниманию предварительную версию тех задания.

Был бы весьма благодарен вашим комментариям и предложениям. Об особенностях написания и работы советников с индикаторами знаю мало. Поэтому информация будет кстати (возможно советник в таком виде вабще не возможно своять).

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

В советнике довольно много вводных параметров и переменных, поэтому они представлены в табличной форме (Таблица 1 для данных индикатора и Таблица 2 для данных выставления ордеров). Набор переменных представленных в Таблице 1 должен быть для каждого индикатора свой.

1. Данный советник использует следующий набор индикаторов (чем их будет больше тем стабильней будет система, но опять же влияет на время оптимизации, некачественный индикатор или таймфреймы будут отсеяны оптимизацией (переменная «А») и их можно будет подбирать до нахождения оптимального решения):

-MACD;

-Awesome Ascillator;

-Moving Average of Oscillator;

- Williams ’ Percent Range ;

Код советник должен предполагать возможность легко заменить какой либо индикатор на индикатор с идентичным графическим отображением и идентичными сигналами на покупку, например:

Awesome Oscillator на Accelerator Oscillator

Также иметь возможность без глобальной переработки кода увеличить или уменьшить количество индикаторов.

Должен торговать сразу по нескольким валютным парам.

Настройки и переменные индикаторов

Таблица 1.

общие переменные
"А" (вкл. /выкл. для индикатора, значения 0 или 1)
"Б" (вес индикатора, значение при оптимизации 1-3)

Далее для каждого таймфрейма необходим

свой независимый набор из "А", "Б1", "Б2", "В".

Таймфрейм Вкл. / выкл. "А"

вес для 1го типа

сигнала "Б1"

вес для 2го типа

сигнала "Б2"

группа "В" (магик)
MN

1

1 1 1

W1

1 1 1 1
D1 1 1 1 2
H4 1 1 1 2
H1 1 1 1 3
M3 1 1 1 3
M15 1 1 1 4
M5 1 1 1 4
M1 1 1 1 5


"Б1", "Б2" (значение при оптимизации 1-3)

"В" (значение при оптимизации 1-5)

Если у индикатора типов сигнала (п.2.2.) больше двух – необходимо добавит коэффициент «Б3»


2. Вычисления:


2.1. «Сигнал одной ячейки» = (( «первый тип сигнала» (п.2.2.) * «Б1 » + «второй тип сигнала» * «Б2»)) / 2 (количество типов сигналов для индикатора) * «Б» (возможно здесь необходимо вместо простого среднеарифметического значения применить что-нибудь другое).

«Б», «Б1», «Б2» - весовые коэффициенты.

Ячейка это параметры одного индикатора по одному таймфрейму.


2.2. Типы сигналов (здесь намеренно применены простые признаки сигналов для упрощения алгоритма):

2.2.1. Сигналы для индикаторов типа MACD :

первый тип сигнала - индикатор выше нулевой линии значение=+1, индикатор ниже нулевой линии значение=-1;

второй тип сигнала - индикатор выше сигнальной линии значение +1, индикатор ниже сигнальной линии значение -1;


2.2.2. Сигналы для индикаторов типа Awesome Oscillator :

первый тип сигнала - индикатор выше нулевой линии значение=+1, индикатор ниже нулевой линии значение=-1;

второй тип сигнала - индикатор зеленого цвета значение +1, индикатор красного цвета значение -1;


2. 2.3 . Сигналы для индикаторов типа Moveng Average of Oscillator:

первый тип сигнала - индикатор выше нулевой линии значение=+1, индикатор ниже нулевой линии значение=-1;

второй тип сигнала не предусмотрен.


2.2.4. Сигналы для индикаторов типа Williams ’ Percent Range :

первый тип сигнала - индикатор пересекает линию перепроданности вверх=+1, второй тип сигнала индикатор пересекает линию перекуплинности вниз=-1;


2.3. Далее вычисленные значения ячеек с одинаковой переменной «В» (магик) суммируются. В результате появляются группы.


Группа это сумма значений ячеек с одинаковой переменной «В»(магик). Из каких ячеек должна сформироваться группа должен решить оптимизатор. Возможно оптимизатор отнесет в одну группу ячейки месячного таймфрейма одного индикатора и минутный таймфрейм другого.


После этого группы формируют сигналы на покупку или продажу.


3. Открытие ордеров (величина лота согласно п.4.):


3.1. Для каждой группы «В»(магик) открываем свой ордер.

3.2. Если группа в результате вычислений имеет значение больше 0 то бай, меньше 0 сел.

3.3. Если ордер в том же направлении, в котором необходимо открыть для группы уже существует, то новый не открываем.

3.4. При «Д» = 0 величина тэйкпрофита и стоплоса в соответствии с «В» (Таблица 2) .

3.5. При «Д» = 1 величина тэйкпрофита и стоплоса в соответствии с «В» (Таблица 2) умноженная на сумму ячеек для данной группы «В» и умноженная на «Д1» (данный вариант с довольно громоздким вычислением длины стоплоса и тэйкпрофита, возможно его нужно исключить), если ордер в нужном направлении уже открыт величина стоплоса и тейкпрофита должна измениться согласно новым данным. Если группа показывает открыть в одном направлении и есть уже открытый ордер в другом – старый ордер не закрывать, пусть будет два разнонаправленных ордера. (данные взаимоотношения есть только у ордеров с одинаковым значением «В» (магик)). Каждая «В» (магик) выставляется независимо.


Настройки и переменные выставляемых ордеров


Таблица 2.

общие переменные
"Л" (вкл/выкл прогрессии лота, значения 0 или 1, не оптимизируется)

1

"Л1" (размер лота, не оптимизируется) 0.1
"Л2" (стартовые средства, предполагаемое значение 500 - ∞ ) 1000
"Л3" (размер средств соответствующих Л1, предполагаемое значение 200-700) 500
"Д" (вкл/выкл. изменений СЛ и ТП по результатам суммы ячеек одной группы "В", значения 0 или 1) 1
«Д1» (коэффициент для СЛ и ТП, работает если Д=1, предполагаемое значение 0.1-1) 0.1
Далее для каждой группы "В" необходим свой независимый набор из "ТП", "СЛ"
группа "В" (магик) тэйкпрофит "ТП" стоплос "СЛ"
1 160 160
2 80 80
3 40 40
4 20 20
5 10 10

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

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

* "СЛ" (стоплос в пунктах)

* "ТП" (тэйкпрофит в пунктах)

Таблица 2 (вариант 2)

общие переменные
"Л" (вкл/выкл. прогрессии лота, значения 0 или 1) 1
"Л1" (размер лота) 0.1

"Л2" (стартовые средства, предполагаемое

значение 500-∞)

1000

"Л3" (размер средств соответствующих Л1,

предполагаемое значение 200-700)

500

Далее для каждой группы "В" необходим свой

независимый набор из "ТП", "СЛ", "Д", "Д1".

группа "В" (магик) тэйкпрофит "ТП" стоплос "СЛ" "Д" "Д1"
1 160 160 1 0.1
2 80 80 1 0.1
3 40 40 1 0.1
4 20 20 1 0.1
5 10 10 1 0.1


* переменные «А» и «Д» отвечающие за вкл/выкл набора переменных должны иметь возможность оптимизации, т.е. тестер сам должен принять решение будут ли функции подчиненные этим переменным включены или нет. Количество групп «В» возможно необходимо уменьшить до 2-4.


4. Вычисление лота:


Для лота два варианта: постоянный и с прогрессией относительно свободных средств.

Оптимизацию необходимо проводить при постоянном лоте, а торговать с прогрессией.


«Л» - тип вычисления лота;

4.1. Если «Л»=0 то размер лота = «Л1»;

4.2. Если «Л»=1 то лот определяют следующие условия:

Если свободные средства равны или меньше «Л2» то лот = «Л1», при каждом увеличении «Л2» на величину «Л3» лот увеличивается на «Л1».

Например:

«Л1»=0.1

«Л2»=1000

«Л3»=500

Свободные средства=3500

Тогда лот = ((3500-1000)/500)*0.1=0.5



 
geopoint:
А ветка снова не исчезнет?
 
Нет. Она исчезала из-за того, что я никак не мог правильно из ворда таблицы вставить. Пришлось вручную перелопачивать.
 
Извиняюсь что не в тему, может кто нибудь глянет на мой самокат 'советник на нескольких индикаторах'
на предмет полный ацтой или нет?

А что Вы собственно хотите услышать ? Набор индикаторов приемлимый...в смысле не противоречит, хотя одними осциляторами точно не обойтись (относительность конечно хорошо, но ценовые индикаторы тоже понадобятся) ... Для того что бы оценить эффективность надо на графике все раскладывать или сразу писать. Могу посоветовать написать скелет эксперта, в который можно запихивать любую сигнальную систему с любым набором индикаторов одной процедурой, потом будет достаточно быстро подменяя одну процедуру проверять свои стратегии.
 
Cronex:
Извиняюсь что не в тему, может кто нибудь глянет на мой самокат 'советник на нескольких индикаторах'
на предмет полный ацтой или нет?


А что Вы собственно хотите услышать ? Набор индикаторов приемлимый...в смысле не противоречит, хотя одними осциляторами точно не обойтись (относительность конечно хорошо, но ценовые индикаторы тоже понадобятся) ... Для того что бы оценить эффективность надо на графике все раскладывать или сразу писать. Могу посоветовать написать скелет эксперта, в который можно запихивать любую сигнальную систему с любым набором индикаторов одной процедурой, потом будет достаточно быстро подменяя одну процедуру проверять свои стратегии.
Спасибо за комментарий. Еще один вопрос - с количеством переменных не перебор? Сможет переработать оптимизатор такое?
 
geopoint:
Еще один вопрос - с количеством переменных не перебор? Сможет переработать оптимизатор такое?
Да вопрос не в кол-ве внешних переменных которые будет перебирать оптимизатор а в диапазоне значений которые Вы будете перебирать за один прогон по этим переменным. Так что даже если их будет 50, но диапазон значений и шаг изменений для перебора будет не заоблачный - проглотит :-)
 

Я думаю вам в качестве основы подойдет вот такой индикатор. Дорабатывайте его по своему усмотрению.

код прилагаю. Это не мой, но он есть в свободном доступе. И разобравшись с ним я думаю Вы сможете легко вставить, свои идеи.

Файлы:
 
Cronex:
geopoint:
Еще один вопрос - с количеством переменных не перебор? Сможет переработать оптимизатор такое?
Да вопрос не в кол-ве внешних переменных которые будет перебирать оптимизатор а в диапазоне значений которые Вы будете перебирать за один прогон по этим переменным. Так что даже если их будет 50, но диапазон значений и шаг изменений для перебора будет не заоблачный - проглотит :-)
Еще раз спасибо. Именно такая информация мне была нужна.
 
Prival:

Я думаю вам в качестве основы подойдет вот такой индикатор. Дорабатывайте его по своему усмотрению

код прилагаю. Это не мой, но он есть в свободном доступе. И разобравшись с ним я думаю Вы сможете легко вставить, свои идеи.


Буду пробовать.
 
geopoint писал (а) >>

Буду про, напишите аську..как с вами связаться? моя 358 376 421...у вас отличный советник но необходимо внести небольшие изменения...взгляните на мой тест на отзывах по советнику..
 
sllawa3 писал (а) >>

Если необходима дороботка- обращайтесь сюда https://www.mql5.com/ru/users/komposter

Причина обращения: