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

 
Artyom Trishkin:

Не понятно что нужно в итоге - какие-то разрозненные мысли.


Это два вопроса в одном посте при решении одной и той же задачи :-)

1. Как возвращать ошибку создания объекта из функции которая должна возвращать данные

2. Есть ли способ перебирать позиции по заданному символу не используя каждый раз PositionsTotal?

 
psyman:


Это два вопроса в одном посте при решении одной и той же задачи :-)

1. Как возвращать ошибку создания объекта из функции которая должна возвращать данные

2. Есть ли способ перебирать позиции по заданному символу не используя каждый раз PositionsTotal?

1. Зачем функция создания объекта, которая просто должна создать объект и вернуть true в случае успеха, или false в случае ошибки, должна ещё что-то там возвращать? Не должна. Функция должна делать что-то одно и возвращать результат своей работы. Либо, если хочется делать монстра, то возвращайте данные через переменные по ссылке.

2. Смотря какой у вас тип счёта.

3. Просто откройте справку наконец - там много "открытий чудных"

 
Artyom Trishkin:

1. Зачем функция создания объекта, которая просто должна создать объект и вернуть true в случае успеха, или false в случае ошибки, должна ещё что-то там возвращать? Не должна. Функция должна делать что-то одно и возвращать результат своей работы. Либо, если хочется делать монстра, то возвращайте данные через переменные по ссылке.

2. Смотря какой у вас тип счёта.

3. Просто откройте справку наконец - там много "открытий чудных"


Я вас понял, спасибо, буду упрощать код.

Тип счета хедж.

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

 
Roman Shiredchenko:

Товарищи - посмотрите индикатор на правильность. Там одна формула Значение = (Open[0]-SMA(P,n))/SMA(P,n))*100%.

Набрасываю на график - все считает и рисует. Начинаю проверять на каком либо баре на калькуляторе его значение - не совпадает с нарисованным...

Вот пример, считаю на калькуляторе Опен 1,0178, МА(13) 1,0182 по формуле ((1,0178-1,0182)/1,0182) * 100% - в итоге на калькуляторе -0,0393. А на графике МТ4 -0,0929. Ошибка в коде или калькулятор не правильно там какие-нибудь значения считает? Просьба помочь. Индикатор прилагаю.

У вас в формуле Open[0] , так задумано.

 
Alekseu Fedotov:

У вас в формуле Open[0] , так задумано.

ну, да. Так я и смотрю по ценам открытия... Там опен с клозе похоже... спутались...
 
Seric29:
Как заполнить значениями 4ёх мерный массив такого формата int Mas[1][2][2][2], как присвоить значение каждой ячейке данного массива, имеется в виду такая запись например есть 2умернй массив int Arr[1][2]={3,4};, как заполнится 4ёхмерный?

Используйте массив структур, это в разы проще, понятнее и производительнее в плане выполнения программы

struct My_St
{
   datetime tm; 
   int      mg;    
   double   tp;     
   double   sl;     
};
My_St st[];
 

у меня несколько инструментов, аналитически размечены.

хочу изменить цветовую схему их.

не хочу вручную всё делать, хочу умным образом.

могу как-нибудь? например, весь текст у меня - черным, а я хочу белым. 

спасиб

 
Roman Shiredchenko:
ну, да. Так я и смотрю по ценам открытия... Там опен с клозе похоже... спутались...

Ну я не знаю,задумано так задумано.


Здесь мысль какая была,

если берется значение машки каково либо бара (из History    =5000;      // Колич.баров в расчётной истории)

то и опен того же бара, но ни как ни нулевого,

ваша формула  (Open[0]-SMA(P,n))/SMA(P,n))*100%


Роман, успехов

 
Igor Makanu:

многомерные массивы обычно в циклах заполняют нужными значениями - так сложнее ошибиться, для четырехмерного массива что то такое должно быть, но могу ошибиться:

Нет вы не ошиблись моя ошибка что я записывал так

A[1][2][4][2] = {{{1,2}, {0,2}, {1,2}, {1,2}},{{1,2}, {1,2}, {1,2}, {1,2}}}, 

а нужно было писать так

A[1][2][4][2] = {{{{1,2}, {0,2}, {1,2}, {1,2}},{{1,2}, {1,2}, {1,2}, {1,2}}}}, 

По краям 4 скобочки а у меня 3, читается это дело так

A[1] - означает 1ну строку, один ярус
A[1][2] 2ка в следующих скобочках говорит о том что мы имеем дело с 2мя 3ёх-мерными массивами, другими словами, это как 2 параллельных мира
A[1][2][4][2] - последующие [4][2] описываю 3ёхмерный массив, т.е. каждый из массивов имеет 4 столбца, и в каждом по 2 значения вот пример
{{1,2}, {0,2}, {1,2}, {1,2}} 4 столбца в каждом по значения

В общем спасибо, если я доживу то буду с этим работать.

 
Seric29:

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

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