[АРХИВ!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 4. - страница 387

 
народ, подскажите такую вещь. есть файлы индикаторов и экспертов в EX4 как их использовать?
 
Las-tochka:

Просто переносишь на график, выставляешь параметры, и юзаешь


Хотя не вот так лучше)))

Типы файлов


В языке MQL4 различают 3 типа файлов, несущих программный код: mq4, ex4 и mqh.

Файлы типа mq4 - это исходный код программы. В файлах этого типа содержатся исходные тексты программ всех видов (экспертов, скриптов и индикаторов). Для создания кодов программ используется редактор MetaEditor. После того как код программы составлен полностью или частично, его можно сохранить, а впоследствии - снова открыть в редакторе для доработки. Файлы типа mq4 не могут быть использованы для исполнения в клиентском терминале. Для того чтобы запустить программу на выполнение, её необходимо предварительно скомпилировать. В результате компиляции исходного кода программы создаётся одноимённый файл с расширением ех4.

Файлы типа ех4 - это скомпилированная программа, готовая для практического использования в клиентском терминале. Для файлов этого типа возможность редактирования не предусмотрена. Если требуется внести изменения в программу, то необходимо обратиться к её исходному коду (файлу типа mq4), отредактировать его, а затем снова скомпилировать. По названию файла ех4 нельзя судить о том, к какому виду программ он относится - является ли он скриптом, экспертом или индикатором. Файлы ex4 могут использоваться как библиотечные.

Файлы типа mqh - включаемые файлы. Это - исходный текст часто используемых блоков пользовательских программ. Такие файлы могут включаться в исходные тексты экспертов, скриптов и пользовательских индикаторов на этапе компиляции. Обычно включаемые файлы содержат описания импортируемых функций (смотрите в качестве примера файлы stdlib. mqh или WinUser32.mqh), либо описания общих констант и переменных (stderror.mqh и WinUser32.mqh). Файлы типа mqh, как правило, хранятся в директории Каталог_терминала\experts\include.

Включаемые файлы называются так потому, что обычно их "подключают" на этапе компиляции к основному исходному файлу при помощи директивы #include. Несмотря на то что файлы типа mqh могут содержать исходный код программы и MetaEditor их компилирует, они не являются самостоятельными и самодостаточными, т.е. не требуют компиляции с целью получения исполняемых файлов типа ех4. В качестве включаемых файлов могут также использоваться файлы mq4, которые также должны храниться в каталоге Каталог_терминала\experts\include .

В навигаторе клиентского терминала в разделах "Советники", "Пользовательские индикаторы" и "Скрипты" высвечиваются только те имена файлов, которые имеют расширения ex4 и при этом находятся в соответствующем каталоге. Файлы, скомпилированные в более старой версии MetaEditor, не запускаются и отображаются серым цветом.

Существуют и другие виды файлов, не образующие законченную программу, но используемые при создании прикладных программ. Например, программу можно составить из нескольких отдельных файлов или использовать для этой цели ранее созданную библиотеку. Пользователь может создавать библиотеки пользовательских функций, предназначенных для хранения часто используемых блоков пользовательских программ. Библиотеки рекомендуется хранить в директории Каталог_терминала\experts\libraries. В качестве библиотечных могут быть использованы файлы mq4 и ex4. Библиотеки не могут самостоятельно запускаться на выполнение. Использование включаемых файлов более предпочтительно, чем использование библиотек, из-за дополнительных расходов компьютерных ресурсов при вызове библиотечных функций.

В первой части учебника "Введение в программирование на языке MQL4" нас будут интересовать файлы исходных текстов программ mq4 и скомпилированные файлы программ ех4.

 
куда его поместить надо чтобы пременить на графике?
 
Las-tochka:


Обнаружил другой прикол, один робот, при тесте у разных брокеров на их терминалах мт4, выдает разные результаты теста из-за отсуствия части котировок, как у одного так и у другого!? Но при всем этом ошибок рассогласования нет вообще??? Я в шоке !?!?!?

Эфект бабочки на лицо)))

Кто что думает?

Думаю что тестер никоем образом не обязан достоверно показывать потенциальную прибыль/убытки, он лишь для того чтобы увидеть правильно ли рабоает логика советника, всё ли в порядке с математикой и логическими ошибками в коде.
 

BeerGod:
Думаю что тестер никоем образом не обязан достоверно показывать потенциальную прибыль/убытки, он лишь для того чтобы увидеть правильно ли рабоает логика советника, всё ли в порядке с математикой и логическими ошибками в коде.

А по существу вопроса есть инфа?

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


 
Myth63:
куда его поместить надо чтобы пременить на графике?


Если нужно запустить на графике эксперта или индикатор или скрипт, то просто из навигатора, в панели инструментов, перенести левой кнопкой мыши на график, соответсвующую програму.

Но лучше скачать учебник с https://book.mql4.com/ru/ слева внизу стр.) Удачи!

 

Доброго времени суток!

Использую индикатор, показывает МА с других периодов.

Вешаю в окно по нескольку штук, терминал начинает томозить ужастно!.

Специалисты, в чем проблемма тормознутости индикатора, в нем всего 15 строк?

Исправте кто понимает.

За ранее, Благодарен.

#property indicator_chart_window
#property indicator_buffers 1

extern double tf = 240; // Тф с какого береть МА
extern int period = 34; // Период МА
extern string _МА_ = "0--SMA 1--EMA 2--SMMA 3--LWMA";
extern int method = 2; // Метод МА
extern int price = 4; //
extern int shift = 0; //

extern string _LINE_ = "ЦВЕТ ТОЛЩИНА СТИЛЬ БАР";
extern color clr = Yellow; // Цвет линии
extern int width = 2; // Толщина линии
extern int style = 2; // Стиль линии
extern int CountBars = 500; // Количество баров отрисовки МА

datetime time_0;
double ma[];
//+------------------------------------------------------------------+
int init() {
//----
SetIndexBuffer(0, ma);
SetIndexStyle(0, DRAW_LINE, style, width, clr);
SetIndexLabel(0, "MA " + tf);
IndicatorShortName("Moving Average (" + tf + ", " + period + ")");
if (CountBars >= Bars)
CountBars = Bars;
SetIndexDrawBegin(0, Bars - CountBars + 1);
return (0);
}
//+------------------------------------------------------------------+
int start() {
//----
int cb = IndicatorCounted();
SetIndexDrawBegin(0, Bars - CountBars + 1);
int i = Bars - cb - 1;
double ctf = Period();
double r = tf / ctf;
while(i >= 0) {
int k = MathFloor(i / r);
ma[i] = iMA(Symbol(), tf, period, shift, method, price, k);
i --;
}
if (Time[0] == time_0) return (0);
time_0 = Time[0];
return (0);
}
//+------------------------------------------------------------------+

 
Myth63:
куда его поместить надо чтобы пременить на графике?
Эксперты в папку experts, и все остальные типы аналогично по названиям. После перезагрузки терминала они будут доступны в навигаторе, только будут серенькими, в отличии от имеющих исходники.
 

Здравствуйте.Подскажите пожалуйста.Моя проблема в следующем: в советнике сигнал на сделку должен быть только один (когда все три индикатора пересекли свои указанные зоны)

if(SignalType_1 && (RSI >= 35 && Stoch >= 20 && CCI >= -100)) return(+1);

Вопрос такой. Как правильно написать эту строчку чтобы этот сигнал был только ОДИН. (А то получается что советник делает сделки по следующему алгоритму : RSI пересёк зону 35 -сделка; STOCH пеесёк зону 20 - сделка ; CCI пересёк зону -100 - сделка и того получается три сделки)

Сигнал на сделку только ОДИН когда все три индикатора пересекли свои зоны

 
artemka_1981:

Здравствуйте.Подскажите пожалуйста.Моя проблема в следующем: в советнике сигнал на сделку должен быть только один (когда все три индикатора пересекли свои указанные зоны)

if(SignalType_1 && (RSI >= 35 && Stoch >= 20 && CCI >= -100)) return(+1);

Вопрос такой. Как правильно написать эту строчку чтобы этот сигнал был только ОДИН. (А то получается что советник делает сделки по следующему алгоритму : RSI пересёк зону 35 -сделка; STOCH пеесёк зону 20 - сделка ; CCI пересёк зону -100 - сделка и того получается три сделки)

Сигнал на сделку только ОДИН когда все три индикатора пересекли свои зоны

Попробуй так:

bool GO = true;// глобальная переменная
//---------------------

if(GO && SignalType_1 && RSI >= 35 && Stoch >= 20 && CCI >= -100) {GO=false; return(+1);}//запретить повторный вход
//---------------
{OrderClose(.......); GO = true; }//открыть семафор при закрытии позиции.
Причина обращения: