Используете ли вы CExpert при создании роботов? - страница 3

 
Alexey Volchanskiy:

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

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

Сейчас барабашка подтянется... Он тебе объяснит что работать можно исключительно со стандартной библиотекой.

А по сути, наверное надо хоть как-то к этому привыкать. Ведь если писать для себя или на заказ без открытого кода, то наверное лучше своя библиотека, хотя-бы знаешь где могут быть подводные камни. А в стандартной библиотеке разбираться дольше чем самому написать. Но если заказчик потребует открытый код... всю библиотеку передавать? Или переписывать?

 
Alexey Viktorov:

Но если заказчик потребует открытый код... всю библиотеку передавать? Или переписывать?

Жалко?!
 
BlackTomcat:
Не хватает вариантов ответа. :) Я вот, например, CExpert не использую, но Ctrade - да. Классами организации данных тоже пользуюсь немного. Т.е. использую кое-что в рамках стандартной библиотеки, по необходимости. Без фанатизма и злоупотреблений. :) Я не профи в программировании, процедурное программирование для меня проще и понятнее. Но что-то можно сделать с помощью ООП. Хотя на то, чтобы разобраться и понять, что к чему и почему в ООП и конкретных реализациях стандартной библиотеки, времени уходит немало.

А насчет CTrade у меня нет вопросов - я ее использую, тут все ок с пониманием полезности. С графикой и элементами управления тоже все ок, использую. А вот с CTrade покопался и не понял, что может мне дать ее использование.

Может, мало копался.. 

 
Alexey Volchanskiy:

А все эти стоны о сложностях MQL5 придуманы старичками-процедурщиками, используя СБ, все это снимается. 

MQL5

RSI_handle = iRSI(_Symbol,_Period,rsi_period,PRICE_CLOSE);
ChartIndicatorAdd(ChartID(),0,RSI_handle);
ArraySetAsSeries(RSI_buf,true);
CopyBuffer(RSI_handle,0,1,2,RSI_buf);
rsi=RSI_buf[0];
rsi=NormalizeDouble(rsi,2);

MQL4

RSI = iRSI(_Symbol,_Period,rsi_period,PRICE_CLOSE,1);
 
Anton Zverev:

MQL5

MQL4

RSI_handle = iRSI(_Symbol,_Period,rsi_period,PRICE_CLOSE); 

Достаточно 1 раз при инициализации. И, если уж на то пошло, то Вы забыли проверить хэндл. Далее:

ChartIndicatorAdd(ChartID(),0,RSI_handle); 

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

 ArraySetAsSeries(RSI_buf,true);

Да, в пятерке обратная нумерация в массивах и что, вполне можно обойтись и без этой функции.

rsi=NormalizeDouble(rsi,2); 

А это зачем? Не обязательно.

Итого: нужно получить хэндл и получить данные. Не так уж и трудно.

 
Alexey Kozitsyn:

Достаточно 1 раз при инициализации. И, если уж на то пошло, то Вы забыли проверить хэндл. Далее:

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

Да, в пятерке обратная нумерация в массивах и что, вполне можно обойтись и без этой функции.

А это зачем? Не обязательно.

Итого: нужно получить хэндл и получить данные. Не так уж и трудно.

Ок спасибо, что указали на ошибки. Исправлю.
 
Anton Zverev:
Ок спасибо, что указали на ошибки. Исправлю.
Не за что. Пятерка не так сложна, как кажется. Да, по хорошему еще нужно проверить CopyBuffer().
 
Alexey Kozitsyn:
 .. по хорошему еще нужно проверить ...

Вооот. По-хорошему обработка ошибок займет 95% кода. Если еще учесть,что коды ошибок задокументированы никак, а тем более способы их разрешения...

 
Anton Zverev:

MQL5

MQL4

Кстати, хендл должен оздаваться один раз, это затратная операция. Зато потом обращение идет быстрее, чем в 4-ке.
 
Vladimir Kazakov:

Вооот. По-хорошему обработка ошибок займет 95% кода. Если еще учесть,что коды ошибок задокументированы никак, а тем более способы их разрешения...

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

А вот про ошибки пожалуйста поподробнее: или указывайте точнее или извиняйтесь. 

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