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

 

Уважаемые Гуру!

Подскажите, как лучше организовать работу советника на нескольких (6-9) парах одновременно? Как закрывать, изменять позиции на разных парах одним советником я, вроде, разобрался.

А вот как ОТКРЫВАТЬ? То есть, следить за всеми парами, индикаторами и т.д. Для этого надо вешать советника на каждую пару отдельно?

А, если да, то, может быть стоит и для закрытия сделать не один универсальный, а для каждой пары свой: и открытие, и закрытие?

 
Artemij:

Уважаемые Гуру!

Подскажите, как лучше организовать работу советника на нескольких (6-9) парах одновременно? Как закрывать, изменять позиции на разных парах одним советником я, вроде, разобрался.

А вот как ОТКРЫВАТЬ? То есть, следить за всеми парами, индикаторами и т.д. Для этого надо вешать советника на каждую пару отдельно?

А, если да, то, может быть стоит и для закрытия сделать не один универсальный, а для каждой пары свой: и открытие, и закрытие?

Сделать можно всё что Вы перечислили.
Оптимальный, на мой взгляд вариант - один советник, работающий на одном инструменте, открывающий, изменяющий, закрывающий сделки на этом инструменте.
Естественно , его следует устанавливать в отдельное окно выбранного инструмента.
Так будет надёжнее, гибче в настройках параметров под каждый инструмент и оперативное реагирование на ситуацию.
Много плюсов именно раздельной работы копий советника на каждом инструменте.
И много минусов если всё это сваливать в одну кучу.
ИМХО
 
Andrei Fandeev:
Сделать можно всё что Вы перечислили.
Оптимальный, на мой взгляд вариант - один советник, работающий на одном инструменте, открывающий, изменяющий, закрывающий сделки на этом инструменте.
Естественно , его следует устанавливать в отдельное окно выбранного инструмента.
Так будет надёжнее, гибче в настройках параметров под каждый инструмент и оперативное реагирование на ситуацию.
Много плюсов именно раздельной работы копий советника на каждом инструменте.
И много минусов если всё это сваливать в одну кучу.
ИМХО

Преимущество только тестирования в мультивалютном режиме в тестере МТ5. Не мультивалютник тестировать сложнее, нужен спецсофт для совмещения результатов, а потом возникает сложность с анализом результатов. Здесь нужно определить что важнее, настройки, или тестирование на работоспособность стратегии.

 
Vitaly Muzichenko:

Преимущество только тестирования в мультивалютном режиме в тестере МТ5. Не мультивалютник тестировать сложнее, нужен спецсофт для совмещения результатов, а потом возникает сложность с анализом результатов. Здесь нужно определить что важнее, настройки, или тестирование на работоспособность стратегии.

Естественно. Всё зависит от задачи.
Но я написал ранее "Сделать можно всё что Вы перечислили."
 
Artemij:

Подскажите, как лучше организовать работу советника на нескольких (6-9) парах одновременно?

Я сделал так :

1. С начало написал эксперт для одна пара.

2. Заменил все переменные на мои ( вместо _Point => double MyPoint=SymbolInfoDouble(MySymbol,SYMBOL_POINT); )

3. Вставил эксперт в цикл для несколько пар.

Сейчас если хочу использовать/тестировать на один (текущий) символ, комментирую цикл, и все.

 
Andrei Fandeev:
Сделать можно всё что Вы перечислили.
Оптимальный, на мой взгляд вариант - один советник, работающий на одном инструменте, открывающий, изменяющий, закрывающий сделки на этом инструменте.
Естественно , его следует устанавливать в отдельное окно выбранного инструмента.
Так будет надёжнее, гибче в настройках параметров под каждый инструмент и оперативное реагирование на ситуацию.
Много плюсов именно раздельной работы копий советника на каждом инструменте.
И много минусов если всё это сваливать в одну кучу.
ИМХО

То есть, я Вас правильно понял, что надо писать для 9 пар 9 советников? Отличие будет, естественно, только в имени символа. Собственно я так и намеревался делать, но я предложил конструкцию

string Pair = OrderSymbol();
.....
double PAsk = MarketInfo(Pair,MODE_ASK);  
CCI = iCCI(Pair,PERIOD_H1,24,PRICE_TYPICAL,0);

      ticket = OrderClose(OrderTicket(),OrderLots(),PAsk,20,White); 

 и на этом форуме мне сказали, что она вполне жизнеспособна и может работать на разных парах.

Мне лично вариант "специализированных" советников больше нравится, чем универсальных. 

 
Vitaly Muzichenko:

Преимущество только тестирования в мультивалютном режиме в тестере МТ5. Не мультивалютник тестировать сложнее, нужен спецсофт для совмещения результатов, а потом возникает сложность с анализом результатов. Здесь нужно определить что важнее, настройки, или тестирование на работоспособность стратегии.


А тестировать это в мультивалютном режиме я собираюсь на realtime на демо-счёте. Погонял по отдельности на разных парах, вроде всё так, как я и задумывал. Теперь задача - собрать в единое целое.   

 
Ivan Ivanov:

Я сделал так :

1. С начало написал эксперт для одна пара.

2. Заменил все переменные на мои ( вместо _Point => double MyPoint=SymbolInfoDouble(MySymbol,SYMBOL_POINT); )

3. Вставил эксперт в цикл для несколько пар.

Сейчас если хочу использовать/тестировать на один (текущий) символ, комментирую цикл, и все.

п2. = не понял... А это зачем, если мы рассматриваем (пусть и в цикле) в конкретный момент конкретную пару?

п3. = цикл перебора пар? Что-то вроде:

string Pair
for
(cnt = 1; cnt >= 9; cnt++) { if (cnt == 1) {Pair = "EURUSD";} etc if (cnt == 9) {Pair = "USDJPY";}

как-то так? Остроумно!

 
всё упирается в не синхронный приход тика по разным символам - где-то тик пришёл а где-то вернёт сообщение что нет цены или реквот к примеру и ещё овердофига нюансов и подводных камней об которые можно все ноги переломать - проще и надёжней писать советник копии которого на разных графиках будут "видеть" друг друга и уже на этом строить их взаимодействие чтоб все копии действовали в связке как одно целое а не наоборот одно целое распылять на множество символов
 
Aleksey Semenov:
всё упирается в не синхронный приход тика по разным символам - где-то тик пришёл а где-то вернёт сообщение что нет цены или реквот к примеру и ещё овердофига нюансов и подводных камней об которые можно все ноги переломать - проще и надёжней писать советник копии которого на разных графиках будут "видеть" друг друга и уже на этом строить их взаимодействие чтоб все копии действовали в связке как одно целое а не наоборот одно целое распылять на множество символов

Золотые слова!

Вы подтвердили мои догадки. Я всегда с недоверием относился ко всему универсальному (кроме, разве что, клея). 

Только вот одно:

советник, копии которого на разных графиках будут "видеть" друг друга

это как?

 

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

Далее в таймере делать проверку, и если бар новый, идти дальше по коду, если старый - к другому символу, тогда проблем не будет. Но опять-же, нужно правильно написать код, чтоб не было ложного выхода при реквотах и ошибках

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