Хочу нажать кнопку "Советники" из советника. - страница 2

 

Вот я упростил код, выбросив всё лишнее:

#include <WinUser32.mqh>
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
//----
   ExpertEnabled(false);
//----
   return(0);
  }
//+------------------------------------------------------------------+
void ExpertEnabled(bool Switch) // TRUE - включить эксперт, FALSE - отключить эксперт.
{
  if (Switch == IsExpertEnabled()) return;
  int HandlWindow = WindowHandle(Symbol(), Period()); // Системный дескриптор окна.
  int HandlMT4=GetAncestor(HandlWindow, 2);        // Системный дескриптор окна МТ4.
  SendMessageA(HandlMT4, WM_COMMAND, 33020, 0);
} 
 
sanyooooook:

Знаю тема мусолилась, но нарыл только для одного советника, а мне нужно все разом )

ЗЫ: "Семерых одним ударом..." )))


Если все семеро - Ваши, то достаточно использовать одну глобальную переменную терминала, при определенном значении которой торговля будет запрещена.
 

будем сокращать ?

SendMessageA(GetAncestor(WindowHandle(Symbol(), Period()), 2), WM_COMMAND, 33020, 0);

хотя я точно знаю, что Александр и сам это прекрасно сделает

 
FAQ:


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

все это хорошо,вставить код в советник не сложно для опытного пользователя,

но для не опытного это становится не преодолимой задачей, вот меня и попросили сотворить всеобщий выключатель,

ставится на отдельный график и в нужный момент отключает автоторговлю.

 
Zhunko:
Ещё раз напомню про библиотеку :-)) И тогда выше опубликованный код превратиться в пару строк.

соорудил вот такую конструкцию но что-то не хотит )

             PostMessageA (WindowHandle(Symbol(),Period()), WM_COMMAND, 33020, 0);
 

das ist gut )

//+------------------------------------------------------------------+
//|                                                          sow.mq4 |
//|                      Copyright © 2011, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

#include <ServicesMT4.mqh>

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
    while(!IsStopped())
    {
          ServiceSetExperts();
          Sleep(1000);
    }
             //PostMessageA (WindowHandle(Symbol(),Period()), WM_COMMAND, 33020, 0);
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
sanyooooook:

ну я говорил что это нашел, это советник сам себя отключает, а мне нужно что бы всех разом отключал одной кнопкой.
Так он и отключает всех разом. Кнопка "Советники" действует на ВСЕХ советников, вы что этого не знаете?
 

Надо темы объединить - "хочу нажать кнопку и промахиваюсь, что делать?"

 
Может быть расширить постановку вопроса? Отключить одновременно всех советников во всех терминалах?