Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Вы могли бы подсказать способ как это можно корректно сделать для моей задачи? Пока что согласно Вашей рекомендации мы получаем следующее. Функция start() запускается с каждым новым тиком. То есть это означает, что согласно Вашей рекомендации эксперт на каждом тике должен открывать позицию при установленном history_checked = true, потом переводить history_checked=false, и далее проверять историю счёта? Только вот зачем это нужно если мы позицию УЖЕ открыли БЕЗ проверки истории?!
Я конечно же понимаю, что для решения этой всплывшей проблемы с историей, которой нет на реальной работе, можно использовать более корявый и неудобный способ забить в историю хотя бы один начальный стоплосс. Например выбрать определённую дату и точное время, посмотреть по графику как нужно поставить ордер, чтобы он закрылся по стоплоссу и таким образом образовалась история счёта в тестере. Но ведь почему Вам как разработчикам не предусмотреть более простой и понятный способ решения проблемы с отсутсвием начальной истории в тестере? Например при отсутствии истории на реальной работе в журнале пишетсяследующая строчка
10:37:12 AccountHistory: '237140' error 'OK
А в тестере в журнале при использовании кода
int err=GetLastError();
Print("error(",err,"): ",ErrorDescription(err));
пишется что нет никаких ошибок
10:51:07 2005.05.05 23:45 TEST_HISTORY: error(0): no error
Почему бы не доработать тестер чтобы он понимал, что история отсутствует и писал вместо того, что пишет сейчас примерно следующее:
10:51:07 2005.05.05 23:45 TEST_HISTORY: error(1234567): AccountHistory does not exist
Ведь ВСЁ сразу же становилось бы на свои места! И можно было бы при этой ошибке принудительно ставить history_checked = true, чтобы началась КОРРЕКТНАЯ работа эксперта на тестере.
Ну так проблема то и состоит как раз в том, что мы не можем обратиться к истории, чтобы что-то там подсчитать! Так как при запуске тестера её просто напросто ещё НЕ СУЩЕСТВУЕТ! При этом НИКАКИХ диагностических ошибок не выдаётся. Выдавались бы ошибки, то проблемы в общем-то и не существовало бы. Поэтому мы вынуждены каким-либо искуственным образом её сначала создавать, например, гарантированно вбив туда какой-нибудь ордер.
Значение же HistoryTotal() ты можешь посмотреть.
Тогда при первой проверке history_checked будет true, а после установки и до следующих подходящих условий будет false.
Ну и проверку HistoryTotal() сначала тоже можно ;)
Тогда при первой проверке history_checked будет true, а после установки и до следующих подходящих условий будет false.
Ну и проверку HistoryTotal() сначала тоже можно ;)
Извините, пожалуйста, я наверное просто торможу!!! Сделал глобальной history_checked=true. После открытия ордера перевожу её в false. В этом случае получаем в тестере всего лишь один открытый и в последствии закрывшийся ордер. Также пробовал перед открытием ордера ставить
if(HistoryTotal()==0) history_checked=true;
В результате получил огроменное количество открытых ордеров, которые закрылись по стоплоссу, уничтожив весь баланс. Помогите, пожалуйста, подправьте вот этот код, чтобы он в конце концов реально заработал на тестере. Заранее благодарен!
Также почему-то в этом принте
Print("counter = ",counter,"openprice = ",openprice," last_stoploss_openprice = ",last_stoploss_openprice);
выдаётся следующее
2006.01.18 19:39:33 2006.01.16 10:47 TEST_HISTORY: counter = 0openprice = 1.2182 last_stoploss_openprice = 0
Найдите, пожалуйста, ошибку.
2006.01.18 19:55:32 2006.01.16 10:59 TEST_HISTORY: counter = 0openprice = 1.2182 last_stoploss_openprice = 0
2006.01.18 19:55:32 2006.01.16 10:59 TEST_HISTORY: Ошибка при доступе к исторической базе (0)
for(i=0;i<accTotal;i++)
Также пробовал перед открытием ордера ставить
if(HistoryTotal()==0) history_checked=true;
В результате получил огроменное количество открытых ордеров, которые закрылись по стоплоссу, уничтожив весь баланс.
Конечно! Пока ордер не закрыт, он не в истории, поэтому на каждом тике выставляется ордер.
Добавь еще проверку количества открытых ордеров. Если в истории равно нулю и нет открытых, тогда true.
УРААААААААААА!!! Я нашёл в чём именно оказалась вся проблема!!!!!! Как я и предполагал ранее тестер в комментарии закрытого ордера не добавляет признак закрытия ордера!!! То есть на реальной работе в комментариях закрытого по стоплоссу ордера будет написано "TEST_H[sl]", а на тестере [sl] не добавляется!!! То есть остаётся как и прежде "TEST_H". А мой эксперт как раз проверяет этот самый комментарий закрытого ордера и не может его найти.
И поэтому эксперт на тестере сразу же впадает в непонятное состояние, из-за чего я и начал предполагать, что работа на истории в тестере просто-напросто не реализована! Уважаемые разработчики, Вы сможете подправить тестер в плане корректности внесения комментариев? Чтобы комментарии в истории на тестере и на реальной работе совпадали?