[АРХИВ!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 4. - страница 449

 
Может я что не так объяснила, нужно отметить только первую свечу на м1 м5 м15 м30 h1 h4, которая начинается в 16:00 мск, а индикатор отмечает (ну например на м15 четыре свечи).
 
Yulia:
Может я что не так объяснила, нужно отметить только первую свечу на м1 м5 м15 м30 h1 h4, которая начинается в 16:00 мск, а индикатор отмечает (ну например на м15 четыре свечи).

Помочь и сделать - немного разные вещи. Вы не согласны?
 
Vinin:

А размер массива задавать не надо?


Да действительно забыл, запарился уже. Теперь массив заполнен, но линии все равно не отображаются. Массивы к буферам привязаны

#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Blue

void init()
        {
        SetIndexBuffer(0, HighMass);
        SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 1);
        SetIndexBuffer(1, LowMass);
        SetIndexStyle(1, DRAW_LINE, STYLE_SOLID, 1);
        }
 
sss2019:


Да действительно забыл, запарился уже. Теперь массив заполнен, но линии все равно не отображаются. Массивы к буферам привязаны

 


Вы бы весь код привели. А то не хочется додумывать то, что для Вас ясно.
 
Vinin:

Помочь и сделать - немного разные вещи. Вы не согласны?

Согласна с вами полностью, я просила помочь, две недели я его ковыряю а нужного результата нет, так что ваш вариант меня тоже не устраивает, ну чтож спасибо и на этом,буду додумывать сама.
 

Доброго времени суток... Вопрос по функции ArrayGetAsSeries. Для того, чтобы понять как работает функции ArrayGetAsSeries написал такой скрипт:

//+------------------------------------------------------------------------------------------+
//|                                                                ArrayGetAsSeries_плюс.mq4 |
//+------------------------------------------------------------------------------------------+
//|                         script program start function                                    |
//+------------------------------------------------------------------------------------------+
//------------------------------------ НАЧАЛО START -------------------------------------- 1 -
int start()                                           //функция start
  {                                                   //начало start
   double Timestart=GetTickCount();                   //переменная, с помощью которой вычисляется время (в милисекундах) начала выполнения эксперта 
   double array1[];                                   //объявляем массив-приемник (массив, куда будут скопированы данные)
   int element=ArrayCopy(array1,Open,0,0,WHOLE_ARRAY);//копируем данные по ценам открытия в пользовательский массив (начиная с нулевого бара)
   int size=ArraySize(array1);                        //устанавливаем количество элементов массива array1
   for(int i=0;i<=4;i++)                              //цикл по просмотру скопированных значений (первых пяти)
       {                                              //начало for
        Alert("Значение цены открытия бара № ",i," равно ",array1[i],
              "\nВремя цены открытия бара № ",i,": ",TimeToStr(iTime(NULL,0,i),TIME_DATE|TIME_MINUTES));//cообщение на экран
       }                                                                 //конец for
//----------------------------------------------------------------------------------------- 2 -
   Comment("\nФункция ArrayCopy(array1[],Open,0,0,WHOLE_ARRAY) вернула: ",element,
           "\nФункция ArraySize(array1) вернула: ",size,
           "\nФункция ArrayGetAsSeries(array1) вернула: ",ArrayGetAsSeries(array1),
           "\nСкрипт выполнялся всего ",GetTickCount()-Timestart," миллисекунд, из них: ",MathFloor((GetTickCount()-Timestart)/1000),
           " секунд ",((GetTickCount()-Timestart)/1000-MathFloor((GetTickCount()-Timestart)/1000))*1000," миллисекунд");//печать 
           //сообщения на экран
//----------------------------------------------------------------------------------------- 3 -
   return(0);                                                             //выход из start
  }                                                                       //конец start
//-------------------------------------- КОНЕЦ START -------------------------------------- 4 -

Скрипт скопировал массив-таймсерию цен открытия баров в пользовательский массив. Очевидно: данный пользовательский массив организован, как массив-таймсерия, так как элементы массива проиндексированы от последнего к первому (об этом свидетельствует скриншот, на к-м функция Alert вывела время и цену открытия четвертого бара. Данный бар на графике отмечен вертикальной чертой; там же видна цена открытия этого бара, а также в окне свойств видно, что время бара то же, что и в функции Alert). Но функция ArrayGetAsSeries возвращает 0, что означает: пользовательский массив НЕ организован, как массив-таймсерия (левый верхний угол скриншота).

Вопрос: почему функция ArrayGetAsSeries вернула 0, хотя пользовательский массив организован, как массив-таймсерия?

P.S. Чтобы не захламлять форум, заранее благодарю за ответ


 
7777877:
Вопрос: почему функция ArrayGetAsSeries вернула 0, хотя пользовательский массив организован, как массив-таймсерия?
То, что вы скопировали данные в некоем порядке совсем не означает что массив организован как таймсерия
 
ilunga:
То, что вы скопировали данные в некоем порядке совсем не означает что массив организован как таймсерия

Но дело в том, что значения цен открытия, к-е воспроизводятся в цикле for из уже скопированного бара индексируются от последнего к первому. Но ведь, насколько я понимаю, это и означает (т.е. индексация от последнего к первому), что массив организован как таймсерия?

P.S. Спасибо за ответ на мой предыдущий вопрос по функциям FileIsEnding и FileIsLineEnding

 
7777877:

Но дело в том, что значения цен открытия, к-е воспроизводятся в цикле for из уже скопированного бара индексируются от последнего к первому. Но ведь, насколько я понимаю, это и означает (т.е. индексация от последнего к первому), что массив организован как таймсерия?

P.S. Спасибо за ответ на мой предыдущий вопрос по функциям FileIsEnding и FileIsLineEnding

Нет, это означает только то, что данные совпали с кусочком истории.

Вы же могли вбить их вручную например. Или записать из текстового файла. Или получить при расчете.


Ведь даже вбив туда некие условные данные "1.25 1.16 1.73 1.35" мы может попасть на историю по какой-то валюте много лет назад. Но это же не означает, что мы организовали массив-таймсерию

 

Я прошу прощения за дублирование вопроса, но я не могу выполнять следующие примеры пока не разберусь с этим.

Помогите пожалуйста разобраться.

Написал простой скрипт на открытие ордера (из учебника MQL4).

int start()                                  // Спец. функция start()
  {                                          // Открытие BUY
   OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-15*Point,Bid+15*Point);
   Alert (GetLastError());
   return;                                   // Выход из start()
  }

В данном примере код приведен для инструментов с 4-мя знаками.

У меня счет в компании у которой 5 знаков после точки.

Напишите пожалуйста как правильно переделать код для 5-ти знаков, и почему при запуске скрипта выдает ошибку 4109 (торговля не разрешена)?


Причина обращения: