int spread=SymbolInfoInteger(_Symbol,SYMBOL_SPREAD);
компилятор недоволен: possible loss of data due to type conversion , ведь везде же integer. Можно конечно было бы оставить как есть, но предупреждение как-то глаза мозолит.
компилятор недоволен: possible loss of data due to type conversion , ведь везде же integer. Можно конечно было бы оставить как есть, но предупреждение как-то глаза мозолит.
Сделайте так:
int spread=(int)SymbolInfoInteger(_Symbol,SYMBOL_SPREAD);
Чувствую, однако, что надо ликвидировать недостаток знаний, т.к. если для вышеприведённого моего примера компилятор напрягался, то для нижеприведённого компилятор не напрягается, а вроде бы ситуация схожая.
Чувствую, однако, что надо ликвидировать недостаток знаний, т.к. если для вышеприведённого моего примера компилятор напрягался, то для нижеприведённого компилятор не напрягается, а вроде бы ситуация схожая.
SymbolInfoInteger возвращает значение типа long, который является 64-бит. А int - 32-бита, поэтому компилятор справедливо выдаёт предупреждение.
Во втором случае, SymbolInfoDouble возвращает значение типа double и такого же типа у Вас переменная ask. Поэтому тут никаких потерь (даже теоретически) произойти не может и компилятор молчит.
Сравнивая МТ4 и МТ5 пока вот вижу есть два недочета или несовершенства МТ5. Первое - это неотображение на графике тестера отложенных ордеров и поэтому при отладке некоторых стратегий по графику невозможно понять результатом какого ордера есть та или иная сделка. Второе - отсутствие или сверх плохое качество фиксированного масштаба. Если в МТ4 нажал птичку "фиксированный масштаб" и можно практически на любое расстояние двигать график вверх и вниз и это очень удобно. В МТ5, например, сейчас открыл тот же график на 5мин, выставил птичку "фиксированный масштаб" ... а график не двигается вообще ни вверх ни вниз. Это очень неудобно. Эти недочеты конечно некритичны и без всего этого можно обойтись, но все же было бы хорошо если бы это как-нибудь исправили.
... // После каждого ордера: string name="xx"+(string)ocnt++; VL.Create(0,name,0,TimeCurrent());
Почему не видно никаких линий? Согласно документации объект должен создаваться. Но не вижу ничего.
Аналогично пробовал и на более низком уровне ( ...ObjectCreate(0,name,OBJ_HLINE,0,TimeCurrent(),e_symbol.Ask())....) но результат тот же, ошибку функция не возвращает, но и результата не видно.
У меня только одно подозрение - неужели графические объекты работают только в индикаторах? Может кто с этим работал и знает в чем здесь причина?
Настройте чарт как вам нужно, и сохраните шаблон под именем default
Не могу понять почему для записи:
компилятор недоволен: possible loss of data due to type conversion , ведь везде же integer. Можно конечно было бы оставить как есть, но предупреждение как-то глаза мозолит.
Не могу понять почему для записи:
компилятор недоволен: possible loss of data due to type conversion , ведь везде же integer. Можно конечно было бы оставить как есть, но предупреждение как-то глаза мозолит.
Сделайте так:
И почитайте вот это: Приведение типовСделайте так:
И почитайте вот это: Приведение типовЧувствую, однако, что надо ликвидировать недостаток знаний, т.к. если для вышеприведённого моего примера компилятор напрягался, то для нижеприведённого компилятор не напрягается, а вроде бы ситуация схожая.
Благодарю, помогло. Статью прочитал.
Чувствую, однако, что надо ликвидировать недостаток знаний, т.к. если для вышеприведённого моего примера компилятор напрягался, то для нижеприведённого компилятор не напрягается, а вроде бы ситуация схожая.
SymbolInfoInteger возвращает значение типа long, который является 64-бит. А int - 32-бита, поэтому компилятор справедливо выдаёт предупреждение.
Во втором случае, SymbolInfoDouble возвращает значение типа double и такого же типа у Вас переменная ask. Поэтому тут никаких потерь (даже теоретически) произойти не может и компилятор молчит.
Раньше видел где-то здесь раздел, посвященный выявленным ошибкам МТ5, но забыл где это и как его найти...
Хочу вывести в графике тестера какие-то значки, метки. Пробую вывести линию:
CChartObjectVLine VL;
int ocnt;
...
// После каждого ордера:
string name="xx"+(string)ocnt++;
VL.Create(0,name,0,TimeCurrent());
Почему не видно никаких линий? Согласно документации объект должен создаваться. Но не вижу ничего.
Аналогично пробовал и на более низком уровне ( ...ObjectCreate(0,name,OBJ_HLINE,0,TimeCurrent(),e_symbol.Ask())....) но результат тот же, ошибку функция не возвращает, но и результата не видно.
У меня только одно подозрение - неужели графические объекты работают только в индикаторах? Может кто с этим работал и знает в чем здесь причина?