Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 738
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Всё равно на 12 минуте работы выдает сообщение.
Вставите Print, в начало функции где заполняется массив
и покажите количество значений во втором измерении
из всего могу сказать, что NomNews попадает в цикл While уже в состоянии больше, чем 999. И тогда нужно искать из-за чего так выходит и где-то ставить сброс этой переменной.
Что бы это проверить впишите в самом начале цикла:
Да, на 11 минуте выдал принт 1000.
Вставите Print, в начало функции где заполняется массив
и покажите количество значений во втором измерении
Вставил в начало цикла While и получил бесконечное Range = 1000. Не туда вставил?
А что это за число (или функция?): datetime TimeNewsFunck(int nomf)
{
string s=NewsArr[0][nomf];
string time=StringConcatenate(StringSubstr(s,0,4),".",StringSubstr(s,5,2),".",StringSubstr(s,8,2)," ",StringSubstr(s,11,2),":",StringSubstr(s,14,4));
return((datetime)(StringToTime(time) + GMTplus*3600));
}
и где получает значение int nomf ? Я не нашел.
Вставил в начало цикла While и получил бесконечное Range = 1000. Не туда вставил?
А что это за число (или функция?): datetime TimeNewsFunck(int nomf)
{
string s=NewsArr[0][nomf];
string time=StringConcatenate(StringSubstr(s,0,4),".",StringSubstr(s,5,2),".",StringSubstr(s,8,2)," ",StringSubstr(s,11,2),":",StringSubstr(s,14,4));
return((datetime)(StringToTime(time) + GMTplus*3600));
}
и где получает значение int nomf ? Я не нашел.
А еще есть вот такая функция, в которой я, как ни пытался, не смог разобраться. Может в ней собака зарыта?
А еще есть вот такая функция, в которой я, как ни пытался, не смог разобраться. Может в ней собака зарыта?
Это уже только сам автор поймёт, что тут. Лучше код из OnTick() несите
Да, на 11 минуте выдал принт 1000.
Пробуйте заменить
вот на эту строчку
Лишнее ((2*psd*usd)*((2*psd*usd)-C))/(C-1)) в формуле.
Возведение в степень: ^0.5 это не *0.5
Если не будет ни одной сделки по просматриваемому символу и маджику или же не будет ни одной прибыльной или убыточной сделки, или же будет только одна пара (C=1), то получим деление на 0.
Перед самой формулой, нужно проверить, что бы psd и usd было > 0, а C !=1
Прибыльные у вас считаются с профитом > 1, убыточные < 1, с профитом = 1 не анализируются т. е. 1 надо тоже куда-то включать в ту или иную группу.
В вашей функции сначала лучше произвести отбор номеров сделок подходящих по символу и маджику, потом проверить изменилось ли их количество, если да - пересчитываем zn, если нет то return zn (zn в этом случае не обнулять и проверка != 0 при принте не потребуется)
Сова перестаёт работать потому, что опирается на переменные ww и nn, а входе работы вашей функции они меняются и рушат алгоритм совы.
При ошибке оформления кода ничего бы не компилировалось.Могу только сказать спасибо. Это единственное место в рунете, где помогли.
Теперь принт выдаёт следующее "Stop_Ma_v_5.1 EURUSD,M15: == Z-счёт равен = -nan(ind)" . Не подскажите что бы это значило , код то по идее должен выдавать число ?
Код :
Ребята профи Mql5, подсобите с составлением запроса для закрытия позиции на хедж-счете. Ситуация: открыта позиция BUY нужно её закрыть лимитным Sell-ом. Вопрос: как правильно составить запрос, чтобы закрылась именно выбранная позиция, а не открылась новая SELL локирующая BUY??? Прошу, пожалуйста напишите кусок кода с комментариями! Заранее благодарю!
Закрытие одним открытым ордером другого ордера, открытого по тому же самому инструменту, но в противоположном направлении.
bool OrderCloseBy(
int ticket, // номер ордера для закрытия
int opposite, // номер противоположного ордера
color arrow_color // цвет
);
Параметры
ticket
[in] Уникальный порядковый номер закрываемого ордера.
opposite
[in] Уникальный порядковый номер противоположного ордера.
arrow_color
[in] Цвет стрелки закрытия на графике. Если параметр отсутствует, или его значение равно CLR_NONE, то стрелка на графике не отображается.
Возвращаемое значение
Возвращает true при успешном завершении функции или false в случае ошибки. Чтобы получить информацию об ошибке, необходимо вызвать функцию GetLastError().
Пример:
if(iRSI(NULL,0,14,PRICE_CLOSE,0)>75)
{
OrderCloseBy(order_id,opposite_id);
return(0);
}
П.С. Тут в этой ветке разбирают только MQL4
Могу только сказать спасибо. Это единственное место в рунете, где помогли.
Теперь принт выдаёт следующее "Stop_Ma_v_5.1 EURUSD,M15: == Z-счёт равен = -nan(ind)" . Не подскажите что бы это значило , код то по идее должен выдавать число ?
Код :
Закрытие одним открытым ордером другого ордера, открытого по тому же самому инструменту, но в противоположном направлении.
bool OrderCloseBy(
int ticket, // номер ордера для закрытия
int opposite, // номер противоположного ордера
color arrow_color // цвет
);
Параметры
ticket
[in] Уникальный порядковый номер закрываемого ордера.
opposite
[in] Уникальный порядковый номер противоположного ордера.
arrow_color
[in] Цвет стрелки закрытия на графике. Если параметр отсутствует, или его значение равно CLR_NONE, то стрелка на графике не отображается.
Возвращаемое значение
Возвращает true при успешном завершении функции или false в случае ошибки. Чтобы получить информацию об ошибке, необходимо вызвать функцию GetLastError().
Пример:
if(iRSI(NULL,0,14,PRICE_CLOSE,0)>75)
{
OrderCloseBy(order_id,opposite_id);
return(0);
}
П.С. Тут в этой ветке разбирают только MQL4
Нет. Тут, в этой ветке, разбирают любые вопросы как по mql4, так и по mal5 потому, что главная задача ставилась как помощь не только по алгоритмам и кодам, но и помощь для облегчения перехода с mql4 на mql5