[АРХИВ!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 4. - страница 433

 

В документации сказано, что для вызова сторонних индикаторов нужно применять функцию iCustom.

В данной функции вторым параметром является timeframe. Если у меня в индикаторе этот параметр выступает отдельно, и я его буду указывать дальше в параметрах функции iCustom, после параметра name есть же место, чтобы вписать список параметр передаваемых их индикатора.

Так вот. Я в любом случае буду с индикатора передавать параметр таймфрейма, который в индикаторе необходим. Если указывать тот же параметр в 2 местах, это не логично. Тогда как правильнее поступить?

 
hoz:

В документации сказано, что для вызова сторонних индикаторов нужно применять функцию iCustom.

В данной функции вторым параметром является timeframe. Если у меня в индикаторе этот параметр выступает отдельно, и я его буду указывать дальше в параметрах функции iCustom, после параметра name есть же место, чтобы вписать список параметр передаваемых их индикатора.

Так вот. Я в любом случае буду с индикатора передавать параметр таймфрейма, который в индикаторе необходим. Если указывать тот же параметр в 2 местах, это не логично. Тогда как правильнее поступить?


Всё в порядке. Всё надо указать. Второй параметр это ТФ, на котором физически прикрепляется индикатор, пользовательский ТФ это откуда индикатор берёт данные для расчёта. Конечно, можно второй параметр убрать из кода индикатора, если есть логика в этом.
 
Zhunko:
Всё в порядке. Всё надо указать. Второй параметр это ТФ, на котором физически прикрепляется индикатор, пользовательский ТФ это откуда индикатор берёт данные для расчёта. Конечно, можно второй параметр убрать из кода индикатора, если есть логика в этом.

Теперь понятно. Благодарю.

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

Ведь если вписать переменные в iCustom и не объявить их в советнике, то при компиляции сразу в журнале пишится, что те переменные, которые я вписал не объявлены.

 
Кто знает, в каком советнике из Code Base можно подсмотреть, как закодирована функция OrderCloseBy() со всеми пирогами. Смотрел скрипт closeby в учебнике, но что-то не догоняю, как сделать функцией, чтобы вызывать из советника и т.д. Может, надоумите, что делать! Спасмбо!
 
borilunad:
Кто знает, в каком советнике из Code Base можно подсмотреть, как закодирована функция OrderCloseBy() со всеми пирогами. Смотрел скрипт closeby в учебнике, но что-то не догоняю, как сделать функцией, чтобы вызывать из советника и т.д. Может, надоумите, что делать! Спасмбо!

Тут смотрели? https://docs.mql4.com/ru/trading/OrderCloseBy
 
drknn:

Тут смотрели? https://docs.mql4.com/ru/trading/OrderCloseBy

Конечно, смотрел! Принцип я понимаю, но не получается, а надо использовать возможность сэкономить на спреде. Потому хотел посмотреть примеры, которые работают. Просматриваю в Code Base, но пока безуспешно. Что-то никто не использует в этих советниках это взаимное закрытие. Надеюсь встретить в сборе, а не по винтикам. Доброй ночи! Может, утро вечера мудренее!
 
Подскажите как удалять трендовые линии,индикаторы и т.д., на обычном компе в винде я делала правой кнопкой мышки после их выделения, а на imac не знаю как. И еще так же не могу найти как добавить gold в общий список ?
 
Как удалять линии на IMAC?
feeje:
Подскажите как удалять трендовые линии,индикаторы и т.д., на обычном компе в винде я делала правой кнопкой мышки после их выделения, а на imac не знаю как. И еще так же не могу найти как добавить gold в общий список ?
 

Доброго времени суток. ЛЮДИ, НУ КТО-НИБУДЬ, ОТВЕТЬТЕ ПОЖАЛУЙСТА НА ВОПРОС (3-й раз уже размещаю). Вопрос по файловому указателю... В книге по MQL4, к-я находится на MQL4.community в главе "Стандартные функции", в разделе "Файловые операции" приведен пример скрипта timetablenews.mq4, к-й предназначен для считывания данных из файла и отображения графических объектов в окне финансового инструмента:

//--------------------------------------------------------------------
// timetablenews.mq4
// Предназначен для использования в качестве примера в учебнике MQL4.
//--------------------------------------------------------------- 1 --
int start()                            // Спец. функция start
  {
//--------------------------------------------------------------- 2 --
   int Handle,                         // Файловый описатель
       Stl;                            // Стиль вертикальной линии
   string File_Name="News.csv",        // Имя файла
          Obj_Name,                    // Bмя объекта
          Instr,                       // Название валюты
          One,Two,                     // 1я и 2я чать названия инстр.
          Text,                        // Текст описания события
          Str_DtTm;                    // Дата и время события(строка)
   datetime Dat_DtTm;                  // Дата и время события(дата)
   color Col;                          // Цвет вертикальной линии
//--------------------------------------------------------------- 3 --
   Handle=FileOpen(File_Name,FILE_CSV|FILE_READ,";");// Открытие файла
   if(Handle<0)                        // Неудача при открытии файла
     {
      if(GetLastError()==4103)         // Если файла не существует,..
         Alert("Нет файла с именем ",File_Name);//.. извещаем трейдера 
      else                             // При любой другой ошибке..
         Alert("Ошибка при открытии файла ",File_Name);//..такое сообщ
      PlaySound("Bzrrr.wav");          // Звуковое сопровождение
      return;                          // Выход из start()      
     }
//--------------------------------------------------------------- 4 --
   while(FileIsEnding(Handle)==false)// До тех пор, пока файловый ..
     {                                // ..указатель не в конце файла
      //--------------------------------------------------------- 5 --
      Str_DtTm =FileReadString(Handle);// Дата и время события(дата)
      Text     =FileReadString(Handle);// Текст описания события
      if(FileIsEnding(Handle)==true)   // Файловый указатель в конце
         break;                        // Выход из чтения и рисования
      //--------------------------------------------------------- 6 --
      Dat_DtTm =StrToTime(Str_DtTm);   // Преобразование типа данных
      Instr    =StringSubstr(Text,0,3);// Извлекаем первые 3 символа
      One=StringSubstr(Symbol(),0,3);// Извлекаем первые 3 символа
      Two=StringSubstr(Symbol(),3,3);// Извлекаем вторые 3 символа
      Stl=STYLE_DOT;                   // Для всех - стиль пунктир
      Col=DarkOrange;                  // Для всех - цвет такой
      if(Instr==One || Instr==Two)     // А для событий по нашему ..
        {                             // .. финансовому инструменту..
         Stl=STYLE_SOLID;              // .. такой стиль..
         Col=Red;                      // .. и такой цвет верт. линии
        }
      //--------------------------------------------------------- 7 --
      Obj_Name="News_Line  "+Str_DtTm;     // Имя объекта
      ObjectCreate(Obj_Name,OBJ_VLINE,0,Dat_DtTm,0);//Создаем объект..
      ObjectSet(Obj_Name,OBJPROP_COLOR, Col);       // ..и его цвет,..
      ObjectSet(Obj_Name,OBJPROP_STYLE, Stl);       // ..стиль..
      ObjectSetText(Obj_Name,Text,10);              // ..и описание 
     }
//--------------------------------------------------------------- 8 --
   FileClose( Handle );                // Закрываем файл
   PlaySound("bulk.wav");              // Звуковое сопровождение
   WindowRedraw();                     // Перерисовываем объекты
   return;                             // Выход из start()
  }
//--------------------------------------------------------------- 9 --

Ниже, при анализе данного скрипта в Книге по MQL4 приведена следующая фраза: "если указанную проверку (2 последние строки в блоке 5-6) удалить, то в процессе исполнения программы будет создан лишний объект. И лишь после этого сработает условие окончания цикла while и управление будет передано в блок 8-9"

Правильно ли я понимаю???... Файловый указатель находится НЕ МЕЖДУ СИМВОЛАМИ ТЕКСТА (напр.: тек|ст, где | — файловый указатель), а является указателем С ВЫДЕЛЕНИЕМ, напр.: текст, где к — символ "к", к-й выделен файловым указателем. Этим и объясняется необходимость наличия строк (см. стр.164):

      if(FileIsEnding(Handle)==true)   // Файловый указатель в конце
         break;                        // Выход из чтения и рисования
      //--------------------------------------------------------- 6 --

Действительно. На предпоследней итерации, после создания ПОСЛЕДНЕГО объекта

2007.05.11 18:30;JPY Промышленное производство

файловый указатель находится в позиции последнего объекта, т.е.:

2007.05.11 18:30;JPY Промышленное производство

(где о — символ "о", к-й выделен файловым указателем). Тогда при передаче упра­вления в заголовок оператора while, функция FileIsEnding(handle), очевидно вернет true, т.к. файловый указатель находится НЕ В КОНЦЕ файла, а на ПОСЛЕДНЕМ СИМВОЛЕ этого файла. Тогда при выполнении первых двух строк файловый указатель переместится на ПУСТОЕ место и при отсутствии строк

      if(FileIsEnding(Handle)==true)   // Файловый указатель в конце
         break;                        // Выход из чтения и рисования
      //--------------------------------------------------------- 6 --

скрипт создаст графический (т.е. линию) с пустым описанием и координатой времени, к-я соответствует 0. Это и имеется в виду во фразе: "если указанную проверку (2 последние строки в блоке 5-6) удалить, то в процессе исполнения программы будет создан лишний объект."

Вопрос: правильно ли я понимаю:

а) определение файлового указателя;

б) смысл фразы "если указанную проверку (2 последние строки в блоке 5-6) удалить, то в процессе исполнения программы будет создан лишний объект. И лишь после этого сработает условие окончания цикла while и управление будет передано в блок 8-9"

P.S. Чтобы не захламлять форум, заранее благодарю за ответ

 
Подскажите пж. как закрыть часть прибыли (например: 50% от открытой сделки) ?
Причина обращения: