Разделение открытых позиций на группы - страница 8

 
Sergey Voytsekhovsky:

Подскажите плиз, в статье https://www.mql5.com/ru/articles/567 есть такой код и упоминание 

Но найти в стандартной поставке я не сумел. Плохо искал или статья устарела ???

Нет, просто я ошибся.

Вы "дёргаете" куски кода от-туда, от-сюда.., а мы должны догадываться.

Код добавления элемента в конец списка, показанный вами, очень похож на код добавления элемента в конец списка из стандартной библиотеки.

А вы оказывается что-то, где-то откуда-то вытащили...

 
Sergey Voytsekhovsky:

Мысль понятна, непонятно почему-бы не пользоваться готовыми отработанными алгоритмами, но про "три циклы" - очень доходчиво, спасибо. Когда получаешь качественные простые решения, всегда потом удивляюсь, ну почему сам не догадался, это ведь так на поверхности. Спасибо.

Там тоже немало ошибок, а искать проблему в чужих кодах, для меня совершенно невозможно. Притом, если вдруг обнаружишь ошибку, исправишь её для себя и даже если сообщишь о ней, то не факт что сообщение увидят и её исправят. А при очередном обновлении всё начнётся с начала.
 
Alexey Viktorov:
Там тоже немало ошибок, а искать проблему в чужих кодах, для меня совершенно невозможно. Притом, если вдруг обнаружишь ошибку, исправишь её для себя и даже если сообщишь о ней, то не факт что сообщение увидят и её исправят. А при очередном обновлении всё начнётся с начала.

Точно знаешь, что есть немало ошибок в СБ ? Или просто кошек не любишь по причине отсутствия поваренной книги?

 
Artyom Trishkin:

Нет, просто я ошибся.

Вы "дёргаете" куски кода от-туда, от-сюда.., а мы должны догадываться.

Код добавления элемента в конец списка, показанный вами, очень похож на код добавления элемента в конец списка из стандартной библиотеки.

А вы оказывается что-то, где-то откуда-то вытащили...

Код добавления элемента в конец списка - и есть из стандартной библиотеки, Вы правы. А "дернуть" я его пытался после того как НЕ нашел тот код что из статьи. :-)) 

 
Artyom Trishkin:

Точно знаешь, что есть немало ошибок в СБ ? Или просто кошек не любишь по причине отсутствия поваренной книги?

Скажи Артём, помнишь проблему с частичным закрытием позиции? Помнишь что в последствии добавили ещё один метод вместо того чтобы найти причину такого поведения метода?

Я не знаю каким образом deviation=ULONG_MAX влияло на неработоспособность всего метода, но я заменял это на deviation=1000 и всё работало исправно. В теме "Ошибки баги..." писал об этом, но тема разрастается с такой скоростью, что это сообщение кануло в бездну и его не заметили. В результате появился ещё один метод, а нужен-ли он??? И как теперь быть уверенным в том, что больше нигде нет ошибок??? Как быть уверенным в том, что сообщение будет замечено?

 
Sergey Voytsekhovsky:

Код добавления элемента в конец списка - и есть из стандартной библиотеки, Вы правы. А "дернуть" я его пытался после того как НЕ нашел тот код что из статьи. :-)) 

Если для хранения своих данных, представленных объектами, используете стандартную библиотеку, то и данные должны быть не структурой, а объектом на базе CObject стандартной библиотеки, и тогда можно использовать для их хранения динамические массивы указателей на объекты из стандартной библиотеки. Выдернуть кусочек не получится.

Документация по MQL5: Стандартная библиотека / Базовый класс CObject
Документация по MQL5: Стандартная библиотека / Базовый класс CObject
  • www.mql5.com
Класс CObject обеспечивает всем своим потомкам возможность быть элементом связанного списка. Кроме того определяется ряд виртуальных методов для дальнейшей реализации в классах-потомках.
 
Alexey Viktorov:

Скажи Артём, помнишь проблему с частичным закрытием позиции? Помнишь что в последствии добавили ещё один метод вместо того чтобы найти причину такого поведения метода?

Я не знаю каким образом deviation=ULONG_MAX влияло на неработоспособность всего метода, но я заменял это на deviation=1000 и всё работало исправно. В теме "Ошибки баги..." писал об этом, но тема разрастается с такой скоростью, что это сообщение кануло в бездну и его не заметили. В результате появился ещё один метод, а нужен-ли он??? И как теперь быть уверенным в том, что больше нигде нет ошибок??? Как быть уверенным в том, что сообщение будет замечено?

Нет, не помню проблему с частичным закрытием. И про отклонение, влияющее на работу не знаю. И даже представить не могу как максимальное отклонение, размером в ULONG_MAX пунктов (что равносильно отсутствию отклонения) может повлиять на частичное закрытие. И про новый метод не слышал. Что за метод?

А чтобы сообщение не пропало - найди его, скопируй в карман, и заново его опубликуй с пометкой что где-то наверное затерялось в обсуждениях что "MQL != C++, и должно ли быть =="

 
Artyom Trishkin:

Нет, не помню проблему с частичным закрытием. И про отклонение, влияющее на работу не знаю. И даже представить не могу как максимальное отклонение, размером в ULONG_MAX пунктов (что равносильно отсутствию отклонения) может повлиять на частичное закрытие. И про новый метод не слышал. Что за метод?

А чтобы сообщение не пропало - найди его, скопируй в карман, и заново его опубликуй с пометкой что где-то наверное затерялось в обсуждениях что "MQL != C++, и должно ли быть =="

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Разделение открытых позиций на группы

Alexey Viktorov, 2020.04.08 09:13

Скажи Артём, помнишь проблему с частичным закрытием позиции? Помнишь что в последствии добавили ещё один метод вместо того чтобы найти причину такого поведения метода?

Я не знаю каким образом deviation=ULONG_MAX влияло на неработоспособность всего метода, но я заменял это на deviation=1000 и всё работало исправно. В теме "Ошибки баги..." писал об этом, но тема разрастается с такой скоростью, что это сообщение кануло в бездну и его не заметили. В результате появился ещё один метод, а нужен-ли он??? И как теперь быть уверенным в том, что больше нигде нет ошибок??? Как быть уверенным в том, что сообщение будет замечено?


 
Artyom Trishkin:

Нет, не помню проблему с частичным закрытием. И про отклонение, влияющее на работу не знаю. И даже представить не могу как максимальное отклонение, размером в ULONG_MAX пунктов (что равносильно отсутствию отклонения) может повлиять на частичное закрытие. И про новый метод не слышал. Что за метод?

А чтобы сообщение не пропало - найди его, скопируй в карман, и заново его опубликуй с пометкой что где-то наверное затерялось в обсуждениях что "MQL != C++, и должно ли быть =="

Тем самым предлагаешь отодвинуть другие сообщения взад? Пусть о них никто не вспоминает? Не правильно это.

На мой взгляд, лучше определить отдельный раздел форума в котором каждая проблема будет отдельной темой. Количество тем гораздо меньше количества сообщений по одной теме. Поэтому не смотря на немалое количество тем, отодвигаться они будут не так далеко как отодвигаются сейчас отдельные вопросы и сообщения об ошибках.

 
Alexey Viktorov:

Откажитесь от перебора позиций для определения «что позиция действительно новая». Найдите другой способ. Например в OnTradeTransaction. И попробуйте вместо перезаполнения массива воспользоваться функцией ArrayRemove

Если я Вас правильно понял, то вот так будет правильнее. Как более опытный товарищ, подскажите плиз, с целью отлова новорожденных позиций такой фильтр сработает ??? Или может есть более верный вариант ???

void OnTradeTransaction(const MqlTradeTransaction& trans,
                        const MqlTradeRequest& request,
                        const MqlTradeResult& result)
 {
     if(trans.type == TRADE_TRANSACTION_DEAL_ADD)
      {
         if(trans.type != TRADE_TRANSACTION_ORDER_DELETE)
            {
             if(HistoryDealGetInteger(trans.deal, DEAL_ENTRY) == DEAL_ENTRY_IN) // открылась позиция
               {