Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
В Маркете более 400 индикаторов. Попробуй любой из них!
halk2009
94
halk2009 2015.06.27 03:34 

Здравствуйте! Поможете новичку разобраться с переменными?

Код построен примерно в таком виде:

{

описание логики1

if (выражение1 + выражение3)

}

 {

описание логики 2

if (выражение2 + выражение1)

}

 {

описание логики 3

if (выражение 3+выражение1)

}


Вопрос, как сократить писанину, заменить все выражения переменными, вынести все переменные в начало и сделать их общими для всего кода?

Если в начале кода выношу выражение и заменяю переменной, допустим выражение 1, то код их не видит. (int выражение1 = а;)

Если добавляю перед всем блоком, (чуть выше логики1) int start()  и заключаю весь блок {.. return;}, то пишет ошибку – «function can be declared only in the global scope»

Если поднимаю начало команды int start() выше, то по другим командам (OnInit, Session_Check, OnCalculate) начинает возникать такая же ошибка.

 

 

Скажите пожалуйста, как правильно сделать?

Если выносить «за скобки» все повторяющиеся выражения, количество переменных и длинна выражений имеет значение? (программист, который писал этот код, так не делал, может быть так делать нельзя?)

Vitalie Postolache
11028
Vitalie Postolache 2015.06.29 00:14  

Тут два варианта - или учиться самому хотя бы азам программирования и разобраться с кодом, или отдать код опытному программисту для правки.

А так даже непонятно, что там должно быть. Три функции без названий, без вызова, нет основных функций кода MQL, нет переменных, ни глобальных, ни локальных.

Тут ясновидение не поможет, только вуду и магия крови, наверное...

halk2009
94
halk2009 2015.06.29 13:25  
evillive:

Тут два варианта - или учиться самому хотя бы азам программирования и разобраться с кодом, или отдать код опытному программисту для правки.

А так даже непонятно, что там должно быть. Три функции без названий, без вызова, нет основных функций кода MQL, нет переменных, ни глобальных, ни локальных.

Тут ясновидение не поможет, только вуду и магия крови, наверное...

Наверное надо было сразу выложить код)
Файлы:
Vitalie Postolache
11028
Vitalie Postolache 2015.06.29 14:20  

Исправил код, чтобы компилятор не ругался. В остальном, претензии непонятны, вся "писанина" вроде на своих местах.

Какие именно переменные вам кажутся настолько "не на своём месте", что их необходимо "вынести" куда-то ещё?

halk2009
94
halk2009 2015.06.29 15:45  
evillive:

Исправил код, чтобы компилятор не ругался. В остальном, претензии непонятны, вся "писанина" вроде на своих местах.

Какие именно переменные вам кажутся настолько "не на своём месте", что их необходимо "вынести" куда-то ещё?


В том коде который я выложил в строке 419 - это моя попытка заменить выражение переменной. Дело в том что тут нету ещё одной логики которую хочу дописать, ниже её пример в строке 440.

В двух словах что хочу сделать. В этом индикаторе есть 6 горизонтальных линий. (то что я заменил переменной, это одна из них - линия sell) А ниже дописан фрагмент в  строке 440 (там выражение которое соответствует линии Sell2), туда же ещё нужно дописать остальные 4 - LineDown, buy, buy2 LineUp. И так в каждом блоке. Всего блоков 6. ( LineDown, sell2, sell, buy, buy2, LineUp). Конечно можно одно и тоже написать кучу, раз, но разве нельзя заменить 6 линий переменными, что бы использовать в дальнейшем только названия переменных ?

Vitalie Postolache
11028
Vitalie Postolache 2015.06.29 16:13  
Всё можно, только для этого надо полностью переписать индикатор с нуля.
halk2009
94
halk2009 2015.06.29 21:22  
evillive:
Всё можно, только для этого надо полностью переписать индикатор с нуля.

Ясно, ну переписать индикатор с нуля я точно не смогу, так что получается вопрос закрыт)

Спасибо за помощь! Буду тогда заниматься "писаниной"))

/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий