Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Вы не получаете "доступа к массиву котировок", а лишь копируете его в свой собственный массив. Соответственно, никакие манипуляции со своим собственным массивом не могут привести к изменению базового массива графика. Из MQL4 принципиально нельзя изменять данные графика. Это сделано ради безопасности и не будет изменено.
#property indicator_chart_window
double ArrayLow[];
double ArrayHigh[];
int start()
{
ArrayCopySeries(ArrayLow,MODE_LOW);
ArrayCopySeries(ArrayHigh,MODE_HIGH);
ArrayHigh[1]=ArrayHigh[1]+50*Point;
ArrayLow[1]=ArrayLow[1]-50*Point;
Print(ArrayHigh[1]," ",High[1]);
return(0);
}
Меняется и Хай, и Лоу предыдущего бара, и САМ ГРАФИК! Прокомментируйте. Я бы не писал, если бы сначала не проверил. С уважением.
Тут я ошибся - массив виртуально перенаправляется без физического копирования. Извините.
Дело в том, что таким образом Вы получаете доступ (и на изменение тоже) в текущий временный кеш-буфер, используемый для отрисовки графика. Соответственно, Ваши изменения будут отрисовываться на графике некоторое время до момента полного обновления этого буфера. Но в самой реальной базе данных History Center Вы ничего не измените (проверьте сами).
Кеш-буфер обновляется очень экономно, поэтому Вы можете наблюдать некоторое продолжительное время изменения, внесенные их эксперта. Вот такой вот интерсный эффект проявился - сами даже не догадывались.
1. Писал в другой ветке, но чего-то не отреагировали, хоть бы кивнули. Функция ArrayCopySeries(double& array[],int series_index,string symbol=NULL,int period=0) не хочет принимать два последних параметра, если они имеют значение по умолчанию (но не пропущены совсем). Т.е. если значение параметра symbol задать NULL, то функция возвращает -1, а в лог выводит "symbol name for ArrayCopySeries is to be a string". Если period задать равным 0, также возвращает -1, в лог выводит "ArrayCopySeries function internal error".
2. Во встроенной справке MetaEditor есть такое описание: int Volume[]. Однако на практике, если я, например, задаю строку: ArrayCopySeries(MyArray,MODE_VOLUME), при этом предварительно объявив int MyArray[], в лог пишет ошибку типов. Просит double MyArray[]. А в примере функции ArrayCopyRates вообще все элементы массива имеют тип double, в том числе и Volume, и Time. Так какие на самом деле типы или тут неявное приведение?
2. volume имеет тип double в связи с тем, что у нас появились месячные графики
Этот эффект краткосрочен - на него полагаться нельзя ни в коем случае.
И он действует только на кеш текущего графика, а на другие фреймы не имеет влияния (доступ идет в локальные неотображаемые внутренние кеши других графиков).
Это реальная база - нажмите F2.