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

 
Alexey Kozitsyn:

Есть несколько способов получить текущие цены:

1. Для любого символа: если хотите получить гарантировано текущие цены - перед их использованием вызывайте функцию SymbolInfoDouble() c нужными идентификаторами.

2. Для текущего символа также можно получить текущие цены через предопределенные переменные Bid и Ask. Вот как раз они могут устареть, поэтому если долго выполняется функция OnTick() - то их следует обновить посредством RefreshRates().

спасибо!
 
Предупреждение компилятора:

"possible loss of data due to type conversion"

Как побороть данное предупреждение?
string singleElement+=CharToString(StringGetCharacter(stringOfSymbols,i));
 
Maksym Mudrakov:
Предупреждение компилятора:

"possible loss of data due to type conversion"

Как побороть данное предупреждение?
string singleElement+=CharToString(StringGetCharacter(stringOfSymbols,i));

Нужно точно знать типы возвращаемых функциями значений и использовать явное приведение. https://www.mql5.com/ru/docs/basis/types/casting 

Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Основы языка / Типы данных / Приведение типов - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Artyom Trishkin:
Шаблон у вас не полный - вы скорее всего не задали в мастере буферы индикатора, в которые будут записываться посчитанные данные.

Но основной принцип для большинства индикаторов таков:

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   if(rates_total<1) return(0);              // проверка достаточности данных для расчёта индикатора, если не достаточно - выходим
                                             // если для расчёта требуются некое количество баров слева от индекса цикла, ...
                                             // ... то проверять нужно это количество, а не 1
  
   //--- Действия для полного перерасчёта индикатора
   int limit=rates_total-prev_calculated;    // количество посчитанных уже баров
   if(limit>1) {                             // если количество больше 1, значит имеем новые данные, и нужно полностью пересчитать индикатор
      limit=rates_total-1;                   // задаём количество требуемых для расчёта баров равным количеству баров в истории,
                                             // если для расчёта требуются некое количество баров слева от индекса цикла, ...
                                             // ... то это количество тоже нужно вычесть из rates_total чтобы не выйти за пределы массива
                                             // так же тут нужно при необходимости произвести инициализацию буферов индикатора
      }
  
   //--- Основной цикл индикатора
   for(int i=limit; i>=0; i--) {
      // тут выполняем нужные расчёты и записываем их результат в нужные буферы, например:
      ExtMapBuffer[i]=(open[i]+high[i]+low[i]+close[i])/4.0;   // Выведем на график среднюю цену каждой свечи (OHLC/4.0)
      }
  
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
Артем, в компиляторе выдало ошибку:  'ExtMapBuffer' - undeclared identifier

 
Andrey Koldorkin:
Артем, в компиляторе выдало ошибку:  'ExtMapBuffer' - undeclared identifier

Естественно выдаст. Я ж его "от балды" написал. А до того, как написал пример, я вам сказал, что у вас в шаблоне не задано ни одной внешней переменной (да это и не обязательно), и не задано ни одного буфера для вывода расчётов индикатора на экран. Есть конечно индикаторы, в которых не используется вывод при помощи буфера, но не в вашем случае.

Именно потому я просто вписал сам этот буфер. Вам же нужно создать заново шаблон, но подойти к этому простейшему действу всё же более ответственно, и задаться вопросом - "а о чём же меня спрашивает мастер создания индикатора, и чего ж ему нужно?", почитать что он там у вас просит, а не просто нажимать кнопки "далее"
 
здравствуйте! где-то месяца четыре назад стал изучать MQL4 по учебнику Ковалёва. Плюс к ним есть видосы  . Смотрю видио ,изучаю учебник,повторяю коды ,которые используются там. конечно по теории много чего узнал .но вот писать коды самостоятельно не могу. даже есть идеи, алгоритм примерно знаю. всё изучаю досконально.может я спешу? Я понимаю что это очень серьёзное  дело и для его освоения надо время. но я точно знаю надо практика. надо простые задачки и писать их  и чтоб кто то их проверял например вы тогда я смогу сдвинуться! ещё проблема в том что произошло обновление, книга и видосы до обновления, даже повторяю за книгой код , компилирую , выдаёт ошибки,смотрю как баран на новые ворота...... общем вот такая печалька!
 
FOTOGRAF14:
здравствуйте! где-то месяца четыре назад стал изучать MQL4 по учебнику Ковалёва. Плюс к ним есть видосы  . Смотрю видио ,изучаю учебник,повторяю коды ,которые используются там. конечно по теории много чего узнал .но вот писать коды самостоятельно не могу. даже есть идеи, алгоритм примерно знаю. всё изучаю досконально.может я спешу? Я понимаю что это очень серьёзное  дело и для его освоения надо время. но я точно знаю надо практика. надо простые задачки и писать их  и чтоб кто то их проверял например вы тогда я смогу сдвинуться! ещё проблема в том что произошло обновление, книга и видосы до обновления, даже повторяю за книгой код , компилирую , выдаёт ошибки,смотрю как баран на новые ворота...... общем вот такая печалька!

Прочитайте документацию на разок. Учебник местами устарел. Документация с этим поможет. По поводу задач - решайте те же самые задачи, что описаны в учебнике. Прочитали задачу, посмотрели решение, повторили. И так пока не начнет получаться. Лучше брать задачи максимально приближенные к тем, что хотите научиться реализовывать сами.

Все, конечно, ИМХО. 

 
Sergey Gritsay:
у меня все нормально компилируется

Ок, а есть желание объяснить почему не различаются такие объекты? 

если заменить тип объекта то свойства схлопнутся с 2 метками или трендлайнами 

 
Alexey Kozitsyn:

Прочитайте документацию на разок. Учебник местами устарел. Документация с этим поможет. По поводу задач - решайте те же самые задачи, что описаны в учебнике. Прочитали задачу, посмотрели решение, повторили. И так пока не начнет получаться. Лучше брать задачи максимально приближенные к тем, что хотите научиться реализовывать сами.

Все, конечно, ИМХО. 

спасибо!

 
trader781:

Ок, а есть желание объяснить почему не различаются такие объекты? 

если заменить тип объекта то свойства схлопнутся с 2 метками или трендлайнами 

R Какие объекты не различаются? и что значит заменить тип объекта, то свойства схлопнуться?
Причина обращения: