Голову сломал. Может я чего то не знаю? Есть такие функции. Одна получает данные из другой. Первая находит индекс бара с помощью цикла вторая пытается получить индекс бара следующего сигнала на истории при помощи первого индекса.
Первая функция Возвращает значение бара по первому найденному сигналу, а вот вторая возвращает значение первого бара после текущего [0]. По всей видимости принимает полученный индекс первого сигнала за нулевое значение, хотя если подставить вместо значения переменной целое число, все работает. Переменные объявлены в самом верху кода.
Что можно сделать? Джентльмены?
Сами функции вызываются в OnTick() при наступлении условий. Первая функция возвращает значение, с ней проблем нет, я получаю цену по этому индексу.
Если подставить во второй функции вместо значения переменной целое число, все работает.
Сами функции вызываются в OnTick() при наступлении условий. Первая функция возвращает значение, с ней проблем нет, я получаю цену по этому индексу.
Если подставить во второй функции вместо значения переменной целое число, все работает.
Ну и не жадничайте. Скиньте кусочек кода в начале, где они вызываются, и в OnTick().
Сами функции вызываются в OnTick() при наступлении условий. Первая функция возвращает значение, с ней проблем нет, я получаю цену по этому индексу.
Если подставить во второй функции вместо значения переменной целое число, все работает.
Тут вопрос был в другом. В приведенном кусе кода не видно где идет присвоение значения переменной index_sell. Как и с некоторыми другими переменными, не видно их инициации и т.д..
Тут вопрос был в другом. В приведенном кусе кода не видно где идет присвоение значения переменной index_sell. Как и с некоторыми другими переменными, не видно их инициации и т.д..
Вместо переменной можно вставить саму первую функцию IndexSELL(), которая возвращает значение, результат тот же.
А переменные объявлены в самом верху советника, после входных параметров.
int handle_stoch_M1=0; int handle_stoch=0; int handle_stoch_cl=0; int handle_macd_cl=0; int handle_macd=0; int handle_atr=0; int handle_atr2=0; int handle_maLOW=0; int handle_ma=0; int index_sell=0; int index_buy=0; int index_sell2=0; int index_buy2=0; и тдbool OpenSELL() { bool res=false; double macd_current; double macd_previous; double signal_current; double signal_previous; double buff_MACD_main[]; // MACD for indicator main buffer double buff_MACD_signal[]; // MACD for indicator signal buffer ArraySetAsSeries(buff_MACD_main,true); ArraySetAsSeries(buff_MACD_signal,true); if(BarsCalculated(handle_macd)<2) return(false); if(CopyBuffer(handle_macd,0,0,2,buff_MACD_main) !=2 || CopyBuffer(handle_macd,1,0,2,buff_MACD_signal) !=2) { Print("CopyBuffer failed, no data"); return(false); } macd_current =buff_MACD_main[0]; macd_previous =buff_MACD_main[1]; signal_current =buff_MACD_signal[0]; signal_previous =buff_MACD_signal[1]; if(macd_current>0 && macd_current<signal_current && macd_previous>signal_previous) res=true; return(res); }void OnTick(void) { if(OpenSELL()==true) { bars=BarsCalculated(handle_macd); if(bars<=0) return; { LevelSELL(); LevelSELL2();
Первая ф-я возвращает значение, вторая 0.
У меня через Comment значения выводятся на график. Стабильный "0".Сложно без отладчика. Но, похоже, единственное место, где возможен возврат ноля - это
if(macd_current>0) if(macd_current<signal_current && macd_previous>signal_previous) break;
Цикл прерывается на первом проходе, не успев присвоить значение переменной.
Сложно без отладчика. Но, похоже, единственное место, где возможен возврат ноля - это
Цикл прерывается на первом проходе, не успев присвоить значение переменной.
Попробовал инициировать index_sell2 единицей, возвращает 1. Просто не присваивает новое значение.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Голову сломал. Может я чего то не знаю? Есть такие функции. Одна получает данные из другой. Первая находит индекс бара с помощью цикла вторая пытается получить индекс бара следующего сигнала на истории при помощи первого индекса.
Первая функция Возвращает значение бара по первому найденному сигналу, а вот вторая возвращает значение первого бара после текущего [0]. По всей видимости принимает полученный индекс первого сигнала за нулевое значение, хотя если подставить вместо значения переменной целое число, все работает. Переменные объявлены в самом верху кода.
Что можно сделать? Джентльмены?