Любые эксперты по программированию готовы взять это и изменить его на MQ4 ??
- Процедура инициализации внутреннего профиля
- Определяет свойства внутреннего профиля и внутренние параметры
- TODO: добавить минимальное и максимальное значение числовых параметров и цвет магазина по умолчанию
функция Init ()
в помещении: название (ИНДЕКС КУМУЛЯТИВНОГО ОБЪЕМА);
в помещении: описание (ИНДЕКС КУМУЛЯЦИОННОГО ОБЪЕМА);
в помещении: требуется источник (core.Bar);
закрытый: тип (core.Oscillator);
indoor.parameters: addGroup (селектор);
местная валюта = {USD, EUR, GBP, CHF, JPY, AUD, NZD, CAD};
местный я;
indoor.parameters: добавить строку (валюта, базовая валюта, валюта [1]);
для i = 1, 8, 1 до
indoor.parameters: добавить альтернативу строки (валюта, валюта, валюта);
конец
indoor.parameters: addGroup (Style);
indoor.parameters: add Color (цвет, цвет CVI, цвет CVI, core.rgb (255, 0, 0));
конец
- Процедура инициализации внутреннего экземпляра
- Обрабатывает внутренние параметры и создает выходной поток
- TODO: уточните расчет первого периода для каждого выходного потока.
- TODO: рассчитать все константы, создать экземпляры всех последующих индексов и загрузить все необходимые библиотеки
- Блок параметров
местный сначала;
местный источник = ноль;
- Stre block
локальный выход = {};
местная валюта;
локальная загрузка = {};
локальный список = {};
местный граф;
локальный RawList, RawCount;
local SourceData = {};
местный пауто = (% a% a% a)(% a% a% a);
местный колорит;
местный хозяин;
местное смещение;
местное недельное смещение;
местный MA = {};
- Рутина
функция Prepare (nameOnly)
Method = instance.parameters.Method;
Color = instance.parameters.color;
Currency = instance.parameters.Currency;
host = core.host;
offset = host: execute (getTradingDayOffset);
weekoffset = host: execute (getTradingWeekOffset);
source = instance.source;
первый = источник: первый ();
локальное имя = профиль: идентификатор () .. (.. источник: имя () .., .. валюта ..);
экземпляр: имя (название);
местный crncy1, crncy2;
RawList, RawCount = getInstrumentList ();
местный я;
локальный флаг = ложь;
Count = 0;
для i = 1, RawCount, 1 do
FLAG = ложь;
crncy1, crncy2 = string.match (RawList, pauto);
если (crncy1 == Валюта) или (crncy2 == Валюта), то
ФЛАГ = верно;
конец
если FLAG то
Count = Count 1;
List [Count] = RawList
конец
конец
для i = 1, Count, 1 do
SourceData = core.host:execute(getSyncHistory, List, source: barSize (), source: isBid (), 0, 200 i, 100 i);
загрузка = правда;
конец
если (не (nameOnly)) тогда
CVI = экземпляр: addStream (CVI, core.Line, имя, CVI, цвет, сначала);
конец
конец
функция getInstrumentList ()
локальный список = {};
местный счет = 0;
локальный ряд, enum;
enum = core.host:findTable (offer): enumerator ();
row = enum: next ();
в то время как строка ~ = ноль до
количество = количество 1;
list [count] = row.Instrument;
row = enum: next ();
конец
список возврата, количество;
конец
местное продвижение = 0;
местное снижение = 0;
- Внутренний режим расчета
- TODO: добавить свой код для расчета выходных значений
Обновление функции (период, режим)
если период lt; Первый или нет источник: hasData (период), затем
вернуть;
конец
Продвижение = 0;
Снижение = 0;
для i = 1, Count, 1 do
если загрузка то
вернуть;
конец
конец
местный я;
местный р;
для i = 1, Count, 1 do
p = инициализация (i, период)
Рассчитать (i, p, период);
конец
конец
Функция Calculate (i, p, period)
если не р то
вернуть;
конец
местный номер = {0,0,0,0,0,0,0,0};
местный j;
местный crncy1, crncy2;
crncy1, crncy2 = string.match (List, pauto);
если crncy1 == Валюта то
if SourceData.close gt; SourceData.close [p-1] затем
Advancing = Advancing SourceData.volume;
elseif SourceData.close lt; SourceData.close [p-1] затем
Снижение = Снижение SourceData.volume;
конец
elseif crncy2 == Тогда валюта
if SourceData.close gt; SourceData.close [p-1] затем
Снижение = Снижение SourceData.volume;
elseif SourceData.close lt; SourceData.close [p-1] затем
Advancing = Advancing SourceData.volume;
конец
конец
CVI [период] = CVI [период-1] (продвижение - снижение);
конец
- функция вызывается после завершения асинхронной операции
функция AsyncOperationFinished (cookie)
местный я;
для i = 1, Count, 1 do
если cookie == 100 я тогда
загрузка = правда;
elseif cookie == 200 я тогда
загрузка = ложь;
пример: updateFrom (0);
конец
конец
вернуть core.ASYNC_REDRAW;
конец
Инициализация функции (i, период)
местная свеча;
Candle = core.getcandle (источник: barSize (), источник: дата (период), смещение, смещение недели);
если загрузка или SourceData: size () == 0 тогда
вернуть ложь;
конец
если период lt; источник: сначала () потом
вернуть ложь;
конец
local p = core.findDate (SourceData, Candle, false);
- свеча не найдена
если p lt; 0 тогда
вернуть ложь;
иначе вернуть p;
конец
конец