Обновление платформы MetaTrader 4 билд 625: Журналы в MetaTrader Market и новый MetaViewer - страница 24

 

Ого. Уже можно и такое присваивание делать:

int var1, var2, var3, var4, var5;

var1 = var2 = var3 = var4 = var5 = 0;

 
Alexey_74:

Перепробовал всё, что пришло в голову. Не помогло ничего.

...

Учитываешь, что в dll массив приходит не как т.н. "таймсерия"? Т.е. price[0] - это самая первая, самая старая цена.
 
RickD:

Ого. Уже можно и такое присваивание делать:

int var1, var2, var3, var4, var5;

var1 = var2 = var3 = var4 = var5 = 0;

Очень давно можно. Ещё когда не было офф. билда, а только бета-тестирование проводили.
 
kazakov.v:
Учитываешь, что в dll массив приходит не как т.н. "таймсерия"? Т.е. price[0] - это самая первая, самая старая цена.
Давай подумаем. Если пихать в длл таймсерию, у которой обратная индексация, то, как ты говоришь, price[0] в длл это в МТ4 самая первая (левая) цена, в моем случае цена Open бара с индексом Bars-1 в МТ4. А у нашего 0-го бара в МТ4 в длл будет индекс Bars-1. Получается, что если пихнуть в длл массив и задать вывод 1000 баров, то в случае с обычным массивом выведется так же, т.е. крайние правые (для МТ4) 1000 баров. А в случае с таймсерией выведутся крайние левые 1000 баров. Т.е. в любом случае будут цены. Просто в случае с таймсерией это будут не те цены. В последнем своем посте с картинками я и не стремился за правильностью. Просто вывел цены, с 0 по 999. Сейчас попробовал с 1000 по 1999. Та же 1000, но со смещением 1000. Ситуация та же самая. Но кое что новое обнаружил. Просто индюк не вылетал, повода лазить в журнал не было, а сейчас посмотрел. Обнаружил там запись: 2014.04.01 10:35:37.904 Access violation read to 0xC0D4F8B4 in 'E:\Program Files\Alpari MT4 Beta\MQL4\indicators\i_STO.ex4'. Ранее я нарывался на подобную запись, если в запарке массив объявлял, например aaa[], а размер ему задать забывал ArrayResize(aaa,1000). Тогда если такой массив при позднем связывании суется в dll, то и вылетает Access violation read. Но почему сейчас вылетела, не понятно. Посмотрел в отладчике, про массив open написано dynamic array[57040],TS. Все верно, евра, часовка, 57040 баров.


 
Vladon:

подскажите где ошибка

improper enumerator cannot be used

код перед стартом:

вот пишет такую ошибку: improper enumerator cannot be used


Посмотрите справку по функции iMa():

iMA

Возвращает значение технического индикатора Moving Average.

double iMA(
string symbol, // имя символа
int timeframe, // таймфрейм
int ma_period, // период
int ma_shift, // сдвиг средней
int ma_method, // метод усреднения
int applied_price, // тип цены
int shift // сдвиг
);

Параметры

symbol

[in] Символьное имя инструмента, на данных которого будет вычисляться индикатор. NULL означает текущий символ.

timeframe

[in] Период. Может быть одним из значений перечисления ENUM_TIMEFRAMES. 0 означает период текущего графика.

ma_period

[in] Период усреднения для вычисления индикатора.

ma_shift

[in] Сдвиг индикатора относительно ценового графика.

ma_method

[in] Метод усреднения. Может быть любым из значений перечисления ENUM_MA_METHOD.

applied_price

[in] Используемая цена. Может быть одним из значений перечисления ENUM_APPLIED_PRICE.

shift

[in] Индекс получаемого значения из индикаторного буфера (сдвиг относительно текущего бара на указанное количество периодов назад).

Вы вместо значения из перечисления ENUM_MA_METHOD пытаетесь вставить что-то своё. Вас ничего не смущает? Даже то, что компилятору не нравится?

 
Добрый день. Подскажите, есть скрипт PeriodConverter. Можно получить любой период графика и открыть его через меню Файл->Открыть автономно. Можно ли тоже самое сделать программно через эксперт, т.е. непосредственно открыть такой автономный график?
 
RickD:

flags=339
Торговля данному эксперту запрещена. На месте соответствующего флага - 0
 
alxm:
Добрый день. Подскажите, есть скрипт PeriodConverter. Можно получить любой период графика и открыть его через меню Файл->Открыть автономно. Можно ли тоже самое сделать программно через эксперт, т.е. непосредственно открыть такой автономный график?
Нет
 
stringo:
Торговля данному эксперту запрещена. На месте соответствующего флага - 0

Так то оно так. Но почему после ChartApplyTemplate торговля становится разрешена? Такое впечатление, что глобальная кнопка перекрывает локальные установки эксперта.
 

Нельзя ли в следующий билд добавить 2 функции:

string ExpertName(long chart_id) - имя эксперта, запущенного на указанном чарте

bool ExpertAllowLiveTrading(long chart_id, bool bAllow) - разрешить/запретить торговлю для эксперта на чарте

И в функцию ExpertRemove можно добавить chart_id в качестве параметра.

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