Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 353
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
такое (ниже) не работает, F_Path вбивал в проводник, клацал по энтер, файл открывается... А инфо по WinApi похоже на это?
Кто мешает флаг FILE_COMMON использовать при записи и чтении? Файл будет доступен всем терминалам, установленным в системе. Будет находиться в общей папке всех терминалов.
В МЕ Файл --> Открыть общую папку данных
Кто мешает флаг FILE_COMMON использовать при записи и чтении? Файл будет доступен всем терминалам, установленным в системе. Будет находиться в общей папке всех терминалов.
В МЕ Файл --> Открыть общую папку данных
Здравствуйте, кто-нибудь сталкивался с такой проблемой при создании торгового запроса с параметрами:
если поставить вот такие параметры:
mrequest.action=TRADE_ACTION_DEAL;mrequest.type_filling=ORDER_FILLING_FOK;
mrequest.type=ORDER_TYPE_BUY;
терминал сообщает что я указываю недопустимый способ mrequest.type_filling (политика исполнения ордера), если указать mrequest.type_filling=ORDER_FILLING_RETURN; то ордер открывается но закрыть его программно не получается, терминал сообщает что используется недопустимый метод. Советник запускаю на сервере бкс форекс, на других серверах все отлично. Кто-нибудь может написать политику исполнения которую можно использовать при разработке торговых роботов для указанного брокера? Спасибо.Есть индикатор mq4 с функцией Alert.
Например:
Как сделать так, чтобы либо в левом верхнем углу подокна (где имя и параметры индикатора обычно отображаются), либо как-то еще, указывать, включен сигнал (extern bool AlertMode=true;) или выключен?Есть индикатор mq4 с функцией Alert.
Например:
Как сделать так, чтобы либо в левом верхнем углу подокна (где имя и параметры индикатора обычно отображаются), либо как-то еще, указывать, включен сигнал (extern bool AlertMode=true;) или выключен?В документации сказано, что:
При тестировании в эксперте можно обрабатывать пользовательские события с помощью функции OnChartEvent(), но в индикаторах эта функция в тестере не вызывается. Даже если индикатор имеет обработчик OnChartEvent() и этот индикатор используется в тестируемом эксперте, то сам индикатор не будет получать никаких пользовательских событий.
На данный момент это утверждение не актуально - в индикаторах эта функция вызывается и в тестере, по крайней мере один индикатор может получать события генерируемые другим индикатором в тестере.
Проблема заключается в том, что получив вызов этой функции индикатор не имеет доступа к данным, хранящимся в переменных, объявленных на глобальном уровне, и наоборот - все изменения сделанные в этой функции не сохраняются в переменных глобального уровня доступа.
Примеры:
1. Объект объявлен на глобальном уровне и инициализирован в функции OnInit. К нему есть доступ из функции OnCalculate, но в функции OnChartEvent получаем сообщение об ошибке - invalid pointer
2. Есть функция, которая выводит в журнал содержимое переменной (переменная объявлена на глобальном уровне). При вызове этой функции из OnCalculate получаем ожидаемое значение, при вызове этой же функции из OnChartEvent получаем ерунду.
Доброго времени суток!
Столкнулась с проблемой при использовании событий, в частности функции OnChartEvent() в индикаторе. Если при использовании ее в эксперте проблем не возникало, то в индикаторе корректно работать по событию не удается. То есть событие приходит, но изменить по нему существующие поля не выходит. Пример:
//----------------------------------------------------------------------------------------------
int k;
int OnInit()
{
k = 0;
ihandleDE = iCustom(_Symbol, _Period, "DrawExtremums");
//< ... >
return(INIT_SUCCEEDED);
}
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
Print("На OnCalculate(): k =", k);
//< ... >
return(rates_total);
}
void OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
string nameEv = "EXTR_UP";
if (sparam == nameEv)
{
Print("На OnChartEvent(): k = ", k);
k++;
}
}
//----------------------------------------------------------------------------------------------
В результате получаем:
"На OnCalculate(): k = 0" - всегда.
"На OnChartEvent(): k = 0,...,123332" - считает от 0 до ...
Как такое может быть и почему?!? Можно ли это как-то исправить? Если кто-то понимает, была бы очень признательна ответу.
P.S.: Подобная несправедливость встречается только на тестере стратегий, в реальном времени все работает исправно.
Доброго времени суток!
Столкнулась с проблемой при использовании событий, в частности функции OnChartEvent() в индикаторе. Если при использовании ее в эксперте проблем не возникало, то в индикаторе корректно работать по событию не удается. То есть событие приходит, но изменить по нему существующие поля не выходит. Пример:
//----------------------------------------------------------------------------------------------
int k;
int OnInit()
{
k = 0;
ihandleDE = iCustom(_Symbol, _Period, "DrawExtremums");
//< ... >
return(INIT_SUCCEEDED);
}
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
Print("На OnCalculate(): k =", k);
//< ... >
return(rates_total);
}
void OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
string nameEv = "EXTR_UP";
if (sparam == nameEv)
{
Print("На OnChartEvent(): k = ", k);
k++;
}
}
//----------------------------------------------------------------------------------------------
В результате получаем:
"На OnCalculate(): k = 0" - всегда.
"На OnChartEvent(): k = 0,...,123332" - считает от 0 до ...
Как такое может быть и почему?!? Можно ли это как-то исправить? Если кто-то понимает, была бы очень признательна ответу.
P.S.: Подобная несправедливость встречается только на тестере стратегий, в реальном времени все работает исправно.
Добрый вечер. В свое время в сервисдеске дали по этому поводу вполне определенный ответ: терминал и тестер стратегий - две разные программы и работа советников/индикаторов в тестере и терминале может отличаться существенно. Зачастую то, что работает в терминале не работает в тестере. Пишите в сервисдеск, предоставьте доказательства и пусть исправят.