Подскажите как ограничить поиск вершин на определённом промежутке времени
Например
старт = 16.10.2023
стоп = 19.10.2023
Мне надо там найти max high и min low
Вообще требуется цикл баров на промежутке от и до
Обращение по начальной и конечной датам требуемого интервала времени int CopyRates( string symbol_name, // имя символа ENUM_TIMEFRAMES timeframe, // период datetime start_time, // с какой даты datetime stop_time, // по какую дату MqlRates rates_array[] // массив, куда будут скопированы данные );
https://www.mql5.com/ru/docs/series/copyrates
https://docs.mql4.com/ru/series/copyrates
И в скопированном ищете.
Это мне понятно как максимальное значение найти
Я не пойму как ограничить цикл поиска ОТ и ДО
int iHighest( const string symbol, // символ ENUM_TIMEFRAMES timeframe, // период ENUM_SERIESMODE type, // идентификатор таймсерии int count=WHOLE_ARRAY, // число элементов Сколько баров в поиске, это ДО int start=0 // индекс бара с которого начать поиск, это ОТ );
Не находит нужную точку
extern datetime tStart = D'2023.10.16 01:00'; //Дата Start extern datetime tEnd = D'2023.10.19 01:00'; //Дата End int start() { int BarStart=iBarShift(Symbol(),0,tStart); int BarEnd=iBarShift(Symbol(),0,tEnd); double MaxLev=iHigh(Symbol(),0,iHighest(Symbol(),0,MODE_HIGH,BarEnd,BarStart)); }
Вот мне на промежутки времени надо найти максимальное значение
`
Ниже приведен фрагмент из кода. Показано определение максимума. По аналогии проверьте получение минимума.
for(int i = IndexTF_inArray; i>=0; i--) //--- получен цикл от текущего индекса периода до минимально-возможного индекса периодов { //--- //--- по полученным данным дат баров получим последовательность баров внутри указанного диапазона дат . //--- затем на этом же участке будет найден номер экстремума datetime TMi[]; // array temp for datetime ArraySetAsSeries(TMi,true); int TMi_sz = CopyTime(_Symbol,allTF[i],LF_boder,RH_boder,TMi); //--- double HIi[]; // array temp for HI ArraySetAsSeries(HIi,true); int HIi_sz = CopyHigh(_Symbol,allTF[i],LF_boder,RH_boder,HIi); //--- // получить номер бара с максимальным значением int HIi_max = ArrayMaximum(HIi); //Alert(" номер бара экстремума - по максимуму : ", HIi_max, " период : ", EnumToString(allTF[i]), " время МАКСИМУМА: ", TMi[HIi_max], " цена максимума : ", HIi[HIi_max]); //--- // провести построения по следующим направлениям : //---
Этот вопрос я решил так:
extern datetime tStart = D'2023.10.15 01:00'; //Дата Start extern datetime tEnd = D'2023.10.30 01:00'; //Дата End void start() { int BarStart=iBarShift(Symbol(),0,tStart); int BarEnd=iBarShift(Symbol(),0,tEnd); double MaxLev=iHigh(Symbol(),0,iHighest(Symbol(),0,MODE_HIGH,BarStart-BarEnd,BarEnd)); double MinLev=iLow(Symbol(),0,iLowest(Symbol(),0,MODE_LOW,BarStart-BarEnd,BarEnd)); }
Теперь требуется решить ещё одну задачу
Мне надо найти время видимого бара с левого края окна графика
И если прокручиваем график назад по истории, то всегда этот бар обновляется
Этот вопрос я решил так:
Теперь требуется решить ещё одну задачу
Мне надо найти время видимого бара с левого края окна графика
И если прокручиваем график назад по истории, то всегда этот бар обновляется
Документацию полезно читать даже просто так.
CHART_FIRST_VISIBLE_BAR | Номер первого видимого бара на графике. Индексация баров соответствует таймсерии. | int r/o |
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Подскажите как ограничить поиск вершин на определённом промежутке времени
Например
старт = 16.10.2023
стоп = 19.10.2023
Мне надо там найти max high и min low
Вообще требуется цикл баров на промежутке от и до