Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Я иногда удаляю все открытые ордера, чтобы наши друзья из MT4 не расстраивались.
Вы получите эту проблему при бэктестинге, но это не проблема скрипта, а проблема бэктестинга MT4.
Если это продолжится, пожалуйста, дайте мне знать или пришлите мне несколько отчетов, показывающих проблему...
спасибо и благодарность,
hugues
Советник создает сетку с заданным мной комментарием "GridEURUSD". Этот комментарий стоит в поле Comment до тех пор, пока ордер находится в ожидании. Если ордер активируется, то комментарий меняется на "activate/auto". В конце концов стало ясно, что такое поведение приводит к описанной проблеме.
Я торгую с Alpari. Они поддерживают MT4 на демо-счетах.
Я проверю, могу ли я обойти это поведение, т.е. использовать магию ордера в качестве идентификатора для сетки, и сообщу вам о результатах.
В процессе тестирования я также внес изменения в скрипт очистки сетки. Я также добавил функциональность для закрытия открытых ордеров. К сожалению, при попытке закрыть открытый ордер я получаю ошибку 129, которая означает, что ордер заблокирован. Но он удаляет все отложенные ордера для данной сетки.
Кори
Дайте мне знать, если это работает, и я буду использовать магию... так как я не знал, что брокер делает такие странные вещи!!!
спасибо и пожелания,
hugues
Я изменил gridMaker, чтобы использовать OrderMagicNumber вместо комментария. Я также внес небольшие изменения в построение комментария.
Вот результат.
с уважением, Кори
поскольку я уже сделал несколько изменений сам, я интегрировал ваши изменения в новую версию.
Я сделал одно небольшое изменение: чтобы сохранить мои текущие гриды активными, я поставил тест на magic OR gridname...
можете ли вы проверить, правильно ли я это сделал?
кажется нормальным. Но вы должны определить GridName как extern, что я изменил, потому что мне не нужен был этот параметр.
приветствую, Кори.
Вы можете изменить строку :
if (MathAbs( OrderOpenPrice() - atRate ) < inRange) // dont look for exact price but price proximity (less than gridsize)
to
if (MathAbs( OrderOpenPrice() - atRate ) < (inRange*0.9)) // не ищем точную цену, а ищем близость цены (меньше размера сетки) - добавлено 0.9 из-за ошибок плавающего понтона
и это исправляет проблему.
Извините за любые неудобства...
hugues
Эта проблема уже существует?
Нашел нечто подобное в старом MQL2.
Действительно верный способ обойти эту проблему - сделать что-то вроде:
int intOOP = MathRound( OrdeOpenPrice() / Point );
для всех ваших двойных переменных. Тогда у вас будут все прямые переменные int, которые сравнимы без ошибок.
Придется написать немного больше, чтобы все было ясно и понятно, но зато будет меньше ошибок.
С уважением,
Кори
с уважением,
hugues
1) изменил логику для UseMACD, wantLongs, wantShorts. Раньше, если useMACD был установлен, советник брал лонги и шорты, независимо от флагов wnatLongs и wantShorts. Теперь useMACD не отменяет эти флаги, поэтому советник может быть только длинным с useMACD или только коротким.
2) Я добавил дополнительную проверку, чтобы убедиться, что не было открытых ордеров не по ту сторону EMA, если был установлен limitEMA34. Раньше ордера размещались выше или ниже EMA, но через несколько часов EMA перемещалась... поэтому ордера были по обе стороны EMA.
3) Похоже, есть ошибка в операторе switch в OrderType(). Я не уверен, что это такое, но он действительно ведет себя забавно. Я просто удалил оператор switch и заменил его на "if"... мне это не нравится, но это работает!
4) Я сделал период EMA переменной... удобно для бэктестинга...
У меня также есть несколько скриптов-компаньонов, если кто-то хочет:
1) для удаления незаполненных открытых ордеров для пары
2) для удаления всех открытых ордеров для всех пар одним махом
3) для закрытия всех позиций и удаления открытых ордеров.
4) получить простую статистику о поведении сетки по открытым позициям и истории.
Вот код V1.08: