Вопросы от начинающих MQL4 MT4 MetaTrader 4 - страница 113
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Мне надо что бы мой советник открывал все ордера (Sell и Buy), даже если уже есть открытые и что бы он это делал не в тот момент когда все условия сошлись, а на следующей свече!!! Помогите плз......Заранее благодарен...
На данный момент у меня в коде вот так:
{
if(NewBar())
{
// сам алгоритм и т.п
}
}
bool NewBar()
{
static datetime lastbar = 0;
datetime curbar = iTime(Symbol(), 0, 0);
if(lastbar != curbar)
{
lastbar = curbar;
return(true);
}
return(false);
}
}
Вот функция.
Я просто подумал что проблема не в коде так как в стандартном режиме ошибок нет.
В общем походу ни кто не ответит...
В общем походу ни кто не ответит...
В выложенной Вами функции ошибки вроде отсутствуют. Смутило использование OrderTicket()!=Ticket для отсеивания рядом стоящих ордеров с одинаковыми тикетами. Проверьте и убедитесь, что такие отсутствуют. Если компилятор указал (69,25) то смотрите 25 позицию строки 69 - ошибка там. Приведите эту одну строку
Действительно интересно, что у него в строке 69
Фуф, думал уже ни кто не отреагирует.
Вот та часть кода:
66 double Volatility(int _period){
67 double summ = 0;
68 for(int i=1; i<=_period; i++)
69 summ+=MathAbs(High[i]-Low[i]);
70 return(NormalizeDouble(summ/_period, Digits));
71 }
Спасибо за наводку
Фуф, думал уже ни кто не отреагирует.
Вот та часть кода:
66 double Volatility(int _period){
67 double summ = 0;
68 for(int i=1; i<=_period; i++)
69 summ+=MathAbs(High[i]-Low[i]);
70 return(NormalizeDouble(summ/_period, Digits));
71 }
Спасибо за наводку
Все ясно. Ошибка в строке summ+=MathAbs(High[i]-Low[i]); Отсчитав 25 позиций от края попадем, видимо, на High[i].
Написал Alert(Low[-1]); компилятор требует положительное число. Написал int n=-1; Alert(Low[n]); - при выполнении Array out of rangre. Но как может получиться i<0 ??? может быть дело в отсутствии исторических данных? проверьте интервал дат от ... до ...
КАКОГО ВЫБРАТЬ ТРЕЙДЕРА ПОДСКАЖИТЕ ПОЖАЛУЙСТА, ИЛИ ТОЧНОЕ ИМЯ СЕРВЕРА
Фуф, думал уже ни кто не отреагирует.
Вот та часть кода:
66 double Volatility(int _period){
67 double summ = 0;
68 for(int i=1; i<=_period; i++)
69 summ+=MathAbs(High[i]-Low[i]);
70 return(NormalizeDouble(summ/_period, Digits));
71 }
Спасибо за наводку
Похоже у вас _period иногда имеет значение больше чем элементов массива. От сюда и выход за пределы массива.
Выбирайте один из вариатов.