Привет. Написал утилиту: ограничивает количество торговых сделок для выбранных роботов по MagicNumber. Она всё хорошо, без проблем. Но, запустилась один только раз. Вот, приложил исходный файл. Посмотрите, заранее благодарю.
Файлы:
Maximum.mq4
3 kb
- Идеи для создания торгового робота!
- Как сделать чтоб один робот на одном счете работал одновременно на разных парах?
- Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6.
Alexander Bykov:
Привет. Написал утилиту: ограничивает количество торговых сделок для выбранных роботов по MagicNumber. Она всё хорошо, без проблем. Но, запустилась один только раз. Вот, приложил исходный файл. Посмотрите, заранее благодарю.
ааа эта функция разве просто не клацает общую кнопку автоторговли в терминале и всё..., процесс вырубания отдельного ЕА на отдельном графике выглядит сильно сложнее
Привет. Написал утилиту: ограничивает количество торговых сделок для выбранных роботов по MagicNumber. Она всё хорошо, без проблем. Но, запустилась один только раз. Вот, приложил исходный файл. Посмотрите, заранее благодарю.
Тут и конструктивная ошибка (при проектировании кода), и синтаксическая. Компилятор о ней как раз и говорит.
Ни проще было пройтись по истории закрытых сделок (ну или по уже открытым) и пересчитать те, у которых есть заданный магик на заданном символе. Если их число >= тотал, то ретурн?
Ваше условие (Ваш код) если выполнится 1 раз, то вырубит всю автоторговлю. Значит другие советники не смогут продолжать работу. А представьте, что они тоже открыли сделки, которые им нужно сопровождать. Отжимая кнопку автоторговли Вы отнимаете у них эту возможность.
Это, помогите переписать "void ExpertEnabled" для MT5, пж-ста.
//+------------------------------------------------------------------+ //| M.mq5 | //| Copyright 2025, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright " Byokov Copyright 2025, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" #property strict #include <WinUser32.mqh> #import "user32.dll" int GetAncestor(int hwnd,int gaFlags); #import input int Total; input int MagicNumber, MagicNumber2, MagicNumber3, MagicNumber4, MagicNumber5, MagicNumber6, MagicNumber7, MagicNumber8, MagicNumber9, MagicNumber10, MagicNumber11, MagicNumber12, MagicNumber13, MagicNumber14, MagicNumber15; void AccountInfoInteger(bool ACCOUNT_TRADE_EXPERT) { int HandlWindow=WindowHandle(Symbol(),Period()); // Системный дескриптор окна. int HandlMT5=GetAncestor(HandlWindow,2); // Системный дескриптор окна МТ4. SendMessageA(HandlMT5,WM_COMMAND,33020,0); } //void ExpertEnabled(bool Switch) // TRUE - включить эксперт, FALSE - отключить эксперт. //+------------------------------------------------------------------+ void OnInit() { int i=0; double order_magic=OrderGetInteger(ORDER_MAGIC); if(i>=Total&& order_magic==MagicNumber&& order_magic==MagicNumber2&& order_magic==MagicNumber3&& order_magic==MagicNumber4&& order_magic==MagicNumber5&& order_magic==MagicNumber6&& order_magic==MagicNumber7&& order_magic==MagicNumber8&& order_magic==MagicNumber9&& order_magic==MagicNumber10&& order_magic==MagicNumber11&& order_magic==MagicNumber12&& order_magic==MagicNumber13&& order_magic==MagicNumber14&& order_magic==MagicNumber15) { ACCOUNT_TRADE_EXPERT==FALSE; AccountInfoInteger(ACCOUNT_TRADE_EXPERT); } if(i=0) { ACCOUNT_TRADE_EXPERT==TRUE; AccountInfoInteger(ACCOUNT_TRADE_EXPERT); } //+------------------------------------------------------------------+ } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+Ну вот так, вроде того.
К сожалению, нет. AccountInfoInteger() - это уже существующая системная функция в MQL5, поэтому переписывать её код нет смысла. Она позволяет получить заданное в параметре целочисленное свойство счета. Например, узнать, разрешена ли сейчас торговля советником. А это не то, что вы хотите, судя по всему.
Если представленный вами код писал ИИ, то врядли он вам поможет.
Если вы хотите ограничить количество сделок, совершаемых советниками, для которых у вас нет исходного кода, то в общем виде эта задача практически не решаема. Написав и запустив свой советник, вы не сможете с его помощью вмешиваться в работу других запущенных советников.
Сейчас ваш первоначальный код просто запрещает "незаконным" способом работу всем советникам в терминале без какого либо разбору по магическому номеру. В том числе перестает работать и ваш запрещающий советник. Поэтому и срабатывает он только один раз: запретил всем работу и потом разрешить её становится уже некому.
Alexander Bykov #:
Ну вот так, вроде того.
Ну вот так, вроде того.
на мт5 вроде номер кнопки другой
void ExpertEnabled(bool Switch) // TRUE - включить эксперт, FALSE - отключить эксперт. { if(Switch == TerminalInfoInteger(TERMINAL_TRADE_ALLOWED)) return; int HandlWindow=ChartGetInteger(0,CHART_WINDOW_HANDLE); // Системный дескриптор окна. int HandlMT5=GetAncestor(HandlWindow,2); // Системный дескриптор окна МТ5. SendMessageW(HandlMT5,WM_COMMAND,32851,0); }
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь