[Архив!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 2. - страница 112

 

Добрый вечер!

У меня простой вопрос.

По каким причинам, эксперт, после инициализации не может перейти в start(); ?

Может кто нибудь сталкивался с такой проблемой?

Из init(); выхожу return(0); .

Заранее спасибо за ответ!

 
А как Вы это узнали, что он "в Старт не перешел"?
 
BBSL:

Добрый вечер!

У меня простой вопрос.

По каким причинам, эксперт, после инициализации не может перейти в start(); ?

Может кто нибудь сталкивался с такой проблемой?

Из init(); выхожу return(0); .

Заранее спасибо за ответ!

Нет котировок - нет старта. Тики нужны для перехода в старт + разрешение экспертов.
 

Всем привет и профитов!

У меня такая проблема.

На домашнем компе делаю разметку графика. Как ее перенести на другой компьютер - какой файл нужно переписать?

Выход типа переписать всю папку МТ4 и потом ее с новым именем записать на другой комп - не подходит так как сложный. Тут интересное, что если папку оставляю на другом компе со старым именем - ничего нового на графиках нету...

Кто знает, помогите!

 

BBSL, у меня бывало я писал "start();" - ты похоже так же написал? там двоеточие не нужно. ещё мб фигурных скобок нет

kiimar, советником закрыл? если да то надо код смотреть

 
BBSL:

Добрый вечер!

У меня простой вопрос.

По каким причинам, эксперт, после инициализации не может перейти в start(); ?

Может кто нибудь сталкивался с такой проблемой?

Из init(); выхожу return(0); .

Заранее спасибо за ответ!

Ответ еще более простой: Наличие оператора return(0) в конце тела функции вовсе не означает, что этот оператор будет когда нибудь исполнен.
 

Как проверить что ордер сработал по TakeProfit или StopLoss? Спасибо за ответ!

 
BBSL:

По каким причинам, эксперт, после инициализации не может перейти в start(); ?

Может кто нибудь сталкивался с такой проблемой?

бывают сложные расчеты или подкачка истроии в init(), или на терминале много индикаторов и советников подвешивают терминал или...

в общем есть некое время на инициализацию кода, не скажу конкретно сколько, но если во время инициализации кода терминал прервет работу кода, будет в журнале ошибка примерно так:" .... timeout in expert ...."

если в журнал терминал не выводит ошибки, значит инициализация прошла успешно, а саму ф-цию start() проверить легко - напишите в первой строчке start() : Print("новый тик");

 
Sayod, ты на каком тф торговал и с какими параметрами?
 
Jaguar1974:

Как проверить что ордер сработал по TakeProfit или StopLoss? Спасибо за ответ!


проверяйте историю ордеров, если цена закрытия равна SL или TP - значит ..., НО думаю проще было бы проверить профит закрытого ордера - если > 0 значит тейк иначе ...

вот похожий по смыслу кусочек кода:

double history(){
int time = 0;double profit = 0;//обьявляем необходимые нам переменные куда мы положим интересующие нас характеристики ордера
for(int i = OrdersHistoryTotal();i>=0;i--){// Перебираем все закрытые ордера
  if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)){//если ордер с таким номером (i) в списке закрытых ордеров есть ( не путать с тикетом)
    if(OrderSymbol() == Symbol()){//если выбранный ордер был открыт по нашей валютной паре
      if(time<OrderCloseTime()){//(сравниваем его с хранящимся в пероеменной time) 
        time=OrderCloseTime();//если время закрытия ордера больше - ложим его в переменную
        profit=OrderProfit();//и заодно запоминаем прибыль ордера
      }
    }
  }
}
//по окончании этой процедуры в наших переменных будут сидет наибольшее время закрытия, и его профит. Или по нулям если история чистая.
//теперь мы можем выставлять условия в зависимости от результата процедуры
   
if(profit == 0 &&time == 0){//действия если история чистая

}
if(profit >= 0){//действия если последний ордер был прибыльным, или нулевым

}
if(profit <  0 ){//действия если последний ордер был убыточным

}
return(0);
}
Причина обращения: