Как правильно в mql4 делать не более одной ставки в одном баре. - страница 3

 
paladin80:
Так правельнее.


Благодарю за ответ!

Сразу же возник вопрос. При тестировании программных кодов с "i++" или "i--" мне показалось, что значение "i" наращивается (уменьшается) только после поступления нового тика. Если допустим открыты пять ордеров, то закрываться они будут по одному на каждый тик, т. е. если поступил один тик нового часа, то закроется последний ордер в списке (или не закроется если не удовлетворяет условиям) затем если тиков скажем нет, то остальные ордера в списке даже проверяться не будут и только при поступлении нового тика будет анализироваться ордер на одну строчку выше от предыдущего.

 
valenok2003:

Виктор, мы уже обсуждали этот вопрос. Здесь, очевидно, следует учесть, что если советник стоит на минутном или 5-минутном ТФ, то ничего страшного не произойдёт при пропуске бара. Если же речь идёт, например о 60, 240 или 1440, то пропуск бара действительно критичен. Может поэтому у нас разный взгляд на этот вопрос?

Что вы думаете по этому поводу?


Здесь дело не во взлядах, а в логике! У логического выражения только два значения: Истина и Ложь. Вы и дальше хотите использовать Ложь? Тогда вам в политику)))

 
user_25:


Благодарю за ответ!

Сразу же возник вопрос. При тестировании программных кодов с "i++" или "i--" мне показалось, что значение "i" наращивается (уменьшается) только после поступления нового тика. Если допустим открыты пять ордеров, то закрываться они будут по одному на каждый тик, т. е. если поступил один тик нового часа, то закроется последний ордер в списке (или не закроется если не удовлетворяет условиям) затем если тиков скажем нет, то остальные ордера в списке даже проверяться не будут и только при поступлении нового тика будет анализироваться ордер на одну строчку выше от предыдущего.

Знаете я вообще то прихожу к выводу, что разница только в очередности перебора ордеров. Я привык к форме for (i=0; i<=OrdersTotal(); i++), тестирую советники с такой формой и у меня не пропускаются ордера. Так что считаю, моя самая первая форма записи тоже правильна. Помнится в начале написал (i=1; i<OrdersTotal(); i++), и в этом случае первый ордер пропускался, так что видимо первый ордер он нулевой. Я так понимаю на одном тике совершается только одно действие, и последующие ордера будут закрываться с приходом очередных тиков.

 
paladin80:
Кстати у меня давно назревал вопрос. Есть ли какой то один правильный алгоритм перебора ордеров? До сих я видел следующее

И ещё

int total = OrdersTotal();
while (total > 0) {
 total--;
 ...
}
 
yuripk:

И ещё

По моему надо while (total >=0)
 
for(int i = OrdersTotal() - 1; i >= 0; i--) {
    if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
    ........
    }
}
так правильно, нумерация ордеров в терминале как в массиве, т.е. общее количество ордеров будет на единицу больше максимального номера и самый первый ордер имеет номер ноль, поиском по форуму можно найти ответ почему правильнее перебирать ордера от старшего номера к нулевому
 
paladin80:
По моему надо while (total >=0)

А ещё раз подумать? Какие номера закреплены за ордерами? И для чего в цикле сначала оператор "total--"?
 
paladin80:
Так правельнее.
А давайте откроем тему "Как правильно писать слово правельно"?
 
moskitman:
А давайте откроем тему "Как правильно писать слово правельно"?


  самого это безумно бесит... кажется, что собеседник полный дебил... желание отвечать пропадает...
 
Ну, отчего-же, можно открыть тему "Как правельно писать слово правильно", либо тему "Как запретить повторное открытие позиций по одному сигналу". При чем тут вообще бары? 
Причина обращения: