[АРХИВ!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 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):
Тут же всё очевидно!