Глобальные переменные против записи в файл - страница 2

 
toast:

Спасибо за ответ.

Да, я согласен.

Но проблема будет заключаться в следующем:

Открывается сделка с магическим числом 123.

При управлении этой сделкой советник будет искать GV с именем 123xxxxx.

Теперь пользователь меняет настройки советника для магического числа на 789, пока сделка все еще активна.

Теперь советник ищет GV с именем 789xxxxx (которого не существует).

По сути, я ищу соглашение об именовании GV, которое не может быть изменено пользователем.


Не скрывайте магическое число.

Простой способ - сообщить пользователям, что такое магическое число, и они будут знать, как с ним обращаться.

 
angevoyageur:
Не позволяйте изменять магическое число, если все еще есть открытые сделки со старым магическим числом.


Например, если нет открытых ордеров, то изменение вступит в силу. Если все еще есть открытые сделки, пользователь все еще может изменить, но изменения не вступят в силу.


Эта логика может быть сделана довольно просто.

 

Спасибо за ответ.

Думаю, это возможно, но немного муторно? Единственный способ, который я могу придумать, это перебрать все ордера и проверить, нет ли открытых ордеров. Если это так, то применить ввод int MagicNumber к int NewMagic.

Или есть более простой способ?

ChartID() кажется намного проще, есть ли проблемы с его использованием?

 

Думаю, я писал одновременно с несколькими другими...

@fxMeter - если они хотят использовать советника на нескольких графиках, то мне нужен какой-то способ постоянно менять магическое число, не сталкиваясь с дублированием. Что снова возвращает нас к GVs.

@deysmacro - я думаю, мы думали об одном и том же решении.

Но опять же - все это кажется большой работой, если можно использовать ChartID()?

 
toast:

Думаю, я писал одновременно с несколькими другими...

@fxMeter - если они хотят использовать советника на нескольких графиках, то мне нужен какой-то способ постоянно менять магическое число, не сталкиваясь с дублированием. Что снова возвращает нас к GVs.

@deysmacro - я думаю, мы думали об одном и том же решении.

Но опять же - все это кажется большой работой, если можно использовать ChartID()?


Сначала много работы. А после внедрения - мало работы.

С кодингом всегда так. :)

 
Я согласен, что это можно сделать, но мне опять же интересно, почему люди против использования ChartID()? Есть ли в этом что-то неправильное?
 
toast:
Я согласен, что это можно сделать, но мне опять же интересно, почему люди против использования ChartID()? Есть ли в этом что-то неправильное?

https://forum.mql4.com/62102
 

Спасибо за ссылку, но я не думаю, что эта проблема применима ко мне - я не собираюсь передавать ChartID другим экземплярам советника.

Я просто хочу знать, является ли ChartID() надежным, уникальным идентификатором текущего графика для использования в качестве имени GV?

 
toast:

Спасибо за ссылку, но я не думаю, что эта проблема применима ко мне - я не собираюсь передавать ChartID другим экземплярам советника.

Я просто хочу знать, является ли ChartID() надежным, уникальным идентификатором текущего графика для использования в качестве имени GV?


Лучше иметь идентификатор, встроенный в ваш советник. Оттуда вы можете делать много вещей, и это надежно.
 
toast:

Спасибо за ссылку, но я не думаю, что эта проблема применима ко мне - я не собираюсь передавать ChartID другим экземплярам советника.

Я просто хочу знать, является ли ChartID() надежным, уникальным идентификатором текущего графика для использования в качестве имени GV?


magic number и ChartID() - это совершенно разные вещи. magic регистрируется вместе с вашей сделкой на стороне сервера. ChartID() служит только для идентификации графика в вашем текущем экземпляре терминала.