[АРХИВ!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 4. - страница 314
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Не сочтите за тормоза, впервые имею дело с многомерными массивами :)
Ориетироваться будет проще, если представить многомерный массив как нечто иное. А именно: если найти для массива модель, которая отражает его суть - модель легче держать перед глазами.
Одномерный массив - это объекты на линии (координатный луч, начинающийся с нуля). Примером такого массива может служить очередь в магазине. Первый на очереди - это тот, кто стоит сразу за человеком, который сейчас покупает. Покупающего же нельзя назвать первым в очереди - он покупает - он нулевой. Он находится внутри нулевой ячейки одномерного массива.
Двумерный массив - это объекты в плоскости (координатная плоскость). Примером может быть зрительный зал. Такой-то ряд, такое-то место. Добавьте к этой модели нулевой ряд и нулевое место и Вы получите точную модель двумерного массива.
Трёхмерный массив - это объекты в пространстве (координатное пространство) - координата объекта задаётся тремя величинами. Это куб, с разграфлёнными гранями. Моделью может служить жилой дом, в котором есть подъезд номер ноль, этаж номер ноль и квартира номер ноль (помимо всех прочих). При условии, что в каждом подъезде нумерация квартир начинается с нуля.
Четырёхмерный массив - это подобие одномерного массива. Это координатный луч, все точки которого - трёхмерные массивы. Модель - улица. Коорданата будет задаваться величинами: номер дома, номер подъезда, номер этажа, номер квартиры.
Ну и так далее в энн-мерность - от улиц переходим к районам, от районов города, от районов к городам, от городов к странам, от стран к планетам...
может кто-нибудь обьяснит как сделать так что бы открываемый ордер мог открываться в любо момент бара а следуюший только на следующем баре?
Проходим циклом по списку ордеров. Если время открытия очередного ордера больше или равно времени открытия текущего бара (Time[0]), то устанавливаем флаг, запрещающий открывать ордера на данной валютной паре. На селдующей свечке цикл обнаружит, что такого ордера нет и не поставит запрета - то есть, снимет флаг запрета открытия ордеров.
Проходим циклом по списку ордеров. Если время открытия очередного ордера больше или равно времени открытия текущего бара (Time[0]), то устанавливаем флаг, запрещающий открывать ордера на данной валютной паре.
аааа спасибо большое
Если код работает только по одной валютной паре, то поставьте отсеивание ордеров других пар строкой
Если код работает только по одной валютной паре, то поставьте отсеивание ордеров других пар строкой
Можно.
Можно.
bool Times=true;
if (OrdersTotal()>0){
for(int g=OrdersTotal()-1; g>=0; g--){
datetime t;
OrderSelect(g,SELECT_BY_POS);
if (OrderMagicNumber()!=MagicNumber){continue;}
if (t<OrderOpenTime() || g==OrdersTotal()-1) t=OrderOpenTime();
if (t>=Time[0]) Times=false;}}
вот так правильно?
bool Times=true;
if (OrdersTotal()>0){
for(int g=OrdersTotal()-1; g>=0; g--){
datetime t;
OrderSelect(g,SELECT_BY_POS);
if (OrderMagicNumber()!=MagicNumber){continue;}
if (t<OrderOpenTime() || g==OrdersTotal()-1) t=OrderOpenTime();
if (t>=Time[0]) Times=false;}}
вот так правильно?
Нет. Не нужно внутри цикла на каждой его итерации объявлять переменную.
bool Times=true;
if (OrdersTotal()>0){
for(int g=OrdersTotal()-1; g>=0; g--){
datetime t;
OrderSelect(g,SELECT_BY_POS);
if (OrderMagicNumber()!=MagicNumber){continue;}
if (t<OrderOpenTime() || g==OrdersTotal()-1) t=OrderOpenTime();
if (t>=Time[0]) Times=false;}}
вот так правильно?
bool Times=true;
datetime t=Time[1];
if (OrdersTotal()>0){
for(int g=OrdersTotal()-1; g>=0; g--){
OrderSelect(g,SELECT_BY_POS);
if (OrderMagicNumber()!=MagicNumber){continue;}
if (t<OrderOpenTime()) t=OrderOpenTime();
if (t>=Time[0]) Times=false;}}
вот так правильно?