Бета-тестирование MetaTrader 5 началось! - страница 104

 

Разбирался с поставляемыми классами.

bool C_R003::Processing()
{
//--- refresh rates
if(!m_symbol.RefreshRates()) return(false);
//--- refresh indicators
m_indicators.Refresh();
//--- to simplify the coding and speed up access
//--- data are put into internal variables
Ao1_H =m_AO.Main(1); Print("Ao1_H = ", Ao1_H);
Ao2_H =m_AO.Main(2); Print("Ao2_H = ", Ao2_H);

В таком виде индикатор будет не как таймсерия, но если выполнить в фале indikator.mqh команду

//+------------------------------------------------------------------+
//| Constructor CIndicatorBuffer. |
//| INPUT: no. |
//| OUTPUT: no. |
//| REMARK: no. |
//+------------------------------------------------------------------+
CIndicatorBuffer::CIndicatorBuffer()
{
//--- initialize protected data
m_size =0;
m_offset=0; ArraySetAsSeries(m_data, true);
}

то всё будет правильно.

Так надо её выполнять и где лучше?

 
Erm955 >>:

Разбирался с поставляемыми классами.

Не понял о чем Ваш пост. :-(

 

Я испоьльзую 0, 1, 2 бар индикатора АО. Если на стандартном индикаторе, например, АО[1]>AO[2], nо в программе m_AO.Main(1)< m_AO.Main(2); Первый бар там, естественно, одинаковый, а вот нулевой со вторым поменялись местами. То есть из классов я получаю индикаторы не как таймсерии. Поэтому я в конструкторе CIndicatorBuffer::CIndicatorBuffer()
{
//--- initialize protected data
m_size =0;
m_offset=0; ArraySetAsSeries

сделал таймсерию. Но мне кажется это должно быть и так сделано без меня или я что-то не понимаю пока.

 
Erm955 >>:

Я испоьльзую 0, 1, 2 бар индикатора АО. Если на стандартном индикаторе, например, АО[1]>AO[2], nо в программе m_AO.Main(1)< m_AO.Main(2); Первый бар там, естественно, одинаковый, а вот нулевой со вторым поменялись местами. То есть из классов я получаю индикаторы не как таймсерии. Поэтому я в конструкторе CIndicatorBuffer::CIndicatorBuffer()
{
//--- initialize protected data
m_size =0;
m_offset=0; ArraySetAsSeries

сделал таймсерию. Но мне кажется это должно быть и так сделано без меня или я что-то не понимаю пока.

Я точно чего то не понимаю...

Посвятите чем предложенный Вами вариант выгоднее

int handle=iAO(Symbol(),PERIOD_CURRENT);
int create=CopyBuffer(handle,0,0,3,Buff);

а уж массив Buff можно вертеть как Вам заблагорассудится.
 

Уважаемые модераторы!

Хочу вернутся к вопросу бычей свечи(пустотелой) для буферов DRAW_COLOR_CANDLES и DRAW_CANDLES.

Пожалуйста, если уже сделали такие инструменты доведите уже до ФИНИША - ПОЖАЛУЙСТА!!!

 

Вообще в справке жутко не хватает примеров.

Иногда, когда пытаешься реализовать ту или иную идею интересно глянуть как в той или иной ситуации рекомендуют решать задачи разработчики. А то нагородишь кода в 500 строк, вылезет вопрос накидаешь типовую ситуацию, что бы форум не хламить, и после обсуждения окажется в середине кода кардинально менять логику требуется.

Сейчас стараюсь писать максимально приближенно к правилам ООП, это позволяет менять всего лишь какой то объект класса, а основное тело программы как было так и остается неизменным.


Вопрос когда тестер дадите попробовать?

 
betmen >>:

Вопрос когда тестер дадите попробовать?

+1

 

Да нет, в процедурном виде я давно уже написал свой советник. Ну а сейчас я взял пример, поставляемый вместе с терминалом МАСД, который написан с использованием классов и метотодов, также поставляемых разработчиками в файлах: indicator.mqh, indicators.mqh....Теперь перевожу свой советник, используя поставляемые классы. Воообщем-то почти всё заработало, но вот только индикатор АО получился не как таймсерия. Вроде по примеру Macd Samle.mq5 нигде нет явного использования ArraySetAsSeries, но мне пришлось влезть в стандртные классы разработчиков. Я и подумал: может чего-то где-то не уразумел: цепочка классов-то длинная?

 
Erm955 >>:

Вроде по примеру Macd Samle.mq5 нигде нет явного использования ArraySetAsSeries, но мне пришлось влезть в стандртные классы разработчиков. Я и подумал: может чего-то где-то не уразумел: цепочка классов-то длинная?

Не собираюсь использовать стандартные классы.

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

Тут над каждым классом не с напильником, а с микроскопом и лазером сидеть надоть.


ИМХО.

 

Кстати о классах и методах, вернее о том, что теперь, ввиду написания их собственных как файлы,

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

Не уверен, но сужу по упомянутому выше МАКДу, который лежит щас в двух версиях и фиг знает где правильный.

(время создания файлов "потерялось", так что этот ориентир не стоит напоминать... ;)))

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