[АРХИВ!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 4. - страница 514
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Может так будет компилироваться:
хотя структура код какая-то "левая"...
Ну.. это ж я писал. Пой первый совок. :)
Я переписал чутка эксперт. Вот что вышло:
Кстати, ошибка:
возникает именно в функции start не определены переменные эти, а не где-н. ещё. Значит что-то в start нужно добавить?
Кстати, ошибка:
возникает именно в функции start не определены переменные эти, а не где-н. ещё. Значит что-то в start нужно добавить?
В start() их нужно определить, а в вызываемую функцию передавать по ссылке.
Это самый простой вариант. Но я вот наблюдаю за статьями одного программиста, и у него в функции start ничего не объявляется вообще.
Вот ссылка на его советник:
http://www.forextrade.ru/media/Image/MQLabs/181_ag/ChannelByMACross_Expert.mq4
В частности, мне очень интересно, как он грамотно пишит коды. Поэтому, хочется научится писать всё отдельными функциями, а в start добавлять только самое необходимое без объявления там переменных.
Ведь если мы передаём в функцию переменную по ссылке, то мы работает с буфером самой исходной переменной, которую передаём, а не с отдельным её дублем. А значит не важно, в какой функции до этого мы её объявили. Разве не так?
Это самый простой вариант. Но я вот наблюдаю за статьями одного программиста, и у него в функции start ничего не объявляется вообще.
Можно объявить статическую переменную вне функций и тогда вообще ничего передавать по ссылкам не придется.
Ведь если мы передаём в функцию переменную по ссылке, то мы работает с буфером самой исходной переменной, которую передаём, а не с отдельным её дублем. А значит не важно, в какой функции до этого мы её объявили. Разве не так?
Это самый простой вариант. Но я вот наблюдаю за статьями одного программиста, и у него в функции start ничего не объявляется вообще.
Вот ссылка на его советник:
http://www.forextrade.ru/media/Image/MQLabs/181_ag/ChannelByMACross_Expert.mq4
В частности, мне очень интересно, как он грамотно пишит коды. Поэтому, хочется научится писать всё отдельными функциями, а в start добавлять только самое необходимое без объявления там переменных.
Ведь если мы передаём в функцию переменную по ссылке, то мы работает с буфером самой исходной переменной, которую передаём, а не с отдельным её дублем. А значит не важно, в какой функции до этого мы её объявили. Разве не так?
Он также грамотно написал
почитай
Да, поменяй строчку
if(!Trade(signal, priceForBuy, priceForSell))на
if(!GetPriceToInput (signal))Когда уже Диман, ты осилишь ЛИЧНЫЙ камп? :-)
Неужели за год на реале ещё бабла не нарубил? Там же вроде и СТАРТОВЫЕ суммы тебе не хилые выделены? :-)
сКОРО.
Можно объявить статическую переменную вне функций и тогда вообще ничего передавать по ссылкам не придется.
Неправильно мыслите. Если вы передаете переменную в качестве аргумента функции, то теле функции ее объявлять не надо - она уже объявлена в аргументе. Объявлять функцию нужно там, откуда она передается.Я имел ввиду не важно передаём мы из функции start или из какой-н. другой функции.
В данном случае я объявил переменные в функции double GetPriceToInput(int signal) и передал по ссылке объявленнные в этой же функции double GetPriceToInput(int signal) переменные priceForSell и priceForBuy в функцию bool Trade(int signal, double& priceForBuy, double& priceForSell).
Данную функцию я добавил в функцию start и вижу, что там они уже неопределены. Хочу понять как это исправить.
Конечно, можно объявить эти 2 переменные как вы сказали, в start сразу, но можно же их непосредственно из функции double GetPriceToInput(int signal) передать их. Вот что я имею ввиду.
Я имел ввиду не важно передаём мы из функции start или из какой-н. другой функции.
В данном случае я объявил переменные в функции double GetPriceToInput(int signal) и передал по ссылке объявленнные в этой же функции double GetPriceToInput(int signal) переменные priceForSell и priceForBuy в функцию bool Trade(int signal, double& priceForBuy, double& priceForSell).
Данную функцию я добавил в функцию start и вижу, что там они уже неопределены. Хочу понять как это исправить.
Куда Вы их передали и зачем присваиваете значения там, куда их не передавали?
Куда Вы их передали и где Вы им присваиваете значения?
Ну я же получил значения переменных в функции double GetPriceToInput(int signal)
Вот:
double priceForSell = secondBarClosed - deltaForSell;double priceForBuy = secondBarClosed + deltaForBuy;Возвращаю эти значения:
return(priceForSell);return(priceForBuy);Т.е. значения уже ф-ция вернула этих переменных.
Дальше я эти значения по ссыле посылаю в ф-цию bool Trade(int signal, double& priceForBuy, double& priceForSell):
Тут же всё очевидно!