Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
тогда в сервисдеск пишите, код приложите.
Да, лучше именно в сервисдеск с приложением кода эксперта.
За код не беспокойтесь - мы все стираем после тестов. У нас главная и единственная задача в поиске ошибок.
Очередной вопрос. Использую функцию CopyTime. Вызов:
возвращает почему-то только один элемент со значением D'2011.08.01'. А где собсно D'2011.07.01'? В чем подвох?
P.S. Массив Array[] - динамический.
Очередной вопрос. Использую функцию CopyTime. Вызов:
возвращает почему-то только один элемент со значением D'2011.08.01'. А где собсно D'2011.07.01'? В чем подвох?
P.S. Массив Array[] - динамический.
Да, почему то первый элемент пропускается, пишите в сервисдеск.
1 2011.08.01 00:00:00
0 2011.07.01 00:00:00
Очередной вопрос. Использую функцию CopyTime.
Уже есть подобная заявка.
Разбираемся.
Вот еще загадка. Никак не могу отловить багу - уж не знаю, моя или терминала.
Есть тривиальный код, который подсчитывает количество выставленных экспертом ордеров. Счетчик хранится в глобальных переменных. Выглядит примерно так:
Этот Count используется в комментах ордеров. В результате периодически наблюдаю, что номер очередного ордера меньше (на несколько единиц), чем у позиций, которые уже в рынке. Ошибок в логе нет.
Есть идеи? Может, кто-то сталкивался с аналогичным "исчезновением" последних значений глобальных переменных, например, из-за их несохранения терминалом при выходе из него в определенных условиях (ну, например, может в случае, когда пропала связь - просто одна версия)?
Вот еще загадка. Никак не могу отловить багу - уж не знаю, моя или терминала.
Попробуйте что-то вроде этого. Я правда в глобальные не выводил. Но считается всё верно.
Попробуйте что-то вроде этого. Я правда в глобальные не выводил. Но считается всё верно.
Разработчикам:
Так и задумано, если отложник закрывается по времени истечения, то это никоим образом не отслеживается функцией OnTrade?
ПС: Вообще не понятно назначение обработчика торговых событий OnTrade, если стоп-лоссы и тэйки он не отлавливает, если закрытие отложников по времени истечения ордера он не отлавливает. Мы все должны перепроверять в процессе выполнения алгоритма. Такой подход вносит путаницу, т.к. надеешься на обработчика торговых событий, а нужно его перепроверять. Тем более, что после перепроверок отлавливаешь события, которые не обрабатываются OnTrade(). Ну к чему это? Зато теперь мы можем поиграть в тетрис и всякую ерунду рисовать на графиках. Разработчики, ну очень Вас прошу, доведите торговую часть платформы до логического завершения.
Ничего не могу сказать про отложники, не работал с ними, не было необходимости пока, но стопы и тэйки прекрасно обрабатываются в OnTrade, и в тестере и в реал-тайме.
Вот эти строки в лог, к примеру, выводит именно обработчик OnTrade:
2011.08.08 09:03:05 ChTestExp (EURUSD,H1) Long position by EURAUD to be closed of stop-loss2011.08.08 09:03:05 ChTestExp (EURUSD,H1) -----------------Deal #5263582 [sl 1.37819]
2011.08.08 09:03:05 ChTestExp (EURUSD,H1) oldDealsTotal=558 newDealsTotal=559
Вы поставьте в фукцию OnTrade() функцию Print(__FUNCTION__). И когда в Вашем логе будет
stop loss triggered buy 0.10 AUDUSD 0.89783 sl: 0.89544 tp: 0.90024 [#15 sell 0.10 AUDUSD at 0.89544]
deal #7 sell 0.10 AUDUSD at 0.89544 done (based on order #15)
deal performed [#7 sell 0.10 AUDUSD at 0.89544]
order performed sell 0.10 at 0.89544 [#15 sell 0.10 AUDUSD at 0.89544]
Вы посмотрите, сработал ли OnTrade()?
У меня то всё срабатывает, даже без Вашей вставки, так как в OnTrade ведётся учёт всех сделок , их объёмов, профита, всё это суммируется и выводится в OnDeinite по каждому символу в отдельности. И поскольку, все просуммированные показатели (число трейдов, прибыль) в точности совпадают с отчётом тестера, у меня нет оснований сомневаться в работе функции OnTrade().
Единственное, что не обрабатывается в OnTrade, это сделки по закрытию позиций по окончанию теста (с комментарием 'end of test') и по закрытию по стоп-ауту в тестере (комментарий 'so ...'), их в режиме тестирования, приходится дополнительно обрабатывать в OnDeinit. Выдержка из лога тестера:
2011.08.09 00:06:43 Core 1 log file "E:\Program Files\MetaTrader 5\Tester\Agent-127.0.0.1-3000\logs\20110809.log" written2011.08.09 00:06:43 Core 1 EURUSD,H1: 888296 ticks (275 bars) generated within 13962 ms (total bars in history 6479, total time 16177 ms)
2011.08.09 00:06:43 Core 1 stop out occured on 8% of testing interval
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 Конец Deinit
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 All Profit = -9072.04
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 Всего трейдов: 17
.....
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 ----------------------------------------
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 Total profit EURGBP = -4738.97
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 Profit for the week EURGBP = 319.68
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 Total profit GBPUSD = -3775.86
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 Profit for the week GBPUSD = -1798.83
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 Total profit EURUSD = -557.21
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 Profit for the week EURUSD = 65.85
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 Balance=927.96 Equite=927.96 Profit=0.00 MarginLevel=0.00
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 ---------------Report-------------------
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 Balance=10000.00 Equite=927.96 Profit=0.00 MarginLevel=0.00
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 Ошибок открытия: 1 Ошибок закрытия: 0 Ошибок модификации: 0 Реквоты: 1
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 Время работы: 0 min. 14 сек.
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 Эксперт ChTestExp закончил работу в 2011.01.18 10:11 на графике EURUSD период H1
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 Выполнение Deinit
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 OnDeinit_UninitReason = Another reason
2011.08.09 00:06:43 Core 1 OnTester result 0
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 order performed buy 1.65 at 1.59804 [#69 buy 1.65 GBPUSD at 1.59804]
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 deal performed [#68 buy 1.65 GBPUSD at 1.59804]
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 deal #68 buy 1.65 GBPUSD at 1.59804 done (based on order #69)
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 position closed due end of test at 1.59804 [sell 1.65 GBPUSD 1.57341182 tp: 1.57247]
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 order performed buy 0.45 at 0.83931 [#68 buy 0.45 EURGBP at 0.83931]
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 deal performed [#67 buy 0.45 EURGBP at 0.83931]
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 deal #67 buy 0.45 EURGBP at 0.83931 done (based on order #68)
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 position stop out triggered at 29.09% [sell 0.45 EURGBP 0.83930333 tp: 0.80463]
2011.08.09 00:06:43 Core 1 2011.01.17 14:39:39 Long position by EURUSD to be closed of stop-loss
2011.08.09 00:06:43 Core 1 2011.01.17 14:39:39 -----------------Deal #66 sl 1.32900
2011.08.09 00:06:43 Core 1 2011.01.17 14:39:39 oldDealsTotal=65 newDealsTotal=66
Из отчёта тестера:
Как вилите, итоговые цифры, независимо посчитанные, совпадают, значит всё верно. Специально взял пример со стоп-аутом.