Неа, никто не будет вникать в код который выложили В ВИДЕ КАРТИНКИ :)
Вам нужно ставить код нужно правильно в сообщение на форуме.
Кнопка предназначена для вставки исходного кода в текст сообщения. При нажатии появляется пустое окно, в которое необходимо вставить код и далее нажать кнопку Вставить. Для отмены вставки кода необходимо нажать кнопку Отмена.
Исходный код, вставленный таким образом, будет красиво отформатирован моноширинным шрифтом, удобным для восприятия подобного рода информации.
Не рекомендуется выделять код полужирным шрифтом, чтобы выделить как-то по смыслу определенные куски. Дело в том, что в разных операционных системах и браузерах моноширинные шрифты отображаются по-разному. Например, в Windows Vista используется моноширинный шрифт Consolas, у которого полужирное начертание для 10 размера практически не отличимо от обычного.
Неа, никто не будет вникать в код который выложили В ВИДЕ КАРТИНКИ :)
Вам нужно ставить код нужно правильно в сообщение на форуме.
Кнопка предназначена для вставки исходного кода в текст сообщения. При нажатии появляется пустое окно, в которое необходимо вставить код и далее нажать кнопку Вставить. Для отмены вставки кода необходимо нажать кнопку Отмена.
Исходный код, вставленный таким образом, будет красиво отформатирован моноширинным шрифтом, удобным для восприятия подобного рода информации.
Не рекомендуется выделять код полужирным шрифтом, чтобы выделить как-то по смыслу определенные куски. Дело в том, что в разных операционных системах и браузерах моноширинные шрифты отображаются по-разному. Например, в Windows Vista используется моноширинный шрифт Consolas, у которого полужирное начертание для 10 размера практически не отличимо от обычного.
Не знал, но как есть так так есть, в будущем учту. Чё-то по существу можете подсказать?
Не знал, но как есть так так есть, в будущем учту. Чё-то по существу можете подсказать?
Извините, по картинкам информацию не воспринимаю.
Не знал, но как есть так так есть, в будущем учту. Чё-то по существу можете подсказать?
А где у Вас #property indicator_plots ?
***
там единственная разница была только в функциях Open[i], Close[i] и iOpen(Symbol(),PERIOD_CURRENT,i), iClose(Symbol(),PERIOD_CURRENT,i), а весь остальной код фактически был скопирован и уже ни однократно проверен
Данный подход в индикаторах использовать не стоит. Индикатор в OnCalculate уже передаёт все массивы-таймсерии по текущему символу и таймфрейму.
Что именно делает Вам индикатор?
А где у Вас #property indicator_plots ?
Добавил, но ничего не изменилось
Данный подход в индикаторах использовать не стоит. Индикатор в OnCalculate уже передаёт все массивы-таймсерии по текущему символу и таймфрейму.
Что именно делает Вам индикатор?
#property copyright "Alexandr Sokolov" #property link "www.facebook.com/thealexandrsokolov" #property version "1.00" #property indicator_separate_window #property indicator_minimum 0 #property indicator_buffers 2 #property indicator_type1 DRAW_HISTOGRAM #property indicator_color1 clrGreen #property indicator_label1 "Восходящее движение" #property indicator_type2 DRAW_HISTOGRAM #property indicator_color2 clrRed #property indicator_label2 "Нисходящее движение" #property indicator_plots 2 double Buffer_1[], Buffer_2[]; static bool for_buy = false; static bool for_sell = false; //------------------------------------------------------------------------------------------------- int OnInit() { SetIndexBuffer(0,Buffer_1,INDICATOR_DATA); SetIndexBuffer(1,Buffer_2,INDICATOR_DATA); //----------------------------------------------------------------- return(INIT_SUCCEEDED); } //------------------------------------------------------------------------------------------------- int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { int limit = rates_total - prev_calculated; if(prev_calculated > 0) {limit++;}; for(int i = 0; i < limit; i++) { if(iClose(Symbol(),PERIOD_CURRENT,i) >= iOpen(Symbol(),PERIOD_CURRENT,i)) {Buffer_1[i] = iClose(Symbol(),PERIOD_CURRENT,i) - Value(i,0);} else {Buffer_1[i] = 0;}; if(iOpen(Symbol(),PERIOD_CURRENT,i) > iClose(Symbol(),PERIOD_CURRENT,i)) {Buffer_2[i] = Value(i,1) - iClose(Symbol(),PERIOD_CURRENT,i);} else {Buffer_2[i] = 0;}; }; //----------------------------------------------------------------- return(rates_total); } //------------------------------------------------------------------------------------------------- double Value(int i, int o) { double value = 0.0; if(iClose(Symbol(),PERIOD_CURRENT,i) >= iOpen(Symbol(),PERIOD_CURRENT,i) && o == 0) { for_buy = true; for(int a = i; for_buy == true; a++) { if(iClose(Symbol(),PERIOD_CURRENT,a) >= iOpen(Symbol(),PERIOD_CURRENT,a)) {value = iOpen(Symbol(),PERIOD_CURRENT,a);} else {for_buy = false;}; }; }; if(iOpen(Symbol(),PERIOD_CURRENT,i) > iClose(Symbol(),PERIOD_CURRENT,i) && o == 1) { for_sell = true; for(int b = i; for_sell == true; b++) { if(iOpen(Symbol(),PERIOD_CURRENT,b) > iClose(Symbol(),PERIOD_CURRENT,b)) {value = iOpen(Symbol(),PERIOD_CURRENT,b);} else {for_sell = false;}; }; }; //----------------------------------------------------------------- return(value); }
Данный подход в индикаторах использовать не стоит. Индикатор в OnCalculate уже передаёт все массивы-таймсерии по текущему символу и таймфрейму.
Что именно делает Вам индикатор?
Показывает разницу между ценой открытия и закрытия одинаковых свечей
Например есть 3 растущие свечи подряд, индикатор покажет разницу между ценой закрытия действующей свечи и ценой открытия 3 (или в коде 2) свечи
Данный подход в индикаторах использовать не стоит. Индикатор в OnCalculate уже передаёт все массивы-таймсерии по текущему символу и таймфрейму.
Что именно делает Вам индикатор?
А почему не стоит?
А почему не стоит?
Потому, что Индикатор в OnCalculate уже передаёт все массивы-таймсерии по текущему символу и таймфрейму.
В индикаторе УЖЕ есть массивы-таймсерии OHLC, volume, tick volume и spread.
При этом помните про индикаторы (порядок индексации) в MQL5: просто распечатайте значение
Print("time[0]=",time[0],", time[rates_tota-1]=",time[rates_tota-1]);
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Моя проблема заключается в том что в MT5 не отображается гистограмма индикатора, я посмотрел на стандартные примеры в справке, ни ошибок ни предупреждений компилятор не нашел
Вот так выглядит инициализация и #property на MQL4
А так на MQL5
И в итоге
Подскажите пожалуйста в чём проблема. В формулах расчёта значений индикатора точно нет ошибок, там единственная разница была только в функциях Open[i], Close[i] и iOpen(Symbol(),PERIOD_CURRENT,i), iClose(Symbol(),PERIOD_CURRENT,i), а весь остальной код фактически был скопирован и уже ни однократно проверен