Здраствуйте!!! Хочу сделать следующее: Мне надо что бы мой советник открывал все ордера (Sell и Buy), даже если уже есть открытые и что бы он это делал не в тот момент когда все условия сошлись, а на следующей свече!!! Помогите плз......Заранее благодарен...
На данный момент у меня в коде вот так:
PHP код:
void start() { if(NewBar()) { // сам алгоритм и т.п } }
В выложенной Вами функции ошибки вроде отсутствуют. Смутило использование OrderTicket()!=Ticket для отсеивания рядом стоящих ордеров с одинаковыми тикетами. Проверьте и убедитесь, что такие отсутствуют. Если компилятор указал (69,25) то смотрите 25 позицию строки 69 - ошибка там. Приведите эту одну строку
Все ясно. Ошибка в строке summ+=MathAbs(High[i]-Low[i]); Отсчитав 25 позиций от края попадем, видимо, на High[i].
Написал Alert(Low[-1]); компилятор требует положительное число. Написал int n=-1; Alert(Low[n]); - при выполнении Array out of rangre. Но как может получиться i<0 ??? может быть дело в отсутствии исторических данных? проверьте интервал дат от ... до ...
Добрый день ! Как можно создать триггер ? К примеру мне нужно это условие if(iClose(NULL,HTF,4)<BlueLine) если оно выполняется DayDown = 1! Вопрос: Как DayDown оставить в состоянии 1 и не опрашивать до следующего дня?
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Мне надо что бы мой советник открывал все ордера (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 иногда имеет значение больше чем элементов массива. От сюда и выход за пределы массива.
Выбирайте один из вариатов.