Да вот и я так-же подумал когда писал на коленке. А когда вставил в void OnStart() скрипта и в журнале получил выход за пределы массива пришёл к такому выводу. А в твоём примере int start() а это старая версия написания и без #property strict
А без #property strict вот что выдаёт.
#property version"1.00"//#property strictdouble arr[];
//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
arr[0] = 300.0;
arr[1] = 254.0;
arr[2] = Bid;
Alert("В массиве arr под индексом 0 значение ", arr[0]); // 300Alert("В массиве arr под индексом 1 значение ", arr[1]); // 254Alert("В массиве arr под индексом 2 значение ", arr[2]); // Bid
}
//+------------------------------------------------------------------+
допустим запускаю советник, тут же на первом тике с помощью Bid советник должен запомнить эту цену до определённого момента, может на день, может на час.
х.з. (хотел-бы знать) почему, но в 634м билде, как и в 711м, в int start() и без #property strict выдаёт значения 0 во всём массиве если объявить массив без указания его размера...
х.з. (хотел-бы знать) почему, но в 634м билде, как и в 711м, в int start() и без #property strict выдаёт значения 0 во всём массиве если объявить массив без указания его размера...
#property strict означает нормальный уровень программирования. " Понимаю, что делаю. "
допустим запускаю советник, тут же на первом тике с помощью Bid советник должен запомнить эту цену до определённого момента, может на день, может на час.
С помощью чего запомнить можно?
Никакого прикола. Если надо запомнить значение и не менять его на протяжении какого-то времени, то надо поставить условие
если(событие) присвоить переменной или элементу массива какое-то значение.
При этом переменная или массив должен быть объявлен на уровне глобальных переменных, или static.
1. нововведения mql4 в том, что размер массива должен быть указан.
2. х.з. (хотел-бы знать) почему, но в 634м билде, как и в 711м, в int start() и без #property strict выдаёт значения 0 во всём массиве если объявить массив без указания его размера...
1. Нет ( это было во всех версиях МКЛ): до использования массива под него должна быть отведена память, хоть статически (при описании явно - arr[5] или при инициализации - arr[] = {1,2,3,4,5};) хоть динамически ( ArrayResize(arr,5); ).
С какого перепуга?
Да вот и я так-же подумал когда писал на коленке. А когда вставил в void OnStart() скрипта и в журнале получил выход за пределы массива пришёл к такому выводу. А в твоём примере int start() а это старая версия написания и без #property strict
А без #property strict вот что выдаёт.
А за пределы лучше не выходить.
Вот:
0 error(s), 0 warning(s) 1 1
допустим запускаю советник, тут же на первом тике с помощью Bid советник должен запомнить эту цену до определённого момента, может на день, может на час.
С помощью чего запомнить можно?
А в твоём примере int start()
х.з. (хотел-бы знать) почему, но в 634м билде, как и в 711м, в int start() и без #property strict выдаёт значения 0 во всём массиве если объявить массив без указания его размера...
А за пределы лучше не выходить.
Вот:
0 error(s), 0 warning(s) 1 1
х.з. (хотел-бы знать) почему, но в 634м билде, как и в 711м, в int start() и без #property strict выдаёт значения 0 во всём массиве если объявить массив без указания его размера...
допустим запускаю советник, тут же на первом тике с помощью Bid советник должен запомнить эту цену до определённого момента, может на день, может на час.
С помощью чего запомнить можно?
Никакого прикола. Если надо запомнить значение и не менять его на протяжении какого-то времени, то надо поставить условие
если(событие) присвоить переменной или элементу массива какое-то значение.
При этом переменная или массив должен быть объявлен на уровне глобальных переменных, или static.
1. нововведения mql4 в том, что размер массива должен быть указан.
2. х.з. (хотел-бы знать) почему, но в 634м билде, как и в 711м, в int start() и без #property strict выдаёт значения 0 во всём массиве если объявить массив без указания его размера...
1. Нет ( это было во всех версиях МКЛ): до использования массива под него должна быть отведена память, хоть статически (при описании явно - arr[5] или при инициализации - arr[] = {1,2,3,4,5};) хоть динамически ( ArrayResize(arr,5); ).
2. Более подробнее писал уже.