Баг в функции OrderSend() ? - страница 7

 
tara:
Потому, что он не предусматривает инициализацию переменной при рестарте программы, а ОБЯЗАН.

Еще раз для тех, которые в танке:

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   static int cc=20;
   Print("cc = ",cc);
   cc++;
   
   return(0);
  }
Пример рабочий. Инициализация работает.
 
hoz:

 Хотя вот этот момент (из учебника) мне не совсем понятен:

" Статические переменные инициализируются однократно перед вызовом специализированной функции init(), то есть при выходе из функции, внутри которой объявлена статическая переменная, значение этой переменной не теряется.

 Причём здесь, " перед вызовом спец. функции init() ", а после " т.е. при выходе из пользовательской функции (судя по содержанию), в которой объявлена статичекая переменная? "

 Функция, в которой объявлена статическая переменная может быть в конце программы.. т.е. в конце кода или где-н. ещё. А функция init() запускается один раз сразу перед запуском программы. Получается нестыковка. Как может переменная инициализироваться перед функцией init() ?

Не важно в каком месте программы находится функция, переменные static находятся за пределами функций.
 
PapaYozh:
Не важно в каком месте программы находится функция, переменные static находятся за пределами функций.

В смысле???
 
tara:

Нет, не будет. Баг такой :)
надеяться на инициализацию поумолчанию - плохая привычка.
 
PapaYozh:

Еще раз для тех, которые в танке:

Пример рабочий. Инициализация работает.

 

Клиника...

Да, инициализация работает. Ровно один раз. А при рестарте не работает. А хотелось бы, чтобы работала. Так понятнее?

 
Да блин, не используйте статики в экспертах.
 
tara:

Клиника...

Да, инициализация работает. Ровно один раз. А при рестарте не работает. А хотелось бы, чтобы работала. Так понятнее?

Она и должна один раз работать, при старте эксперта.

Что значит рестарт? Вход в свойства эксперта с последующим выходом по нажатию "ОК"? 

 
TheXpert:
Да блин, не используйте статики в экспертах.
Не "не используйте", а "используйте правильно" либо "не используйте неправильно"
 

Да, а еще:

1. При смене счета;

2. При смене инструмента;

3. При смене ТФ.

Причина обращения: