Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Подключить библиотеку fxsibera mt4orders
это давно уже сделано и работает, пишу ж - осталось оценить скорость работы да разобраться с ордерной системой МТ5 - в тестере нужно. чтоб летало... хотя и так летает, но совершенству..
знаю, видел и читал в справке, но этот вариант сложнее - нужно знать тикеты сделок и хранить время когда ЕА начал выставлять первые ордера - чтобы не перебирать всю историю
с магиками в тестере не работаю - опять же перебор всех позиций - зачем? использую тикет - код же для тестера
с тикетами позиции проще - на хэдже его можно получить получив тикет ордера открывшего позицию
Если имеется несколько позиций одновременно, то будут неизбежно тормоза, потому что такова архитектура Тестера.
Приведите MT4-style код тестового советника (не того, что окончательно нужно ускорить), который нужно ускорить.
нужен код для тестера... максимально быстро=работающий код, для хэдж-счетов
с открытием позиции (с помощью справки), разобрался - открывает и возвращает тикет позиции, с закрытием (как отложенных ордеров, так и позиции) - тоже проблем нет
одна не решенная проблема - первый пост
тогда может твой код сделать чуть наоборот, если нет частичных закрытий то это должно быть макс.быстро.
Если имеется несколько позиций одновременно, то будут неизбежно тормоза, потому что такова архитектура Тестера.
Приведите MT4-style код тестового советника (не того, что окончательно нужно ускорить), который нужно ускорить.
код выше приводил, вот еще раз
торговых функций, по сути нет, только OrderProfit() и OrderCloseTime() с выбором ордера по тикету: OrderSelect() ,
с открытием ордеров проблем нет
нужен код для тестера для хэдж счетов
да! забыл, в МТ4-style совершенно не важно для OrderProfit(0 - рыночный или отложенный ордер, в МТ5-ордерной системе придется немного алгоритм изменить... но пока задача из первого сообщения - переписать 3 строки кода
тогда может твой код сделать чуть наоборот, если нет частичных закрытий то это должно быть макс.быстро.
код выше приводил
Нужен код советника, а не функции.
Нужен код советника, а не функции.
брошу в ЛС, но код рабочий вариант, много правок было, хотя структуру кода должны понять
- тестирую возможности ордерных систем, пусть сетки ордеров, в целом закончил, следующий этап "Алгоритм Ванга — Ландау"
я писал код после твоего сообщения - 2 пост в топике, написал исходя из знаний по справке MQL5 , пока ничего не могу сказатьТак вот проверь мой последний вариант, если не ошибаюсь и
PositionSelectByTicket
возвращает false когда позиция уже закрыта, то все твои задачи из 1-го поста решены
Так вот проверь мой последний вариант, если не ошибаюсь и
возвращает false когда позиция уже закрыта, то все твои задачи из 1-го поста решены
спс
протестирую утром - тут еще нужно разобраться, что лучше работает выбор позиции по тикету или все таки перебором в цикле всех открытых позиций...может @fxsaber подскажет, с тестером он много тонкостей знает
собственно сабж:
если по шагам, то такие вопросы:
1. как узнать, что ранее открытая позиция уже закрылась?
2. как зная POSITION_TICKET или POSITION_IDENTIFIER максимально простым способом узнать прибыль позиции по закрытии?
PS: интересует реализация для тестера (максимально простой и быстрый код), варианты с OnTradeTransaction пока не хочу использовать
когда позиция открыта, все работает - вопросов, пока не возникло , только не решил только проблемы вопросов 1 и 2
UPD: нужна реализация (код) для хэдж-счета
ранее открытая...
я в 5-рке по тому же принципу как и в 4-рке обычным перебором анализирую и не парюсь никакими библиотЭками
for(pos=PositionsTotal()-1; pos>=0; pos--)
{
order_ticket=PositionGetTicket(pos); // тикет ордера
if(PositionGetString(POSITION_SYMBOL)==Symbol() && PositionGetInteger(POSITION_MAGIC)==MN)//
{
profitOr=PositionGetDouble(POSITION_PROFIT)+PositionGetDouble(POSITION_COMMISSION)+PositionGetDouble(POSITION_SWAP);
lotOr=NormalizeDouble(PositionGetDouble(POSITION_VOLUME),LS);
priceOr=NormalizeDouble(PositionGetDouble(POSITION_PRICE_OPEN),DGT);
tktOr=order_ticket;
myPipsPr=profitOr/(ltTV*lotOr);
if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
{
....