Jump to content
Programmer

Build 610/600/574/79/82 - кто что думает?

Recommended Posts

AntFX
спасибо, заработало на build 574, хотя до build 509 включительно работало без этой корректировки

 

работало бы и после, если использовать старый ex4 и не перекомпилировать. правда когда-нибудь потом все равно бы перестало работать :crazy:

Edited by AntFX

1

Share this post


Link to post
Share on other sites
Circle

Всем привет!

Попробовал эту новую поделку от метаквот.

Довольно таки забавный получился "зверек".

Создал класс, который получает всю информацию о барах имеющихся в истории. Для загрузки использовал функцию CopyRates, которая может загрузить заданное число баров, заданного символа и таймфрейма в массив типа MqlRates.

Но суть не в этом в классе конструктор был перегружен, то есть использовалось два конструктора в одном конструкторе (по умолчанию) в этот массив загружалась информация об одном баре, во втором загружалась информация об заданном числе баров.

то есть было так

Конструктор() и Конструктор(sting Smb,ENUM_TIMEFRAME TF, int count) где count как раз количество загружаемых баров.

Далее это класс используется в индикаторе.

Объявляется переменная и в функции OnInit() с помощью оператора new создается указатель на этот класс, где в конструкторе указана загрузка 10 баров, например.

Далее начались странности при использовании этого класса в функции OnCalculate() при обращении к массиву в котором хранятся загруженные данные выдается ошибка выход за границу массива. Начал разбираться, вывел состояние переменных с помощью функции Print() и выяснилось, что количество загруженных баров сначала было 10 (как и должно быть), затем стало 1. Возникла мысль, что вызываются два конструктора один который по умолчанию, второй который нет. Или я что то напутал в коде. Исходник не сохранился.

...

В общем надо разбираться с особенностями нововведения.

И еще что мне не понравилось, так это то что указатели надо самому уничтожать после использования. А если забыл это сделать, то будет утечка памяти. Недостатки присущие С и С++ и сюда перетащили.


Что такое форекс? Это там где деньги лежат.  :)

Share this post


Link to post
Share on other sites
AntFX
Возникла мысль, что вызываются два конструктора один который по умолчанию, второй который нет. Или я что то напутал в коде. Исходник не сохранился.

Ты ведь знаешь, куда в таких случаях отправляют без кода


1

Share this post


Link to post
Share on other sites
Circle
Ты ведь знаешь, куда в таких случаях отправляют без кода

 

Так я и не просил помощи разобраться в моем коде.


Что такое форекс? Это там где деньги лежат.  :)

Share this post


Link to post
Share on other sites
DivergenT

Ребята профи и программеры,Поставил билд 579 новый.Так на нем не работает Trading Central plugin,кто пользуется как его оживить в новом билде,хелп надо)

Share this post


Link to post
Share on other sites
Den2S

А как находясь в старом терминале загрузить обновление так чтобы все настройки старого автоматически перешли в новый?


Тот инвестор, который не фиксирует каждые 5% прибыли со своего счета, в результате потеряет всё.

(Касается любого инвестирования в памм-индустрии). Den2S (©).

------------------------------------------------------------------------------------

Share this post


Link to post
Share on other sites
Ale111

Help, please!

В новом MT4 bild 604 советники должны находиться в новой директории:

 

C:\Users\HP\AppData\Roaming\MetaQuotes\Terminal\B1E85D37AB75C98A4A27B2C0014C6DCA..........

Она высвечивается, если нажать вкладку " файл -> открыть каталог данных".

В моем ноутбуке HP в директории C:\Пользователи\HP\ .-. обычные папки, а AppData\Roaming\MetaQuotes\Terminal......... не видима.

Подскажите как попасть в эту директорию, чтобы загрузить советник?

Share this post


Link to post
Share on other sites
Ugar68
Help, please!

В новом MT4 bild 604 советники должны находиться в новой директории:

 

C:\Users\HP\AppData\Roaming\MetaQuotes\Terminal\B1E85D37AB75C98A4A27B2C0014C6DCA..........

Она высвечивается, если нажать вкладку " файл -> открыть каталог данных".

В моем ноутбуке HP в директории C:\Пользователи\HP\ .-. обычные папки, а AppData\Roaming\MetaQuotes\Terminal......... не видима.

Подскажите как попасть в эту директорию, чтобы загрузить советник?

А кто сказал что советники должны находиться там?

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

Program Files, Program Files x86, Windows...

Лучше терминалам создать отдельную папку, например c:\Terminals

В ней поставить все терминалы. Дальше всё просто

В старом билде советники лежали в "папка терминала\experts\", в новом "папка терминала\MQL4\experts\" .

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


Пишу советники и индикаторы по вашим алгоритмам. Пишите в личку.
Чужие программы не переделываю.

Share this post


Link to post
Share on other sites
Circle
Help, please!

В новом MT4 bild 604 советники должны находиться в новой директории:

 

C:\Users\HP\AppData\Roaming\MetaQuotes\Terminal\B1E85D37AB75C98A4A27B2C0014C6DCA..........

Она высвечивается, если нажать вкладку " файл -> открыть каталог данных".

В моем ноутбуке HP в директории C:\Пользователи\HP\ .-. обычные папки, а AppData\Roaming\MetaQuotes\Terminal......... не видима.

Подскажите как попасть в эту директорию, чтобы загрузить советник?

 

Вам необходимо включить отображение скрытых файлов и папок. Для этого надо открыть свойство папок в случае Win XP или параметры папок и поиска в случае win 7. И на закладке "Вид" поставить соответствующую галочку. Или пользуйтесь не проводником виндовс а каким нибудь сторонним, соответствующим образом настроеным, файловым менеджером, типа far или total comander.

post-94648-1404220803,3126_thumb.png

Edited by Circle

Что такое форекс? Это там где деньги лежат.  :)

Share this post


Link to post
Share on other sites
Ale111
А кто сказал что советники должны находиться там?

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

Program Files, Program Files x86, Windows...

Лучше терминалам создать отдельную папку, например c:\Terminals

В ней поставить все терминалы. Дальше всё просто

В старом билде советники лежали в "папка терминала\experts\", в новом "папка терминала\MQL4\experts\" .

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

"А кто сказал что советники должны находиться там?"

 

Дело в том, что я копирую советник в новый билд "папка терминала\MQL4\experts\" ,а метаедитор его там не видет, т.е. он в другом месте.

И это подтверждается через вкладку "файл -открыть каталог данных", где высвечивается иная директория расположения MQL4\experts, чем та, где я установил терминал (новый -даже без данных).

В другом компе обновление прошло раньше пару дней- там все нормально, а в ноутбуке HP проблема возникла сразу же и ничего не меняется даже после удаления старых терминалов и загрузки нового(установил в c:\Terminals)

Неужели надо будет переустанавливать винду? или можно попасть в новую директорию, кто знает?

Share this post


Link to post
Share on other sites
Ale111
Вам необходимо включить отображение скрытых файлов и папок. Для этого надо открыть свойство папок в случае Win XP или параметры папок и поиска в случае win 7. И на закладке "Вид" поставить соответствующую галочку. Или пользуйтесь не проводником виндовс а каким нибудь сторонним, соответствующим образом настроеным, файловым менеджером, типа far или total comander.

А "ларчик просто открывался"!

Премного благодарен!

Share this post


Link to post
Share on other sites
Ugar68
А "ларчик просто открывался"!

Премного благодарен!

Короче, во всём виноват контроль учётных записей. Если эту дрянь в винде отключить советники можно класть как и положено в папку терминала\MQL4\experts\ и терминал их видит.


Пишу советники и индикаторы по вашим алгоритмам. Пишите в личку.
Чужие программы не переделываю.

Share this post


Link to post
Share on other sites
kazakov.v
Короче, во всём виноват контроль учётных записей. Если эту дрянь в винде отключить советники можно класть как и положено в папку терминала\MQL4\experts\ и терминал их видит.

 

В win 8 - вигвам.

:tongue:


Никому верить нельзя.

Мне - можно.

 

Share this post


Link to post
Share on other sites
AntFX
В win 8 - вигвам.

:tongue:

 

А /portable помогает?


1

Share this post


Link to post
Share on other sites
kazakov.v
А /portable помогает?

 

Ну, если ставить в доступное место (не в Program Files), то да.


Никому верить нельзя.

Мне - можно.

 

Share this post


Link to post
Share on other sites
Ugar68
В win 8 - вигвам.

:tongue:

А чё в 8 не отключается контроль учётных записей?


Пишу советники и индикаторы по вашим алгоритмам. Пишите в личку.
Чужие программы не переделываю.

Share this post


Link to post
Share on other sites
kazakov.v
А чё в 8 не отключается контроль учётных записей?

 

Да, даже на самом низком UAC требует повышенные права.


Никому верить нельзя.

Мне - можно.

 

Share this post


Link to post
Share on other sites
Ugar68
Да, даже на самом низком UAC требует повышенные права.

В принципе, я и не ожидал от 8 ничего хорошего. Особенно меня впечатляет внешний вид по умолчанию, напоминает спектрум. У мелкомягких традиция делать кривущие оси для дома через одну. Следующая должна стать лучше, просто по счёту.


Пишу советники и индикаторы по вашим алгоритмам. Пишите в личку.
Чужие программы не переделываю.

Share this post


Link to post
Share on other sites
Den2S
Короче, во всём виноват контроль учётных записей. Если эту дрянь в винде отключить советники можно класть как и положено в папку терминала\MQL4\experts\ и терминал их видит.

 

 

Так что - службу эту надо отключить?

 

Win 7 x64 у меня.


Тот инвестор, который не фиксирует каждые 5% прибыли со своего счета, в результате потеряет всё.

(Касается любого инвестирования в памм-индустрии). Den2S (©).

------------------------------------------------------------------------------------

Share this post


Link to post
Share on other sites
Ugar68
Так что - службу эту надо отключить?

 

Win 7 x64 у меня.

У меня на стационарном то же. Я, по деревенски, в панели управления - учётные записи там по ссылке, ползунок на минимум поставил. Можно, наверное, и службу отключить.

Только, в любом случае, надо перегрузить банку.

Edited by Ugar68

Пишу советники и индикаторы по вашим алгоритмам. Пишите в личку.
Чужие программы не переделываю.

Share this post


Link to post
Share on other sites
Circle

Собственно вот такая конструкция.

 

 

input uint TakeProfit =30;

 

.....

int profit;

...

profit=GetProfit();

 

if (profit >= TakeProfit) Print(profit);

Из кода видно, что при отрицательном значении переменой profit функция Print() не должна срабатывать и вывода в журнал не будет.

Но она срабатывает и в журнале пишутся отрицательные числа.

Если переменную TakeProfit объявить на как uint, а как int то код работает так как и положено в журнал отрицательные числа не выводятся.

Вот такой косяк получается если сравнивать между собой переменные типа int и uint.


Что такое форекс? Это там где деньги лежат.  :)

Share this post


Link to post
Share on other sites
kazakov.v
Собственно вот такая конструкция.

 

 

input uint TakeProfit =30;

 

.....

int profit;

...

profit=GetProfit();

 

if (profit >= (int)TakeProfit) Print(profit);

Из кода видно, что при отрицательном значении переменой profit функция Print() не должна срабатывать и вывода в журнал не будет.

Но она срабатывает и в журнале пишутся отрицательные числа.

Если переменную TakeProfit объявить на как uint, а как int то код работает так как и положено в журнал отрицательные числа не выводятся.

Вот такой косяк получается если сравнивать между собой переменные типа int и uint.

 

rtfm

попробуй так.


Никому верить нельзя.

Мне - можно.

 

Share this post


Link to post
Share on other sites
AntFX
Вот такой косяк получается если сравнивать между собой переменные типа int и uint.

Это не косяк и уж точно не ошибка компилятора. Косяк - это сравнение знакового и беззнакового числа без учета значения знакового бита.

Edited by AntFX

1

Share this post


Link to post
Share on other sites
Circle
Это не косяк и уж точно не ошибка компилятора. Косяк - это сравнение знакового и беззнакового числа без учета значения знакового бита.

 

Это для компьютера где то глубоко в его потрохах :) это разные числа. И при сравнение должно происходить неявное преобразования типов (как в С# например). И по идее нет практически ни какой разницы в числах типа int, uint, long, ulong за исключением размера занимаемой ими памяти.

Отрицательное число оно и в африке отрицательное и не может быть больше положительного.

Как же тогда происходит сравнение целого числа(int) с дробным (double). Разве для этого необходимо было преобразовывать тип int в double что бы выполнить проверку на равенство.

Я считаю, что это недоделка со стороны компилятора метаквот.

 

P.S.

Забыл еще про типы данных short и ushort

Edited by Circle

Что такое форекс? Это там где деньги лежат.  :)

Share this post


Link to post
Share on other sites
AntFX
Отрицательное число оно и в африке отрицательное и не может быть больше положительного.

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

Edited by AntFX

1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×