
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
А почему?
Возьмем в качестве примера, советник описанный вот здесь https://www.mql5.com/ru/articles/100 и восгоримся желанием к нему прикрутить TrailingFixedPips.mqh
Но этот TrailingFixedPips.mqh тащит за собой следующий класс:
Вот этой командой: #include <Expert\ExpertTrailing.mqh>
Хорошо посмотрим на ExpertTrailing.mqh
А ExpertTrailing.mqh Тащит за собой еще 4 класса
#include <Trade\SymbolInfo.mqh>
#include <Trade\AccountInfo.mqh>
#include <Trade\PositionInfo.mqh>
#include <Indicators\Indicators.mqh>
Что за цель у меня была? Мне всего лишь хотелось двигать стоп лосс за открытой позицией на каком то от нее расстоянии.
Если я воспользуюсь TrailingFixedPips.mqh То я сейчас потащу в советник, описанный вот здесь https://www.mql5.com/ru/articles/100 , коды, еще 6-ти классов.
Не зная коды 6-ти классов прикручивать TrailingFixedPips.mqh нельзя.
Нужны описания (по русски) этих классов.
Это стандартные классы, которые поставляются вместе с терминалом и достаточно хорошо описаны в справке.
Удобство использования
Удобство использования этих классов в том, что они существуют (должны) существовать во всех терминалах, что по идее позволяет программисту не заботиться о наличии этих классов и правильности их работы (второе - относительное утверждение).
Неудобство применения
Неудобство применения этих классов заключается в том, что программист получает тот функционал, который был заложен разработчиками (если не считать наследования).
Соответственно и все ошибки (возможные) существующие в этих классах также перейдут в создаваемый проект.
PS
Учитывая то, что эти классы будут использоваться повсеместно их применение намного выгодней, да и существенно упростит работу над кодом...
вот потому и пишут люди свои простенькие алгоритмы, абсолютно не пользуясь громоздкими библиотеками. человек хотел двигать стоплос, в результате его код вырос минимум раз в 5 ).. аналогично и скрытые ошибки увеличили свое существование... проще выдрать необходимых несколько строк и заставить их работать
Тут ошибочки логические есть:
1. Его код не увеличился, поскольку классы находятся во внешних библиотеках;
2. Ошибки в этих классах очень быстро будут находиться (по сравнению с самопальными аналогами). исключение составят только более продуманные собственные решения...
PS
Я не говорю уже о моменте "стандартизации" кода. Для себя конечно можно придумать иные решения, но эти решения не будут стандартными и смогут работать только в определенных условиях...
Давайте.
Вы можете досказать ответ на мой вопрос? :)
Досказываю...
Попробовал реализовать эксперт из статьи https://www.mql5.com/ru/articles/100 на классах стандартной библиотеки.
То что получилось выкладываю.
К сожалению, идентичной торговли не получилось, так как код из статьи имеет ошибки.
Файл ExpertADX-MA.mq5 нужно положить в Experts\Advisors. - это эксперт
Файл SignalADX-MA.mqh нужно положить в Include\Expert\Signal. - это класс торговых сигналов
Файл TrailingFixedPips.mqh нужно положить в Include\Expert\Trailing (с заменой). - файл из стд. поставки с небольшими изменениями
Файл Expert.mqh нужно положить в Include\Expert (с заменой). - файл из стд. поставки с небольшими изменениями
Изменения стд. поставки пройдут в следующем билде.
Ошибки в коде эксперта в статье Пошаговое руководство по написанию MQL5-советников для начинающих исправлены.
Пожалуйста скачайте обновленный вариант кода советника.Ошибки в коде эксперта в статье Пошаговое руководство по написанию MQL5-советников для начинающих исправлены.
Пожалуйста скачайте обновленный вариант кода советника.Ааа... Всю задачу решили :)
А то я чуть голову не сломал.
Interesting: Это стандартные классы, которые поставляются вместе с терминалом и достаточно хорошо описаны в справке.
Пожалуйста скачайте обновленный вариант кода советника.
я так думаю, вы и ExpertSignal исправили у себя?
в папке C:\Program Files\MetaTrader 5\MQL5\Include\Expert
у меня стоит вот с этой датой: Revision 2010.07.12
я так думаю, вы и ExpertSignal исправили у себя?
в папке C:\Program Files\MetaTrader 5\MQL5\Include\Expert
у меня стоит вот с этой датой: Revision 2010.07.12
А что, компилятор даёт сообщение об ошибке?
Да. показывает на CiClose *m_close; в SignalADX-MA.mqh
в ExpertADX-MA.mq5
в блоке:
int OnInit(){
//--- creation of all necessary objects
//создание всех необходимых объектов
if(ExtExpert.Init(Symbol(),Period(),false,InpMagicNumber))
{
if(!ExtExpert.InitSignal(new CSignalADX_MA)) return(-2);
if(!ExtExpert.InitTrailing(new CTrailingFixedPips)) return(-3);
//--- ok
return(0);
}
//--- failed
// в случае неудачи
ExtExpert.Deinit(); //
return(-1);
}
return(-1) стоят с возвращаемыми значениями - 2 -3 - 1 ?
Назначение возвращаемых значений ?
или это просто по инерции поставил?