Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1238

 
Oleg Remizov:

А по моим наблюдениям, пользователям нравится, когда советник выводит разную информацию на экран: рисует стрелочки, линии, каналы и прочее для демонстрации бурной деятельности "искусственного интеллекта".)

По индикаторам советник обеспечивает трейлинг. Я хочу этот процесс визуализировать, чтобы пользователю было видно пунктир, по которому тянется StopLoss.

Использовать Трендовую линию, первая точка привязки текущий бар, а вторая на 1 бар в историю, толщину поставить 2-3

 
Vitaly Muzichenko:

Использовать Трендовую линию, первая точка привязки текущий бар, а вторая на 1 бар в историю, толщину поставить 2-3

Отличная идея! Спасибо большое, выглядит как надо.

трендовая

 
ANDREY:

Вот как написано в учебнике Ковалева о инициализации массива одновременно с его объявлением

8.4.4 Инициализация массива 

 Массив может быть инициализирован только константами соответствующего типа.Одномерные и многомерные массивы инициализируются одномерной последовательностью констант, перечисленных через запятую. Последовательность обрамляется фигурными скобками:

int Mas_i[3][4] = { 0, 1, 2, 3,   10, 11, 12, 13,   20, 21, 22, 23 };   

double Mas_d[2][3] = { 0.1, 0.2, -0.3,    -10.2, 1.5, 7.0 };   

bool Mas_b[5] = { false, true, false, true, true }

В инициализирующей последовательности допускается пропуск одной или нескольких констант.

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

ни малейшего желания обсуждать Ваш учебник, не читал

и писали тут на форуме, что учебник устарел и не актуален

двухмерный массив так можно инициализировать:

int arr[2][5] = {{1, 2, 3, 4, 5,}, {6, 7, 8, 9, 10}};
 
Igor Makanu:

ни малейшего желания обсуждать Ваш учебник, не читал

и писали тут на форуме, что учебник устарел и не актуален

двухмерный массив так можно инициализировать:

Спасибо большое за помощь. Вы прямо угадали мои мысли. Я как раз ломаю голову над тем как инициализировать двумерный массив.....но только при помощи функции ArrayInitialize ();
В справочнике по этой функции дается информация об инициализации только одномерного массива, как мне показалось.
Буду очень признателен, если подскажете.

 
ANDREY:

Спасибо большое за помощь. Вы прямо угадали мои мысли. Я как раз ломаю голову над тем как инициализировать двумерный массив.....но только при помощи функции ArrayInitialize ();
В справочнике по этой функции дается информация об инициализации только одномерного массива, как мне показалось.
Буду очень признателен, если подскажете.

ArrayFill() позволяет заполнить все элементы массива нужным значением и её можно использовать для двумерного массива. Посмотрите пример в справке по этой функции.

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

Если нужно каждому элементу задать своё значение, эти функции не подойдут.

Документация по MQL5: Основы языка / Переменные
Документация по MQL5: Основы языка / Переменные
  • www.mql5.com
Переменные должны быть объявлены перед их использованием. Для идентификации переменных используются уникальные имена. Описания переменных используются для их определения и объявления типов. Описание не является оператором. Индексом массива может быть только целое число. Допускаются не более чем четырехмерные массивы. Нумерация элементов массива...
 
Oleg Remizov:

ArrayFill() позволяет заполнить все элементы массива нужным значением и её можно использовать для двумерного массива. Посмотрите пример в справке по этой функции.

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

Если нужно каждому элементу задать своё значение, эти функции не подойдут.

Спасибо большое  за помощь.

 
Oleg Remizov:

К сожалению, шаблон мне не подойдёт. Надо чтобы функция отображения индикаторов была включаема / выключаема в настройках, а отрисовка происходила прямо из советника. Чтобы советник можно было переносить одним файлом.

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

 
Здравствуйте я Новичок и хотел бы уточнить как снимать со счета деньги и потом когда надо будет закинуть
 

Приветствую. 

В МТ4 есть такая вот штука:

#import "user32.dll"
   int SendMessageA(int hWnd, int Msg, int wParam, char &lParam[]);
   int RegisterWindowMessageA(uchar &lParam[]);
#import

string IndiName="TestBot";

void OnStart()
  {
   char buf[];
   StringToCharArray("MetaTrader4_Internal_Message", buf);
   int MT4InternalMsg=RegisterWindowMessageA(buf);
   StringToCharArray(IndiName, buf);
   long handle=ChartGetInteger(0, CHART_WINDOW_HANDLE);
   Print(MT4InternalMsg);
   bool res=SendMessageA((int)handle, MT4InternalMsg, 14, buf);
   Print("Функция SendMessageA завершила работу с результатом: ",res);
  }

Этот код отправляет в окно терминала команду на запуск конкретного советника.

Есть ли подобный функционал и для МТ5 ?

Пробовал вот так:

#import "user32.dll"
   int SendMessageA(long hWnd, long Msg, uint wParam, uchar &lParam[]);
   int RegisterWindowMessageA(uchar &lParam[]);
#import

string IndiName="TestBot";

void OnStart()
  {
   uchar buf[];
   StringToCharArray("MetaTrader5_Internal_Message", buf);
   long MT5InternalMsg=RegisterWindowMessageA(buf);
   StringToCharArray(IndiName, buf);
   long handle=ChartGetInteger(0, CHART_WINDOW_HANDLE);
   Print("Window handle: ", handle);
   Print("Message: ",MT5InternalMsg);
   for(int i = 0; i<100; i++){
      bool res=SendMessageA(handle, MT5InternalMsg, i , buf);
      printf("Функция SendMessageA завершила работу с результатом: %d, номер: %d ",res, i);
   }
  }

Не выходит.

Пробовал сканировать spy++, но сообщений в МТ5 нет от слова совсем, в отличие от МТ4.

Мне нужно именно вызвать окно настроек эксперта.

 
50211108:
Здравствуйте я Новичок и хотел бы уточнить как снимать со счета деньги и потом когда надо будет закинуть

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

Причина обращения: