Вопросы оператора цикла "для - страница 16

 
RaptorUK:

Неа, это неправильно... избавьтесь от этого. Позиции и индексы - это одно и то же, и они от 0 до 9... Нет ничего, что было бы от 1 до 10... выкиньте это из своего мозга.

Это нужно срочно исправить.

Если индексы и номера позиций идентичны, то это верно...

Всего десять билетов в пуле ордеров активных сделок:

номера позиций билетов следующие: 0,1,2,3,4,5,6,7,8,9

номера позиций билетов проиндексированы следующим образом: |0|1|2|3|4|5|6|7|8|9|

Если это действительно так, то номер позиции билета может быть нулевым (0).

Пожалуйста, подтвердите вышеприведенные утверждения или укажите обратное.


Спасибо.

 
WhooDoo22:

Это нужно срочно исправить.

Если индексы и номера позиций идентичны, то это верно...

Всего десять билетов в пуле ордеров активных сделок:

номера позиций билетов следующие: 0,1,2,3,4,5,6,7,8,9

номера позиций билетов проиндексированы следующим образом: |0|1|2|3|4|5|6|7|8|9|

Если это действительно так, то номер позиции билета может быть нулевым (0).

Мы уже проходили это раньше... Ордер имеет номер тикета... Ордер также имеет позицию в торговом пуле для открытых/отложенных ордеров или в пуле истории для закрытых ордеров...

Если у нас есть 10 открытых ордеров, позиции ордеров будут от 0 до 9 или 0,1,2,3,4,5,6,7,8,9 или |0|1|2|3|4|5|6|7|8|9| end, Fin, done

 
RaptorUK:

Мы уже проходили это раньше... Ордер имеет номер тикета... Ордер также имеет позицию в торговом пуле для открытых/отложенных ордеров или в пуле истории для закрытых ордеров...

Если у нас есть 10 открытых ордеров, позиции ордеров будут от 0 до 9 или 0,1,2,3,4,5,6,7,8,9 или |0|1|2|3|4|5|6|7|8|9| end, Fin, done


Спасибо.
 

Здравствуйте форумчане сообщества MQL4,

В настоящее время я пытаюсь сохранить значения цен при закрытии ордеров. Пробовал включать функцию OrderProfit(), но она мне не нравится. Нет-нет :O .Буду использовать ее, если все остальные способы не сработают. Я хотел бы сохранить цену закрытия ордера :) вместо этого использую функцию OrderClosePrice(). Как только все цены закрытия ордеров будут сохранены, я смогу сгруппировать результаты попарно. После группировки в пары, сложите каждую группу, затем разделите каждую группу на два, чтобы получить среднее значение. Когда все пары будут усреднены, перегруппируйте результаты и повторите процесс. Когда все пары будут усреднены и останется только один итог, я вычту спред из этого итога, и если результат будет больше или равен (>=) цене открытия ордера, булево значение останется ложным. Если результат меньше, чем цена открытия ордера, то булево значение инициализируется как true.

Кто-нибудь уже проходил этот путь? Если да, то не могли бы вы дать несколько предупреждений, которые следует иметь в виду?

Спасибо

 
WhooDoo22:

Кто-нибудь уже проходил этот путь? Если да, можете ли вы дать несколько предупреждений, о которых следует помнить?

Не делайте этого ... читайте все, что вам нужно, из исторического пула, там все есть. Будьте проще ... если вы сохраняете данные в массиве, вы должны сохранить их в файл, чтобы в случае сбоя MT4 или ПК вы могли получить их обратно ... и т.д. и т.п.

HEADACHE
 

Ах да, исторический бассейн. "Бесспорно!". Ты прямо профи Саймон! Хахаха! ;) Почему я не подумал об этом первым, верно?

Ты еще сделаешь из меня "рок-звезду кодирования MQL4"! Хахахаха!

Спасибо

 

Саймон,

Я изучал документацию по операторам 'Break' и 'Continue'. Насколько я могу судить, оператор 'Break' завершает цикл оператора 'while' или 'for', передавая управление программой следующей строке кода ниже цикла 'while' или 'for'. Оператор 'Continue' прекращает чтение тела цикла оператора 'while' или 'for' и передает управление программой либо выражению в цикле оператора 'while', либо 'Выражению 2', если цикл 'for' не имеет 'Выражения 3', либо 'Выражению 3', если цикл 'for' имеет 'Выражение 3'.

Каковы ваши мысли по этому поводу?

Спасибо

 
WhooDoo22:

Саймон,

Я изучал документацию по операторам 'Break' и 'Continue'. Насколько я могу судить, оператор 'Break' завершает цикл оператора 'while' или 'for', передавая управление программой следующей строке кода ниже цикла 'while' или 'for'. Оператор 'Continue' прекращает чтение тела цикла оператора 'while' или 'for' и передает управление программой либо выражению в цикле оператора 'while', либо 'Выражению 2', если цикл 'for' не имеет 'Выражения 3', либо 'Выражению 3', если цикл 'for' имеет 'Выражение 3'.

Каковы ваши мысли по этому поводу?

Спасибо

В общем и целом: используйте continue внутри цикла для возврата к точке входа. Используйте break для немедленного выхода из цикла.

И еще одно: break и continue - это операции оптимизации кода, они вам никогда не понадобятся. Кроме того, используйте их с осторожностью, так как они могут привести к трудноотслеживаемым ошибкам.

Как и всегда в программировании, простой пример говорит больше, чем 1000 слов:

for(int i=0;i<10;i++){
 Print("1");
 continue;
 Print(2);
}

//Prints: 1111111111

for(int i=0;i<10;i++){
 Print("1");
 break;
 Print(2);
}

//Prints: 1

 

Майкл, спасибо за ваше объяснение словами и кодом. Оба объяснения являются понятными.

Спасибо