Странное поведение советника

 

Доброго времени суток.

Кто нибудь сталкивался с подобной проблемой: советник "самопроизвльно" перестаёт торговать не выдавая при этом никаких сообщений и ошибок(в это время сделки на тестере проходят), затем в определённый момент опять начинает торговать. Советника писал сам, никаких ограничений в работе по времени нет. ДЦ клянётся, что работу советников не ограничивает.

 
MG19 писал(а) >>

Доброго времени суток.

Кто нибудь сталкивался с подобной проблемой: советник "самопроизвльно" перестаёт торговать не выдавая при этом никаких сообщений и ошибок(в это время сделки на тестере проходят), затем в определённый момент опять начинает торговать. Советника писал сам, никаких ограничений в работе по времени нет. ДЦ клянётся, что работу советников не ограничивает.

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

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

 
PapaYozh >>:

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

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

Дело в том, что тестер тоже на реале, а не на демо.

 

Отсутствие сделок не означает, что не было попыток торговли.

Надо бы анализировать коды возврата после торговых операций.

Кстати, в тестере выводится больше сообщений об ошибках, чем при реальной работе эксперта.

 
MG19 писал(а) >>

Дело в том, что тестер тоже на реале, а не на демо.

1. В тестере тики не настоящие, а смоделированные.

2. Тестер не отражает спред, проскальзование, стоплевел и т.п. Т.е. Это все берется текущее и вполне может не соответствовать тем значениям, которые были на тестируемом интервале.

--

Через вопрос "почему там работает, а там нет?" проходят многие, если не все. Наиболее оптимально - писать логи и ковыряться в них по-факту.

 
stringo >>:

Отсутствие сделок не означает, что не было попыток торговли.

Надо бы анализировать коды возврата после торговых операций.

Кстати, в тестере выводится больше сообщений об ошибках, чем при реальной работе эксперта.

Советник выводит сообщение при попытке произвести сделку, и при её осуществлении, или возвращает код ошибки - везде пусто, в тестере тоже ошибок нет.

Стоплевелы ни рпи чём - они далеко.

 

Явно поставьте какой-нибудь Print перед торговой функцией. После торговой функции всегда распечатывайте значение от функции GetLastError. Тогда и вопросов будет меньше.

Убедитесь также, что в Вашем клиентском терминале разрешена работа советников. И что советнику разрешено торговать.

 
stringo >>:

Явно поставьте какой-нибудь Print перед торговой функцией. После торговой функции всегда распечатывайте значение от функции GetLastError. Тогда и вопросов будет меньше.

Убедитесь также, что в Вашем клиентском терминале разрешена работа советников.

Всё это есть: и Print до и после, и GetLastError, и советнику разрешено торговать, вот только сделки периодически не происходят.

 
MG19 >>:

Всё это есть: и Print до и после, и GetLastError, и советнику разрешено торговать, вот только сделки периодически не происходят.

Значит ближе принты нужно ставить - на этапе формирования сигнала на открытие позиции.

Проверять есть ли сигнал, а уже далее отрабатывается он или нет.

И изменить условия таким образом чтобы советник чаще предпринимал попытку открыться

в ущерб прибыльностию Это же тестирование.

 

Ну если есть Принты после условий на вход ,и они ничего не печатают, то значит условия для сделки не соответствуют заданным !

Это же очевидно !

А если принт печатает, что сигнал есть ., а позиция  не открывается, то должна возвращаться ошибка от функции GetLastError

(if(ticket < 0) {  Print("Ошибка открытия ордера BUY #", GetLastError());} 

У вас какая из ситуаций имеет место ?

//---------------------------------------

пока печатал свой пост, - goldtrader - уже спросил то же самое...

 
rid >>:

Ну если есть Принты после условий на вход,и они ничего не печатают, то значит условия для сделки не соответствуют заданным !

Это же очевидно !

А если принт печатает, что сигнал есть ., а позиция не открывается, то должна возвращаться ошибка от функции GetLastError

У вас какая из ситуаций имеет место ?

//---------------------------------------

пока печатал свой пост, - goldtrader - уже спросил то же самое...


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

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