Помогите новичку.... Прошу очень!!!

 

Коллеги, всем добрый день.

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

Значит с чего всё началось...

Пытаясь освоить язык и научится программить (обладаю некоторым опытом в VBA, Delphi, правда ничтожным по сравнению с профи). Считаю, что самый лучший способ - практика. Решил написать советника MACD так, как он в классике. Взял индикатор и начал его полность переделывать. При этом цель была использовать только простейшие функции. Например счтать самостоятельно массив MACD и прочее. МА тоже отдельным кодом.

У меня в результате кое-что получилось. Правда уверен, что коряво, много лишнего. Но вот прилаю полученный вариант, который призван пока просто считать значения.

Мой вопрос... У меня неправильно происходит расчёт SMA, но не могу понять почему... подозреваю, что у меня происходит расчёт при каждом тике, и это приводит к постоянному пересчёту и не соответствию. Значения вывожу в коммент...

Помогите сделать правильно. Как заставить считать показатель токо при окончании формирования нового Бара?

Второй вопрос, как в коммент вывести значения дробной части больше, чем 4 знака после заптятой???

И третий вопрос, кк на график вывести какой-нибудь графический элемент (где прочитать об этом) ???

Спасибо.

Файлы:
 
"для начала" - сюда, пожалуйста. https://www.mql5.com/ru/forum/131853
 
rick1177:

Помогите сделать правильно. Как заставить считать показатель токо при окончании формирования нового Бара?

Второй вопрос, как в коммент вывести значения дробной части больше, чем 4 знака после заптятой???

И третий вопрос, кк на график вывести какой-нибудь графический элемент (где прочитать об этом) ???

1. Вы хотите вывести в коммент показания сформировавшегося бара? выводите 1-й индекс массива buf[1]

2. Самый прстой способ. можно все значения массива умножить на 10 в n-ой степени (100, 1000, 10000, .... )

3. https://docs.mql4.com/ru/objects/ObjectCreate

 
KONDOR:

2. Самый прстой способ. можно все значения массива умножить на 10 в n-ой степени (100, 1000, 10000, .... ), и (или) NormalizeDouble(buf[1],6), где 6 - кол-во знаков после запятой


Что-то как-то левой ногой чесать правое ухо. Насколько я понял вопрос, все что требуется:

Comment (DoubleToStr (buf[1],8));
string DoubleToStr( double value, int digits)
Преобразование числового значения в текстовую строку, содержащую символьное представление числа в указанном формате точности.
 
Вот, очень полезна штука. Нашёл недавно, мне не надо, а поделиться не с кем - все функции Игоря в одном файле.
Файлы:
kimiv.zip  17 kb
 
Да, в Игоря полно всяких полезных штук
 
sayfuji:
Вот, очень полезна штука. Нашёл недавно, мне не надо, а поделиться не с кем - все функции Игоря в одном файле.
Если архив такой же, то он уже опубликован в ветке Только "Полезные функции от KimIV".
https://www.mql5.com/ru/forum/131859/page9#448220
 
Скорее всего такой же, просто очень удобно юзать, когда описание, ссылка, и всё списком. С недавних пор листинг ссылок сам провожу в Excel, да и вообще Excel стал юзать с завидной частотой для задач, которые раньше решал иными путями.
 

Ребята, а помогите ещё с одним моментом....

Я обяъвляю глобальную переменную, на пример

int m1;

Дальше в тексте...

int start()
{

for(j=0; j<limit; j++, m1++) ema();

}

Ловит переменная в цикле некоторое значение... и в рамках цикла запускается функция.

void ema()
{

int ret=MessageBox("П = " +m1+" "+ limit);
}

И вот по какой-то причине у меня переменная не передаётся в функцию...

Что это значит??? Что не так????

 

Люди, ну подскажите плиз....????

 
rick1177:

Люди, ну подскажите плиз....????


где код который можно скомпилировать ?

где журнал в котором показана данная ошибка ?

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