//-----------------------Блок определения размера лота----------------------------
if(OrdersTotal()==0)
{
for (int n=0;n<OrdersHistoryTotal();n++)
{
bool InfoHist=OrderSelect(n,SELECT_BY_POS,MODE_HISTORY);
if (InfoHist==false)
{
Print("Ошибка при доступе к исторической базе");
}
if ((InfoHist==true)&&(OrderProfit()>0)) lots=0.1;
if ((InfoHist==true)&&(OrderProfit()<0)) lots=OrderProfit()/20;
}
return(0);
}
Странно: ошибка пропала но советни не делает ни одной сделки, а без этого блока все ок!
Наверно зацикливаеться на n++
Ведь в начале нет ни одной сделки в истории.
Или я ошибаюсь?
Возможно в том, что пересенная lot не инициализирована ? Чему будет равно ее значение, если цикл ни разу не выполнится ?
Собственно, если хотите помощи - выкладывайте весь код, желательно "урезанный" до размера проблемы, если пытаетесь понять как проводить отладку программ - используйте отладочную печать (принт) - печатайте промежуточные результаты. Если просто позагадывать ребусы - вряд ли кто будет свое время тратить....
Успехов.
Странно! Убрал return(0)-все заработало.
return(0);
Соответственно, (рискну предположить структуру программы) весь код был написан подряд в одной функции. Анализ открытия позиций ниже по коду. Следовательно в этом месте не может не циклится: Общее количество ордеров при первом входе = 0, здесь ордера не выставляются, а дальше прога просто завершает работу. И так до бесконечности....
Успехов.
Нет, вы не правы! Советник не написан в одной функции. И лот при входе в программу указан 0.1
Я сам тоже не понял в чес соль, но рабтает-пока без ошибок!
Спасибо всем!
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
//-----------------------Блок определения размера лота----------------------------
if(OrdersTotal()==0)
{
for (int n=0;n<OrdersHistoryTotal();n++)
bool InfoHist=OrderSelect(n,SELECT_BY_POS,MODE_HISTORY);
if (InfoHist==false)
{
Print("Ошибка при доступе к исторической базе");
}
if ((InfoHist==true)&&(OrderProfit()>0)) lots=0.1;
if ((InfoHist==true)&&(OrderProfit()<0)) lots=OrderProfit()/20;
return(0);
}
Постоянно выдает ошибку 2008.11.17 22:34:47 2008.11.07 22:57 Mozg EURUSD,M1: Ошибка при доступе к исторической базе
В чем она заключаеться?
Помогите разобраться!