Выпущена бета-версия MetaTrader 4 Build 529 с новым компилятором - страница 22

 
Renat:

Билд один.

32 битные приложения на 64 битном Windows ставятся исключительно в Program Files (x86) - таковы требования совместимости от Microsoft.

Каталоги данных в области Users/AppData - это уже не мусор, и уже не рекомендации Microsoft (на которые все разработчики плевали много лет), а суровая правда жизни. В последних операционках Microsoft кувалдой всех загнал работать правильно, ибо по другому с UAC никак не совладать. На массовом рынке остается только такой путь.

Чтобы принудительно заставить терминал большую часть данных сохранять в локальном каталоге или работать в портабельном/переносимом(например, на флешке) режиме, нужно использовать флаг /portable. Но это все равно не касается хранения общих неперсонализованных данных в Users/AppData.

Тогда чем объясните, что старые билды включая текущий 509, при указанных мной параметрах в Users/AppData ни чего не создают? Я имею в виду именно при указанных мной параметрах.
 
Renat:

1. можно. окно мы переделаем в такой же вид как у МТ5

2. Посмотрите "Файл - Открыть каталог данных". Именно оттуда и будет считаться путь

3. Лучше использовать полный набор (несколько иконок в одном файле) от 16х16 до 64х64 (128х128) .ico файлов. Скоро прямо в интерфейсе операционки программы будут показываться со своими родными иконками.

  1. Прекрасно
  2. Посмотрел: D:\NewMT4\ А разве не D:\NewMT4\MQL4\ должен быть? И, если нет, то в пути прописывать нужно "\\MQL4\\files\\FindTwoFractals32x32.ico"; ???
  3. Есть какие-либо программы для создания таких наборов? Триста лет графикой не занимался.
Спасибо.
 
artmedia70:
  1. Прекрасно
  2. Посмотрел: D:\NewMT4\ А разве не D:\NewMT4\MQL4\ должен быть? И, если нет, то в пути прописывать нужно "\\MQL4\\files\\FindTwoFractals32x32.ico"; ???
  3. Есть какие-либо программы для создания таких наборов? Триста лет графикой не занимался.
Спасибо.

2. Терминал знает, что фолдер MQL4 добавляется автоматически. Так что написано версно с \\files

3. поищите - очень много всяких ICON Studio выпущено, включая бесплатные.

 
Renat:

2. Терминал знает, что фолдер MQL4 добавляется автоматически. Так что написано версно с \\files

3. поищите - очень много всяких ICON Studio выпущено, включая бесплатные.


Спасибо
 
Barbarian:
Тогда чем объясните, что старые билды включая текущий 509, при указанных мной параметрах в Users/AppData ни чего не создают? Я имею в виду именно при указанных мной параметрах.

Тем, что кто-то много лет плевал на требования Майкрософта и работал наперекор системе контроля прав. Накопленные проблемы МТ4 мы исправляем.

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

 

Ренат, не могли бы вы публиковать краткие анонсы со списком изменений в новых билдах? Чтоб мы не вслепую тестировали.

Эти функции будут реализованы? Нужно просто подождать?

'ChartGetInteger' - function not defined

'ChartWindowFind' - function not defined

'AccountInfoString' - function not defined

'TimeTradeServer' - function not defined

'ExpertRemove' - function not defined

'AccountInfoInteger' - function not defined

 
ALXIMIKS:


Все что пытаюсь сделать - это вернуть функционал своего индюка c MT4 509 (сейчас он работает на 90 процентов, нету только возможности сдвига в будущее)

но что бы увидеть будущее необходимо сдвинуть масив-таймсерию в прошлое.

Вам дело подсказали, используйте SetIndexShift(0, 1);

Не нужно ничего копировать.

А описание во всплывающей подсказке подправят.

 
komposter:

Ренат, не могли бы вы публиковать краткие анонсы со списком изменений в новых билдах? Чтоб мы не вслепую тестировали.

Эти функции будут реализованы? Нужно просто подождать?

К списку добавлю "SymbolSelect". +1 к пожеланию по поводу описания новых билдов.
 
komposter:

Ренат, не могли бы вы публиковать краткие анонсы со списком изменений в новых билдах? Чтоб мы не вслепую тестировали.

Эти функции будут реализованы? Нужно просто подождать?

'ChartGetInteger' - function not defined

'ChartWindowFind' - function not defined

'AccountInfoString' - function not defined

'TimeTradeServer' - function not defined

'ExpertRemove' - function not defined

'AccountInfoInteger' - function not defined

Будут реализованы.

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

 
komposter:

Вам дело подсказали, используйте SetIndexShift(0, 1);

Не нужно ничего копировать.

А описание во всплывающей подсказке подправят.


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

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

(я же настоящее двигал в прошлое, потом дополнял его своим виденьем будущего, и все это опять сдвигал, но уже в будущее)

Что касается ArrayCopy (llow,Low); и ArrayCopySeries (llow, 1); первоначальная мысль о неверной работе ArrayCopy (llow,Low) возникла в виду неверных возвращенных значений некой своей функции в сравнении с использованием ArrayCopySeries (llow, 1). Но построив цикл на переборе разницы значений членов обоих массивов полученных ArrayCopy (llow,Low) и ArrayCopySeries (llow, 1)получил при всех вариантах точности обсчёта лишь 0 (члены массивов абсолютно равны). Иногда проскакивали интересные значения Low = 1.351400000000000000000000000001 ; но разница всегда была 0. Тогда пошел разбирать построчно свою функцию в которую передаю массивы для получения значений индикаторного буфера.

И получил интересные данные для ArrayMaximum. Код:

 int z=      100;        // z- количество баров для проверки
     delt=     2;        // delt - количество баров для выборки в функции ArrayMaximum()
     poz_max1= 0;        // poz_max1- значение(номер бара) получаемое от функции ArrayMaximum() для массива получаемого от ArrayCopySeries (llow1,   1);
     poz_max2= 0;        // poz_max2- значение(номер бара) получаемое от функции ArrayMaximum() для массива получаемого от ArrayCopy       (llow2, Low);

 double llow1[];         //  массив получаемый от ArrayCopySeries (llow1,   1);
        llow2[];         //  массив получаемый от ArrayCopy       (llow2, Low);

 ArrayCopySeries (llow1,   1);  
 ArrayCopy       (llow2, Low);
 
 while(true){                                     // цикл проверки разности с динамической точностью
    for (int i =z;i>=0;i--){                      // цикл проверки разности с статической  точностью
       poz_max1=ArrayMaximum (llow1, delt, i);    // находим бар с максимальным значением среди delt баров начиная с i для массива получаемого от ArrayCopySeries (llow1,   1);
       poz_max2=ArrayMaximum (llow2, delt, i);    // находим бар с максимальным значением среди delt баров начиная с i для массива получаемого от ArrayCopy       (llow2, Low);
    
       if (poz_max1-poz_max2>x){                  // проверяем или одинаковые результаты мы получили (еще не выучил закарлюки которые нада для красивого принта)
          Print ("poz_max1[i]= ",poz_max1,"   poz_max2[i]= ",poz_max2,"   diff[i]= ",poz_max1-poz_max2, "    i=",i); 
          Print ("llow1[i]= ", llow1[i],"   llow2[i]= ",llow2[i],"    i=",i); 
          Print ("llow1[poz_max1]= ", llow1[poz_max1],"   llow2[poz_max1]= ",llow2[poz_max1],"    i=",i); 
          Print ("==========================================================");  
          brc=true;                               // флаг выхода 
       } 
    }
    if (brc==true||x<1e-15) return(0);
    x/=10;
 }

Результат, неодинаковая реализация ArrayMaximum для двух масивов

2013.11.07 16:24:16     CopeSerrias EURUSD_t,H4: ==========================================================
2013.11.07 16:24:16     CopeSerrias EURUSD_t,H4:        llow1[i]= 1.3297          llow2[i]= 1.3297    i=1
2013.11.07 16:24:16     CopeSerrias EURUSD_t,H4: llow1[poz_max1]= 1.3512   llow2[poz_max1]= 1.3297    i=1
2013.11.07 16:24:16     CopeSerrias EURUSD_t,H4:     poz_max1[i]= 2            poz_max2[i]= 1        diff[i]= 1    i=1
2013.11.07 16:24:16     CopeSerrias EURUSD_t,H4: ==========================================================
2013.11.07 16:24:16     CopeSerrias EURUSD_t,H4:        llow1[i]= 1.3501          llow2[i]= 1.3501     i=4
2013.11.07 16:24:16     CopeSerrias EURUSD_t,H4: llow1[poz_max1]= 1.3512   llow2[poz_max1]= 1.3501    i=4
2013.11.07 16:24:16     CopeSerrias EURUSD_t,H4:     poz_max1[i]= 5            poz_max2[i]= 4         diff[i]= 1    i=4
2013.11.07 16:24:16     CopeSerrias EURUSD_t,H4: ==========================================================

Вывод: значения для перебора в ArrayMaximum() у массивов полученных с помощью ArrayCopy (llow,Low) и ArrayCopySeries (llow, 1) идут в разные стороны.

Для ArrayCopy (llow2,Low) при использовании функции ArrayMaximum() перебираются бары по направлению вперед:

для ArrayMaximum (llow2, 5, 5) будут рассмотрены бары 5, 4, 3, 2, 1.

Это так и должно быть ?????????????