Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 870

 
rapid_minus:
Спасибо. Но как я понял, магик присваивается автоматически при открытии ордера. Поэтому по магику я не могу определить, на каких условиях открыт ордер, и, соответственно, не знаю, по каким условиям его закрывать.
магиков может быть сколько угодно много, для каждого условия - свой.
 

Добрый день!

int ret_code=0;
int somefunc()
  {  
   ...
   return(ret_code);
  }

 ret_code локальная переменная или глобальная переменная? ret_code сбрасывается после перезапуска терминала? 

 
evillive:
магиков может быть сколько угодно много, для каждого условия - свой.
Наверное, я где-то еще не докопался. Все найденные мной примеры с магиком моей стратегии не подходят.
 
abeiks:

Добрый день!

 ret_code локальная переменная или глобальная переменная? ret_code сбрасывается после перезапуска терминала? 

Они все сбрасываются после перезапуска, только ГП терминала (те что GlobalVariable) сохраняют свои значения. А ret_code глобальна только в пределах кода, то есть видимость с любой строки и инициализация только при запуске.
 
evillive:
Они все сбрасываются после перезапуска, только ГП терминала (те что GlobalVariable) сохраняют свои значения. А ret_code глобальна только в пределах кода, то есть видимость с любой строки и инициализация только при запуске.
Ясно, спасибо.
 
rapid_minus:
Наверное, я где-то еще не докопался. Все найденные мной примеры с магиком моей стратегии не подходят.
Быть не может. Что мешает в команду открытия позиции вписать магик, соответствующий условию, при котором вы отсылаете команду открытия?
 
artmedia70:
... магик, соответствующий условию,..

т.е. я могу вписать любое число магика(в т. ч. и 1 и 2 и 3) в команду открытия, а потом это же число в команду закрытия?

Значит, я совсем не понимаю магика... Зачем он тогда называется магиком? Я-то думал, что это номер ордера, присваиваемый автоматически при открытии.

Можете мне пояснить суть магика? Неужели всем начинающим он понятен, только я такой дуб? 

И чем хуже идентификация ордера тикетом?

 
rapid_minus:

т.е. я могу вписать любое число магика(в т. ч. и 1 и 2 и 3) в команду открытия, а потом это же число в команду закрытия?

Значит, я совсем не понимаю магика... Зачем он тогда называется магиком? Я-то думал, что это номер ордера, присваиваемый автоматически при открытии.

Можете мне пояснить суть магика? Неужели всем начинающим он понятен, только я такой дуб? 

И чем хуже идентификация ордера тикетом?

magic - магическое число ордера. Может использоваться как определяемый пользователем идентификатор ордера. В некоторых случаях это - единственная информация, по которой можно судить о принадлежности ордера к той или иной открывшей его программе. Параметр устанавливается пользователем, может совпадать или не совпадать со значением этого же параметра других ордеров.
 
rapid_minus:

т.е. я могу вписать любое число магика(в т. ч. и 1 и 2 и 3) в команду открытия, а потом это же число в команду закрытия?

Значит, я совсем не понимаю магика... Зачем он тогда называется магиком? Я-то думал, что это номер ордера, присваиваемый автоматически при открытии.

Можете мне пояснить суть магика? Неужели всем начинающим он понятен, только я такой дуб? 

И чем хуже идентификация ордера тикетом?

То, о чём вы подумали - это тикет - идентификационный номер ордера. Он уникален для каждого ордера и больше не повторяется. А магик - это пользовательский идентификатор, которым можно "пометить" любой ордер. Эти магики могут совпадать для каждого ордера конкретной программы, а могут быть разными в одной программе. Например: у вас советник определяет флет и тренд. Для флета используется стратегия с магиками 123, для тренда используется стратегия с магиками 124. Советник по этим магикам сможет определить к какой стратегии относится выбранный ордер, и принять решение о каких-либо действиях с ним в данным момент времени (именно то, о чём я вам и писал). Но вот в других советниках, работающих у вас на том же самом счёте, магики должны быть любыми, кроме 123 и 124 - чтобы другой советник не трогал "чужие" для него ордера, а работал только со своими, например, с магиком 125.

И, да, вы можете использовать любое целое число - 1, 2, и 3, и 100500 ... лишь бы этот магик не повтрял магик другого советника, который работает та том же самом счёте. Магик может быть и нулевым в советнике, но тогда советник будет считать своими и те ордера, которые вы открыли вручную.

 

r772ra и artmedia70, спасибо за разъяснение.

Я понял так, что магик нужен главным образом тогда, когда трейдер использует несколько советников, при нескольких открытых ордерах, на нескольких валютных парах, счетах и т.д.(так?)

Мне же до этого далеко, и если, как я считаю, мой советник будет работать в плюс, то мне будет этого достаточно. Я его пока разрабатываю для одной пары, одного счета у одного ДЦ, причем открытым должен быть только один ордер, и магик (или к-либо другой идентификатор открытой позиции) нужен только для того, чтобы закрывался он только при наступлении конкретных именно для этого ордера условий, а другие условия, которые действительны для закрытия других ордеров (которые могут быть открыты только после закрытия данного ордера) для этого ордера были не действительны.

Например, ордер БАЙ может быть открыт при появлении условий (а+б+в+г) либо (а+д+е) либо (ж+з+и+к), и в зависимости от того, на каких условиях открыт БАЙ, закрываться он должен по своим условиям:  (а+б+в+г) по (е+ж+л), (а+д+е) по (з+л+м+н), (ж+з+и+к) по (п+р+с+т).

Мне кажется, что и цикл перебора ордеров здесь не нужен. Должно же быть какое-то простое решение, не занимающее много объема. Свое видение я изложил выше, но анализа пока не дождался, а там помимо логических, наверняка есть и синтаксические ошибки (то скобок не хватает, то переменная неправильно задана и т.п.).

Не сочтите за труд, помогите. Без этого застрял. Спасибо 

Ниже - доработанный вариант. 

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