1. Почему пропускаете первый ордер?
ipos++; // при ip = 0, ipos = 1, т.е. ipos = ip+1 if(OrderSelect(ipos,SELECT_BY_POS,MODE_TRADES)==false) continue;
2. почему во втором цикле не выбираете ордера дальше?
for(int jp = ipos; jp<total; jp++) { if(OrderSelect(ipos,SELECT_BY_POS,MODE_TRADES)==false) continue;
Уже сломал голову. Помогите разобраться.
Я ищу пару ордеров с одним Магиком, вот код:
Код перегруженный из-за поиска одного бага - при выборке в одном случае нормально выдает разные ордера.
В другом - два ордера с одним тикетом и типом входа.
Вот выходные принты, по ним видно, что это 2 ордера в разных позициях.
одномерный массив по магик 110028 - 110028 27 1 27 1
ipos = 8 total = 11 ip = 7 jp = 8
Я уж думал, что за время поиска выставился еще ордер, и позы ордеров сдвинулись, искал в цикле, пока одинаковые номера тикетов. Но эксперт не вышел из этого цикла.
В чем проблема?
В первом случае перебор начинается с 0, во втором - с единицы. Теперь сами подумайте, что будет, если в первом переборе подходящий под условия номер оказался на 1 или более дальней позиции.
Да, это я зациклился.
Спасибо!!! Думаю, тему можно удалить.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Уже сломал голову. Помогите разобраться.
Я ищу пару ордеров с одним Магиком, вот код:
Код перегруженный из-за поиска одного бага - при выборке в одном случае нормально выдает разные ордера.
В другом - два ордера с одним тикетом и типом входа.
Вот выходные принты, по ним видно, что это 2 ордера в разных позициях.
одномерный массив по магик 110028 - 110028 27 1 27 1
ipos = 8 total = 11 ip = 7 jp = 8
Я уж думал, что за время поиска выставился еще ордер, и позы ордеров сдвинулись, искал в цикле, пока одинаковые номера тикетов. Но эксперт не вышел из этого цикла.
В чем проблема?