Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Первый советник понимает, что после его OrderSend история еще не синхронизирована. Он ждет просто события синхронизации.
А вот как второму советнику понять, что история уже синхронизирована или еще нет?
Первый советник понимает, что после его OrderSend история еще не синхронизирована. Он ждет просто события синхронизации.
А вот как второму советнику понять, что история уже синхронизирована или еще нет?
Забудь про историю. Постарайся изучить поведение функции OnTradeTransaction()
Первый советник поставил позицию, в OnTradeTransaction это событие обрабатывается, там и отсеиваются "не свои", активировался ордер... в OnTradeTransaction и это событие обрабатывается.
Второй советник так-же там-же отсеивает "не свои" ордера, позиции и сделки.
У меня так работают на реальных форекс счетах 2 советника. В одном из них магиком позиции назначается тикет позиции к которой он должен быть привязан. И сам понимаешь это не два разных магика...
Тебя, кажется Виктор звать? В отладке запусти постановку двух позиций с разными магиками и проследи в OnTradeTransaction их структуры.
Забудь про историю. Постарайся изучить поведение функции OnTradeTransaction()
Первый советник поставил позицию, в OnTradeTransaction это событие обрабатывается, там и отсеиваются "не свои", активировался ордер... в OnTradeTransaction и это событие обрабатывается.
Второй советник так-же там-же отсеивает "не свои" ордера, позиции и сделки.
У меня так работают на реальных форекс счетах 2 советника. В одном из них магиком позиции назначается тикет позиции к которой он должен быть привязан. И сам понимаешь это не два разных магика...
Тебя, кажется Виктор звать? В отладке запусти постановку двух позиций с разными магиками и проследи в OnTradeTransaction их структуры.
Если внимательно посмотреть мои логи, то из них видно,
что тикет получаем быстрее срабатывания OnTradeTransaction, так что
достаточно будет тикета ордера.
Хотя, конечно, (при таком раскладе) лучше подстраховаться магиком.
А ещё лучше (пока) использовать OrderSendAsync - ошибок нет, ни на ФОРЕКС, ни на ФОРТС
Если внимательно посмотреть мои логи, то из них видно,
что тикет получаем быстрее срабатывания OnTradeTransaction, так что
достаточно будет тикета ордера.
Хотя, конечно, (при таком раскладе) лучше подстраховаться магиком.
А ещё лучше (пока) использовать OrderSendAsync - ошибок нет, ни на ФОРЕКС, ни на ФОРТС
Может и так. Но если отложник активировался? Анализировать историю? Опять проблема скорости синхронизации окружения?
В общем на любителя. Главное чтобы работало, несильно тормозило и обойтись без...
Забудь про историю. Постарайся изучить поведение функции OnTradeTransaction()
Как второму работать во время не синхронизированной истории?
Эта проблема касается не только MT5, но и четверки.
Как второму работать во время не синхронизированной истории?
Эта проблема касается не только MT5, но и четверки.
Я ещё больше становлюсь уверен что тебя звать Виктор. Никому не скажу твой прошлый ник.
Ты за короткое время освоил программирование на уровне выше среднего, на мой взгляд даже на много выше среднего. Но сдвинуть тебя с твоей ошибочной позиции очень сложно. А теперь, когда твой уровень знания программирования выше моего я даже и пытаться не буду.
Забудь про историю, смотри структуры функции OnTradeTransaction.
Попробуй на словах рассказать как ты в mql5 определяешь что активировался отложник?
Я ещё больше становлюсь уверен что тебя звать Виктор. Никому не скажу твой прошлый ник.
Ты за короткое время освоил программирование...
Если внимательно посмотреть мои логи, то из них видно,
что тикет получаем быстрее срабатывания OnTradeTransaction, так что
достаточно будет тикета ордера.
Хотя, конечно, (при таком раскладе) лучше подстраховаться магиком.
А ещё лучше (пока) использовать OrderSendAsync - ошибок нет, ни на ФОРЕКС, ни на ФОРТС
OrderSend() абсодютно синхронная функци - если получили билет, то всё исполнилось.
Внизу пример
Добавлено, а здесь логи
https://www.mql5.com/ru/forum/38456/page85#comment_2888263
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Как узнать размер комиссии не открывая позицию по инструменту?
fxsaber, 2016.11.08 20:30
void OnStart()
{
const int Ticket = OrderSend(_Symbol, OP_BUY, 1, SymbolInfoDouble(_Symbol, SYMBOL_ASK), 0, 0, 0);
OrderClose(Ticket, 0.3, SymbolInfoDouble(_Symbol, SYMBOL_BID), 0, clrNONE);
Sleep(1000); // ждем обновления истории
if (OrderSelect(Ticket, SELECT_BY_TICKET))
Alert(OrderCommission());
}
Наверное, такой пример показателен.
Если не делать Sleep, то часто возникает ситуация, что история не успела обновиться после OrderClose и OrderCommission возвращает значение, будто OrderClose не делался.
Заметьте, что это скрипт и никаких Event-ов быть не может. Единственный выход - тупой Sleep.
Если переписать этот скрипт с помощью СБ, ничего не поменяется.