Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 660
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
вот этот код работает, сделайте по аналогии:
Сделал минимальные изменения - убрал анализ OrderMagicNumber() и добавил три лога.
Результат, к сожалению, тотже - см. пр. - на первом скриншоте начало (непонятно почему начинает не с 0), а на втором место, где он пригает со 124 на 99.
int NumberOfOrders()
{
int i,res=0,k=OrdersTotal(); string sy=Symbol();
for(i=0; i<k; i++)
{
log("k = " + k +"; ");
log("i = " + i +"; ");
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if((OrderSymbol()==sy)) res++; //if((OrderMagicNumber()==magic_) && (OrderSymbol()==sy)) res++;
log("res = " + res +"; ");
}
}
return(res);
}
Неужели этот код откомпилируется без ошибок??? НЕ верю...
(непонятно почему начинает не с 0), а на втором место, где он пригает со 124 на 99.
потому, что терминал "съел" часть принтов(), в MQL вывод информации имеет наименьший приоритет, добавьте Slepp(123) перед Print() и не будет пропусков
хотя суда по логу, Вы печатаете просто счетчик цикла
потому, что терминал "съел" часть принтов(), в MQL вывод информации имеет наименьший приоритет, добавьте Slepp(123) перед Print() и не будет пропусков
хотя суда по логу, Вы печатаете просто счетчик цикла
Из Вашего ответа у меня складывается впечатление, что "съел" - это просто не вывел в лог, т.к были более приорететные вещи, но моей реальной задачей было, перебирая все ордера, удалять определенные из них и я заметил, что советник пропускает некоторые (это уже не вывод информации с наименьшим приорететом). Чтобы понять причину я стал упрощать задачу и, в результате, остался только сам перебор и вывод в лог, но и здесь я вижу пропуск ордеров - т.е. советник перескакивает через несколько ордеров. Наименьший приоритет вывода информации хорошо объясняет начало вывода не с 0, но как этим объяснить непоследовательный вывод, причем в случае, когда он прыгает, например, со 124 на 99.
Если же под "съел" понимается что-то другое, то хотелось бы понять что?
Это круто!
Роман!
Я вот, например, успешный трейдер с 20-летним стажем.
Я вот не пойму, зачем Вам нужна "разница между закрытиями введенных пар, и скользящая средняя по ним".
Более того, а скользящую среднюю по этим разницам Вы умеете строить? - Фантастика!
А просто скользящую среднюю по котировкам строить умеете? - Тоже нет?
Так в чем проблема?
разница средних по close не равна средней по разнице close, увы и ах
А что вызывает сомнения? Во всяком случае в MQL4 ошибок не выдаёт.
1. Научись вставлять код.
Сделал минимальные изменения - убрал анализ OrderMagicNumber() и добавил три лога.
Результат, к сожалению, тотже - см. пр. - на первом скриншоте начало (непонятно почему начинает не с 0), а на втором место, где он пригает со 124 на 99.
2. log это логарифм???
Примечание
Вместо функции MathLog() можно использовать функцию log().
вот еще нашел серьезный недочет, очень много вызовов CopyClose()
Не подскажете, как можно в цикле скопировать из массива валютных пар их котировки?
Это получается двойной массив должен быть, а MQL такое не поддерживает, типа%
Что значит "двойной массив"?
Что значит "двойной массив"?
ну двумерный
ну двумерный
А где написано что CopyClose копирует данные в двумерный массив? Вообще к чему был упомянут двумерный массив?
А где написано что CopyClose копирует данные в двумерный массив? Вообще к чему был упомянут двумерный массив?
К тому что мне нужно в массиве хранить массивы котировок
Чтобы в цикле один раз выполнить копирование, и потом производить вычисления через ArrayCopy, а не CloseCopy