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

 

Юзабилити.

Ах если б можно было

1. взять мышкой линию индикатора и перетащить её в соседнее окно (подокно)...

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

2. нажать на линии индикатора правой лапой мыши, и в появившемся локальном меню выбрать "Клонировать индикатор"

да чтоб при этом в новом окне появился точно такой же, с теми же параметрами и тем же хендлом на входе....

3. сохранять и загружать инпут-параметры индикаторов в пресет-файлах, так же как это возможно в скриптах и экспертах...

(Сделать обязательно! Это ж почти готово уже. только добавить...)

4. добавить в список "Apply to:" кроме строк <Previous Indicator's Data> и <First Indicator's Data>, ещё и <Other Indicator's Data>

да чтоб при таком выборе появлялся список ВСЕХ индикаторов данного чарта (а если и других то вообще круто)

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


Четвёртый пункт особо важен. Как я понимаю технически это не очень сложно, зато выигрыш в возможностях - огромный.

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

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

Вот простенький пример: Один из моих индикаторов считает и выводит "прибыльность" сигналов другого (входного) индикатора. Сейчас, чтоб сравнить доходность

нескольких (N) разных индикаторов, нужно наложить в одно окно N*2 индикаторов, Причём в строго определённой последовательности. И... потом разбираться где чья

линия, куда это хозяйство масштабировать (линии норовят вылезти за пределы окна, а если не вылезти, то намертво слиться друг с другом... ). А можно б было

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

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

В настоящее время к решению первой прилагается в нагрузку второе. Хорошо что такая возможность вообще появилась. Я горячо и безмерно одобрямс.

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

 

В MetaEditor'е функция Replace и нажатии кнопки <Заменить все> замена происходит во всём редактируемом файле. Это замечательно и часто нужно.

Но очень хотелось бы иметь ещё кнопку <Заменить все только в выделенном блоке> или соответствующую галочку-модификатор. Это нужно ещё чаще.

 

Разработчикам! Некоторые размышления на тему функций

//---

double MathCei - Возвращает ближайшее сверху целое числовое значение.

double MathRound - Возвращает значение, округленное до ближайшего целого числа указанного числового значения.

double MathFloor - Возвращает ближайшее снизу целое числовое значение.

//---

тип возвращаемых данных для них указан как double, хотя по логике их работы должен быть тип int.

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

ведь используя эти функции мы однозначно хотим получить целочисленное значение а получаем double.

Что бы этого избежать приходится в обязательном порядке добавлять указатель типа

int iSprd = int(ceil(dSprd));

int iSprd = int(MathRound(dSprd));

что не есть оптимально и для написания и для ресурсов.

 

Было бы здорово, если бы для всех без исключения графических объектов можно было бы иметь две системы координат - экранную и временно-ценовую,

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

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

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

А сейчас нету даже стандарных функций XToTime() и YToPrice()... А жаль.

 

Alexander писал(а) >>

MetaTrader 5 Client Terminal build 216

  1. Добавлены свойства ширины и высоты графических объектов Bitmap и Label в MQL5.
1. Вот не совсем понятен результат функции.

//--------------------------------------------------------------------------------------------------------------
bool CTable::Create(string TName,uchar TCols,uchar TRows,int X=1,int Y=1,ENUM_BASE_CORNER TCorner=CORNER_LEFT_LOWER,int TWindow=0)
{
ObjectsDeleteAll(0);
string tname;
for (int TC=0;TC<TCols;TC++)
{//столбцы
for (int TR=0;TR<TRows;TR++)
{//ряды
tname="";
StringConcatenate(tname,ObjPrefix,TName,"_C",(string)TC,"R",(string)TR);
ObjectCreate(0,tname,OBJ_LABEL,TWindow,0,0);
ObjectSetInteger(0,tname, OBJPROP_XDISTANCE,X+(TC*90));
ObjectSetInteger(0,tname, OBJPROP_YDISTANCE,Y+(TR*10));
ObjectSetInteger(0,tname, OBJPROP_COLOR,WhiteSmoke);
ObjectSetInteger(0,tname, OBJPROP_FONTSIZE,7);
ObjectSetString (0,tname, OBJPROP_TEXT,TimeToString(TimeCurrent(),TIME_DATE|TIME_MINUTES));
ObjectSetInteger(0,tname, OBJPROP_XSIZE,15);
//-----------------------------------------------------------
Print("OBJPROP_XSIZE=",ObjectGetInteger(0,tname, OBJPROP_XSIZE)," OBJPROP_YSIZE=",ObjectGetInteger(0,tname, OBJPROP_YSIZE));
//-----------------------------------------------------------

ChartRedraw(0);
}//ряды
}//столбцы

return(true);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Ответ:

2009.11.07 15:56:24 ME-V-v001 (EURUSD,H1) OBJPROP_XSIZE= 72 OBJPROP_YSIZE= 12
2009.11.07 15:56:24 ME-V-v001 (EURUSD,H1) OBJPROP_XSIZE= 72 OBJPROP_YSIZE= 12
2009.11.07 15:56:24 ME-V-v001 (EURUSD,H1) OBJPROP_XSIZE= 177 OBJPROP_YSIZE= 188
2009.11.07 15:56:24 ME-V-v001 (EURUSD,H1) OBJPROP_XSIZE= 72 OBJPROP_YSIZE= 12
2009.11.07 15:56:24 ME-V-v001 (EURUSD,H1) OBJPROP_XSIZE= 72 OBJPROP_YSIZE= 12
2009.11.07 15:56:24 ME-V-v001 (EURUSD,H1) OBJPROP_XSIZE= 72 OBJPROP_YSIZE= 12
2009.11.07 15:56:24 ME-V-v001 (EURUSD,H1) OBJPROP_XSIZE= 72 OBJPROP_YSIZE= 12
2009.11.07 15:56:24 ME-V-v001 (EURUSD,H1) OBJPROP_XSIZE= 72 OBJPROP_YSIZE= 12
2009.11.07 15:56:24 ME-V-v001 (EURUSD,H1) OBJPROP_XSIZE= 72 OBJPROP_YSIZE= 12
2009.11.07 15:56:24 ME-V-v001 (EURUSD,H1) OBJPROP_XSIZE= 72 OBJPROP_YSIZE= 12
2009.11.07 15:56:24 ME-V-v001 (EURUSD,H1) OBJPROP_XSIZE= 72 OBJPROP_YSIZE= 12
2009.11.07 15:56:24 ME-V-v001 (EURUSD,H1) OBJPROP_XSIZE= 72 OBJPROP_YSIZE= 12
2009.11.07 15:56:24 ME-V-v001 (EURUSD,H1) OBJPROP_XSIZE= 72 OBJPROP_YSIZE= 12
2009.11.07 15:56:24 ME-V-v001 (EURUSD,H1) OBJPROP_XSIZE= 22 OBJPROP_YSIZE= 12
2009.11.07 15:56:24 ME-V-v001 (EURUSD,H1) OBJPROP_XSIZE= 72 OBJPROP_YSIZE= 12
2009.11.07 15:56:24 ME-V-v001 (EURUSD,H1) OBJPROP_XSIZE= 72 OBJPROP_YSIZE= 12
2009.11.07 15:56:24 ME-V-v001 (EURUSD,H1) OBJPROP_XSIZE= 0 OBJPROP_YSIZE= 0
2009.11.07 15:56:24 ME-V-v001 (EURUSD,H1) OBJPROP_XSIZE= 72 OBJPROP_YSIZE= 12
2009.11.07 15:56:24 ME-V-v001 (EURUSD,H1) OBJPROP_XSIZE= 72 OBJPROP_YSIZE= 12
2009.11.07 15:56:24 ME-V-v001 (EURUSD,H1) OBJPROP_XSIZE= 72 OBJPROP_YSIZE= 12

И значения раз от раза меняются в случайном порядке, даже если убрать ObjectSetInteger(0,tname, OBJPROP_XSIZE,15);

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

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

TimeToString(TimeCurrent(),TIME_DATE|TIME_MINUTES)

например, когда выходные, или терминал только открыл, а к Сети не подключился.


 

При поддержке некоторых форумчан и детальном изучении справки от Borland задача корректного импорта/экспорта строк решена успешно (есть конечно узкие места, но это уже мелочи).


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


PS

Уважаемые разработчики - Когда понадобится торговать с представителями рассы КЛИНГОНА думаю новый терминал будет не заменим...

 

Здравствуйте, при переносе MT5 с одной системы на другую (т е без установки) - не запускается.

С МТ4 таких проболем никогда не было.

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

Подскажите что можно сделать в таком случае.

 

Как я понял а новой версии языка альтернатива вот этой функции отсутствует?

double AccountFreeMarginCheck(string symbol, int cmd, double volume)
 
zhurs >>:

Здравствуйте, при переносе MT5 с одной системы на другую (т е без установки) - не запускается.

С МТ4 таких проболем никогда не было.

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

Подскажите что можно сделать в таком случае.

Думаю проще всего админу пива поставить, для временного снятия блокирования...


PS

Да забыл, еще не стоит забывать о нашем любимом SSL сертификате

 

Разработчикам - с информацией по используемой марже не все понятно... :(

вместо:

double AccountMargin() - double AccountInfoDouble(ACCOUNT_MARGIN)

double AccountFreeMargin() - double AccountInfoDouble(ACCOUNT_FREEMARGIN)


А альтернативы для AccountFreeMarginCheck( string symbol, int cmd, double volume) и AccountFreeMarginMode() как я понял пока нет, или я не прав?


PS

Кстати, AccountFreeMarginMode() в MQL4 был обозначен как double, а судя по описанию должен возвращать int.

И еще есть опечатки в справке, уже сбился в счете версий (вроде последняя).

В данном случае я думаю подразумевалось "по счету"...

ACCOUNT_EQUITY

Значение собственных средств на счету(е)

double

ACCOUNT_MARGIN

Размер зарезервированных залоговых средств на счету(е)

double

ACCOUNT_FREEMARGIN

Размер свободных средств на счету(е), доступных для открытия позиции

double

ACCOUNT_MARGIN_LEVEL

Уровень залоговых средств на счету(е)

double

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