Вопросы от начинающих MQL4 MT4 MetaTrader 4 - страница 211

 

Привет знатокам! 

Подскажите, пожалуйста, можно ли поставить МТ4 на VPS сервер с операционкой Linux? Будут ли нормально на таком МТ работать советники?

 

Здравствуйте.

Делаю EA для контроля и риск-менеджмента. Какой самый правильный путь запретить всем работающим EA торговать? Например, по конкретному символу мы запрещаем всем запущенным EA входить в новые сделки. К сожалению, нет исходников всех работающих EA и использовать глобальные переменные не получится.

 

odyn:

с операционкой Linux?

Михаил работает на Линуксе. Пишите ему https://www.mql5.com/ru/users/nikelodeon

Mihail Marchukajtes
Mihail Marchukajtes
  • www.mql5.com
Добавил тему Целевая функция в тестере Коллеги решил выделить вопрос в отдельную тему. При оптимизации параметров советника существует ряд стандартных функций, а так же "Максимум пользовательского критерия" что позволяет производить подбор относительно собственной целевой, пусть даже Если Вы являетесь владельцем инвестиционного фонда и...
 

Добрый вечер!

Помогите пожалуйста со следующим вопросом:

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

Например: если 20 свечей по цене закрытия закрылись выше скользящей средней с периодом 20 то выполняем то-то если ниже то другое.

Спасибо!

Moving Average of Oscillator (OsMA)
Moving Average of Oscillator (OsMA)
  • www.mql5.com
On Balance Volume (OBV) Индикатор Балансового Объема (On Balance Volume, OBV) связывает объем и изменение цены, сопровождавшее данный объем. Momentum Индикатор движущей силы рынка (Momentum) измеряет величину изменения цены финансового инструмента за определенный...
 
leonerd:
Какой самый правильный путь запретить всем работающим EA торговать?

Если Вы не можете менять код советника, тогда отключайте автоторговлю. Вот код, не мой:

#include <WinUser32.mqh>

#import "user32.dll"
// Считывает описатель оpгана упpавления, содеpжащийся в указанном блоке диалога. Возвpащаемое значение: идентификатоp оpгана упpавления; 0 - если указанный оpган упpавления не существует.
int      GetDlgItem(int hDlg,        // Блок диалога, содеpжащий оpган упpавления.
                     int nIDDlgItem); // Идентификатоp оpгана упpавления.
// Возвращает идентификатор hierarchyid, представляющий n-го предка данного элемента.
int      GetAncestor(int hWnd,      // Идентификатоp окна.
                      int gaFlags);  // Уровень окна от текущего окна (1, 2, 3...).
int      SendMessageA(int  hWnd,      // Окно, пpинимающее сообщение или $FFFF для посылки всем всплывающим окнам в системе.
                       int  Msg,       // Тип сообщения.
                       int  wParam,    // Дополнительная инфоpмация о сообщении.
                       int& lParam[]); // Дополнительная инфоpмация о сообщении.
                  
#import

void start() {
   if (IsExpertEnabled()) ExpertEnabled (false);
      else ExpertEnabled (true);
}

// Функция включения/отключения эксперта.
void ExpertEnabled (bool Switch) // TRUE - включить эксперт, FALSE - отключить эксперт.
{
  int HandlWindow = WindowHandle (Symbol(), Period()); // Системный дескриптор окна.
  int HandlMT4;        // Системный дескриптор окна МТ4.
  int HandlToolbar;    // Системный дескриптор окна инструментов.

  int    ArIntTemp[1]; // Временный массив.
  //----
  if ((Switch && !IsExpertEnabled()) || (!Switch && IsExpertEnabled()) )  {
     HandlMT4 = GetAncestor (HandlWindow, 2); 
     HandlToolbar = GetDlgItem (HandlMT4, 0x63);
     ArIntTemp[0] = HandlToolbar;
     SendMessageA (HandlMT4, WM_COMMAND, 33020, ArIntTemp);
  }
}
 
Xopb:
   

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

1. Решите для себя с какого момента хотите считать.

2. Создайте массив с двумя элементами.

3. Добавляйте единичку на каждой свече в нужный элемент.

4. Решите, когда хотите остановить подсчёт.


Скользящая средняя это запаздывающий хвост цены. Профит там не живёт.

 
Aleksei Stepanenko:

1. Решите для себя с какого момента хотите считать.

2. Создайте массив с двумя элементами.

3. Добавляйте единичку на каждой свече в нужный элемент.

4. Решите, когда хотите остановить подсчёт.


Скользящая средняя это запаздывающий хвост цены. Профит там не живёт.

Aleksei спасибо!

Подскажите пожалуйста, куда тут добавить массивы и единичку чтобы работало? 

for(int i=1;i<=10;i++)            //допустим надо проверить 10 свечей выше или ниже МА в момент когда обратились к этому оператору
     {    
     double hig10 = iMA (NULL,PERIOD_H1,10, 0, MODE_SMA, PRICE_CLOSE, i);
      if (hig10>iClose(Symbol(),PERIOD_H1,i))
      {
    // тут выполняем - если все 10 свечей выше МА     
      }
      else
      {
     //тут выполняем - если если хотябы одна из свечей закрылась нижн MA
      }
      
     } 
     




 

Лучше даже сделать структуру

struct Count
   {
   int up;
   int dn;
   } count;

не забывайте обнулять элементы до начала использования

count.up=0;
count.dn=0;

и дальше увеличивайте счёт, где надо

count.up++;

//или
count.dn++;

потом сравнивайте

if(count.up>10)
   {

   }
Сейчас Вы сделали обход циклом 10 предыдущих свечей на каждой новой свече. Это не рационально. Нужно всегда избавляться от лишних циклов, запоминая результаты расчётов предыдущих значений. В Вашем случае, при поступлении новой свечи просто увеличивайте счёт при выполнении условия, а если условие не выполняется, то отнимайте. И проверяйте, нет ли превышения. Ваш цикл на 10 элементов не нужен, только основной.
 
Aleksei Stepanenko:

Если Вы не можете менять код советника, тогда отключайте автоторговлю. Вот код, не мой:

Спасибо. Этот код отключит автоторговлю для конкретного эксперта, прикрепленного к указанному графику? Или общую автоторговлю в терминале?

 

Всю торговлю, эта кнопка: