[Архив!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 2. - страница 294
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
У меня вопрос по тралу, кто может подскажите. Вроде правильный трал в безубыток, а не работает.
Здесь есть трал: https://www.mql5.com/ru/forum/131859
Чтобы вставить в текст код, нажмите кнопочку SRC, которая находится над полем ввода текста.
Здесь есть трал: https://www.mql5.com/ru/forum/131859
Чтобы вставить в текст код, нажмите кнопочку SRC, которая находится над полем ввода текста.
Спасибо.
У меня вопрос по тралу, кто может подскажите. Вроде правильный трал в безубыток, а не работает.
Перечисление причин по мере убывания значимости:
1. Не включен компьютер
2. Не включен Метатрейдер
3. Не установлен скрипт на график
4. Не разрешены советники
5. Нечего тралить.
6. Что-то в коде не так.
Перечисление причин по мере убывания значимости:
1. Не включен компьютер
2. Не включен Метатрейдер
3. Не установлен скрипт на график
4. Не разрешены советники
5. Нечего тралить.
6. Что-то в коде не так.
Используйте OrderOpenTime()
Ибо - а нафига он нужен-то тогда?
Так то да, но по порядковому номеру у меня получилось довольно коротко а с OrderOpenTime я как-то не понимаю что делать, надо куда-то положить время открытия, сравнить со следующим ордером в списке, если время больше, переписать переменную итд. Не врубаюсь в алгоритм пока.
Отличный ответ, Roger, но компьютер включен, метатрейдер тоже, советник прикреплен к графику, советники разрешены, сделки открываются и соответственно есть что тралить! А вот что в коде не так, в этом и заключался вопрос.
Сначала кода не было, Вы его потом прикрепили.
Наверное потому не работает, что Вы засунули трейлинг в функцию открытия ордера, т.е условия по открытию ордера таки наступают, ордер открывается, а уж дальше может и не попасть.
Так то да, но по порядковому номеру у меня получилось довольно коротко а с OrderOpenTime я как-то не понимаю что делать, надо куда-то положить время открытия, сравнить со следующим ордером в списке, если время больше, переписать переменную итд. Не врубаюсь в алгоритм пока.
По порядковому номеру ненадежно, в этой нумерации никто ничего не гарантирует, только для тестера. Парой страниц ранее писал код для поиска последнего закрытого ордера, для открытых аналогично. Все просто, перебрали, запомнили тикет, потом выбрали ордер или позу по тикету вот и все:
По порядковому номеру ненадежно, в этой нумерации никто ничего не гарантирует, только для тестера. Парой страниц ранее писал код для поиска последнего закрытого ордера, для открытых аналогично. Все просто, перебрали, запомнили тикет, потом выбрали ордер или позу по тикету вот и все:
Сначала кода не было, Вы его потом прикрепили.
Наверное потому не работает, что Вы засунули трейлинг в функцию открытия ордера, т.е условия по открытию ордера таки наступают, ордер открывается, а уж дальше может и не попасть.
По порядковому номеру ненадежно, в этой нумерации никто ничего не гарантирует, только для тестера. Парой страниц ранее писал код для поиска последнего закрытого ордера, для открытых аналогично. Все просто, перебрали, запомнили тикет, потом выбрали ордер или позу по тикету вот и все:
Код неверный.
Во-первых вот это:
Если символ ордера равен заданному символу в переменной symbol или магик ордера равен магику magic... Значит, если будет выбран любой ордер с символом symbol, а магик будет другой или отсутствовать, то условие будет выполнено. Потому что или то или то... Соответственно нужно ставить и вместо или, а лучше разнести проверки в отдельные строки - цикл быстрее будет, что значимо для оптимизации.
Далее... Выбор по тикету: параметр pool игнорируется, т.е. его и писать-то тут бессмысленно.
после успешного выбора ордера по тикету, необходимо проверить из какого списка ордеров он был выбран - из рыночных или из закрытых. Для этого нужно проверить время закрытия ордера и, если оно больше нуля, то ордер однозначно был закрытым. У открытых позиций этот параметр всегда равен нулю. ИМХО, после выбора последнего ордера нужно сразу проверить его тип и вписать его в переменную.
Теперь функция примет такой вид:
Теперь, чтобы проверить только Бай или Селл текущего графика и какой из них был последним закрытым, вызываем эту функцию таким образом:
Для обработки ошибки, в принципе, можно завести глобальную переменную, напр. int err; и в теле самой функции запоминать номер ошибки в этой переменной:
Тогда для обработки ошибки после вызова ф-ции ...
GetTypeLastClosePos(Symbol(), Magic);
... и возникновения ошибки, её номер будет находиться в переменной err и в блоке обработки этот номер обработать.
А лучше использовать switch