АвторСообщение





Сообщение: 122
Зарегистрирован: 05.03.13
Репутация: 1
ссылка на сообщение  Отправлено: 14.04.14 09:56. Заголовок: Я в шоке! Подскажите.


Всем привет!
Я в шоке! Выпал из рынка на 3,5 месяца, а тут такие перемены. Игорь подскажи, где можно ознакомиться с изменениями в MQL4?
Хотел перенести все данные на новый комп, но некоторые индикаторы после компиляции перестают работать. Вот один из них.
http://gfile.ru/a8cCP
Хотя не перекомпилированные файлы работают.
Компиляция ошибок в коде не выявляет. Но при отладке выдается ошибка формирования массива стр.67. Но в чем ошибка не пойму.
Буду благодарен, если найдешь время исправить.



Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 203 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 All [только новые]







Сообщение: 2144
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 3
ссылка на сообщение  Отправлено: 22.04.16 10:33. Заголовок: Sergey пишет: ордер..


Sergey пишет:

 цитата:
ордер не успевал обрабатываться сервером до следующего тика


Если так, то советник никогда не узнает о приходе этого пропущенного тика. Пропущенные тики для советников теряются безвозвратно. Обработка тика советником происходит только в том случае, если советник закончил обработку предыдущего тика.

Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 474
Зарегистрирован: 05.03.13
Репутация: 1
ссылка на сообщение  Отправлено: 22.04.16 14:48. Заголовок: Scriptong пишет: Ес..


Scriptong пишет:

 цитата:
Если так, то советник никогда не узнает о приходе этого пропущенного тика. Пропущенные тики для советников теряются безвозвратно. Обработка тика советником происходит только в том случае, если советник закончил обработку предыдущего тика.


Здесь имелось ввиду, что по приходу следующего тика информация об ордере не поменялась. В результате идет повторная команда на модификацию ордера. И выдается ошибка 139 или 0.

С уважением! Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 2147
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 3
ссылка на сообщение  Отправлено: 22.04.16 17:52. Заголовок: Sergey пишет: Здесь..


Sergey пишет:

 цитата:
Здесь имелось ввиду, что по приходу следующего тика информация об ордере не поменялась.


Это более, чем странно. Никогда такого в МТ4 не замечал, т. к. в нем все команды синхронные. Такое может быть только в МТ5, но там для контроля есть соответствующие события.
В МТ4, если советник отправляет торговый приказ, то эксперт будет бездействовать до момента получения ответа от сервера. За это время советником не будут восприниматься какие-либо тики, т. к. советник "висит". Если же ответ получен, то вместе с этим будет получено новое состояние ордеров, если они изменились.
Ошибка 139 может быть получена, если отправляется приказ на модификацию/удаление/закрытие ордера, который в данный момент обрабатывается сервером в результате достижения ценой уровня его открытия (если отложенный ордер) или уровня Stop Loss/Take Profit. Еще такое может быть, если брокер использует уровень заморозки. Но тогда это брокер-динозавр, т. к. я уже давно не встречал, чтобы Freeze Level отличался от нуля.

Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 476
Зарегистрирован: 05.03.13
Репутация: 1
ссылка на сообщение  Отправлено: 22.04.16 21:00. Заголовок: Scriptong пишет: В ..


Scriptong пишет:

 цитата:
В МТ4, если советник отправляет торговый приказ, то эксперт будет бездействовать до момента получения ответа от сервера. За это время советником не будут восприниматься какие-либо тики, т. к. советник "висит". Если же ответ получен, то вместе с этим будет получено новое состояние ордеров, если они изменились.


Вот и я так думал. И нормального объяснения этому у меня пока нет. Времени прошло много, всего точно не упомнишь. Знаю, что когда исключил ошибку 139, стала появляться ошибка 0 (модификация по тем же параметрам SL и TP). Причем, если исключить Alert, в журнале ошибка не проходит. Думаю, в свете тех рекомендаций, которые ты дал выше, причина может скрываться в сортировке ордеров. Модификация сделана в цикле перебора всех ордеров. А советник допускает наличие нескольких ордеров одновременно. Придется заменить простой перебор функцией слежения за ордерами.

С уважением! Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 2151
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 3
ссылка на сообщение  Отправлено: 28.04.16 12:51. Заголовок: Sergey пишет: стала..


Sergey пишет:

 цитата:
стала появляться ошибка 0


Так ведь ошибка 0 - это отсутствие ошибки. Значит, все нормально .

Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 480
Зарегистрирован: 05.03.13
Репутация: 1
ссылка на сообщение  Отправлено: 28.04.16 15:09. Заголовок: Scriptong пишет: Та..


Scriptong пишет:

 цитата:
Так ведь ошибка 0 - это отсутствие ошибки. Значит, все нормально


Не совсем. При модификации 0 означает и модификацию ордера по тем же параметрам. Ошибки с точки зрения торговли нет, а в алгоритме, скорее всего да.

С уважением! Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 2152
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 3
ссылка на сообщение  Отправлено: 28.04.16 19:18. Заголовок: Sergey пишет: При ..


Sergey пишет:

 цитата:
При модификации 0 означает и модификацию ордера по тем же параметрам. Ошибки с точки зрения торговли нет, а в алгоритме, скорее всего да.


В таком случае получите ошибку 1.

Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 481
Зарегистрирован: 05.03.13
Репутация: 1
ссылка на сообщение  Отправлено: 29.04.16 06:24. Заголовок: Scriptong пишет: В ..


Scriptong пишет:

 цитата:
В таком случае получите ошибку 1.


Учту.

С уважением! Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 483
Зарегистрирован: 05.03.13
Репутация: 1
ссылка на сообщение  Отправлено: 03.05.16 18:09. Заголовок: Столкнулся с непонят..


Столкнулся с непонятной ситуацией. Вот Журнал модификации ордера...

.. из которого следует, что отправлено две заявки на модификацию ордера. Причем конечные значения модификации по ТР на 40 тиков отличаются от расчетных. Ошибок не выдается. Я поставил метки на количество расчетов ТР и модификаций, которые показали, что расчет и заявка на модификацию выполняются, как положено,один раз. У кого нибудь есть разумные объяснения?

С уважением! Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 2156
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 3
ссылка на сообщение  Отправлено: 03.05.16 19:37. Заголовок: Sergey пишет: Столк..


Sergey пишет:

 цитата:
Столкнулся с непонятной ситуацией.


Немного подробнее про ситуацию. Речь идет об общем журнале или о журнале экспертов? Также желательно видеть всю строку сообщения (можно обрезать название эксперта, если речь об автоторговле).

Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 484
Зарегистрирован: 05.03.13
Репутация: 1
ссылка на сообщение  Отправлено: 04.05.16 09:22. Заголовок: Спасибо всем .... ра..


Спасибо всем .... разобрался. Оказалось все просто.....Одновременно работали 2 робота на одной паре и с одинаковыми идентификаторами.

С уважением! Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 488
Зарегистрирован: 05.03.13
Репутация: 1
ссылка на сообщение  Отправлено: 07.05.16 08:42. Заголовок: Нудно посчитать Prof..


Нудно посчитать Profit при закрытии нескольких Sell ордеров. На сколько корректен такой алгоритм.
for (int i = SellCount-1; i >= 0; i--)
if (OrderSelect(SellTicket, SELECT_BY_TICKET) && OrderCloseTime() == 0)
if (OrderClose(OrderTicket(), OrderLots(), NT(Ask), 3))
Profit +=OrderProfit();

Или после закрытия нужно заново вытаскивать ордер уже из истории и лишь затем подсчитывать профит.

С уважением! Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 2161
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 3
ссылка на сообщение  Отправлено: 11.05.16 16:47. Заголовок: Sergey пишет: Нудно..


Sergey пишет:

 цитата:
Нудно посчитать Profit при закрытии нескольких Sell ордеров. На сколько корректен такой алгоритм.
for (int i = SellCount-1; i >= 0; i--)
if (OrderSelect(SellTicket, SELECT_BY_TICKET) && OrderCloseTime() == 0)
if (OrderClose(OrderTicket(), OrderLots(), NT(Ask), 3))
Profit +=OrderProfit();
Или после закрытия нужно заново вытаскивать ордер уже из истории и лишь затем подсчитывать профит.


Нет, неправильно. Ведь SellCount уже было откуда-то взято. Значит, был цикл, который посчитал количество закрытых ордеров. Зачем тогда второй цикл, если все это можно было посчитать в одном цикле?
Также непонятно, для чего представленный цикл нужен, если постоянно идет обращение к одному и тому же ордеру с тикетом SellTicket?

Подсчет прибыли/убытка некоторых закрытых ордеров осуществляется следующим образом:

 цитата:
double profit = 0.0;
for (int i = OrdersHistoryTotal() - 1; i >= 0; i--)
{
if (!OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
continue;
if (OrderType() != OP_SELL)
continue;
profit += OrderProfit() + OrderSwap() + OrderComission();
}



Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 490
Зарегистрирован: 05.03.13
Репутация: 1
ссылка на сообщение  Отправлено: 11.05.16 20:25. Заголовок: Scriptong пишет: Та..


Scriptong пишет:

 цитата:
Также непонятно, для чего представленный цикл нужен, если постоянно идет обращение к одному и тому же ордеру с тикетом SellTicket?


SellTicket|i| это массив тикетов Sell-ордеров отобранных для закрытия, не заметил, что квадратные скобки удалились. Меня интересует корректность такой последовательности
if (OrderClose(OrderTicket(), OrderLots(), NT(Ask), 3))
Profit +=OrderProfit() + OrderSwap() + OrderComission();
или все же так
if (OrderClose(OrderTicket(), OrderLots(), NT(Ask), 3))
if (OrderSelect(OrderTicket(), SELECT_BY_TICKET,, MODE_HISTORY)
Profit +=OrderProfit() + OrderSwap() + OrderComission();


С уважением! Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 2164
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 3
ссылка на сообщение  Отправлено: 12.05.16 10:42. Заголовок: Sergey пишет: или в..


Sergey пишет:

 цитата:
или все же так
if (OrderClose(OrderTicket(), OrderLots(), NT(Ask), 3))
if (OrderSelect(OrderTicket(), SELECT_BY_TICKET,, MODE_HISTORY)
Profit +=OrderProfit() + OrderSwap() + OrderComission();


Конечно же, так. Ведь в первом случае получаем данные непонятно какого ордера, т. к. перед обращением к функциям OrderXXX обязательно требуется выбор ордера при помощи OrderSelect.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 203 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  2 час. Хитов сегодня: 49
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет