Проверка на "нет ни одного открытого" ордера самая примитивная, а потому в реальной жизни не используется. Т.к. в реальной жизни может быть несколько ордеров открытых разными советниками, плюс руками по-балуешься откроешь что-нибудь.
У тебя не два условия на вход, а две самостоятельных подсистемы, каждая из которых может открывать сделки. Значит надо каждой подсистеме присвоить собственный мэджик нумбер (у тебя уже есть) и проверять наличие/отсутствие открытых ордеров с данным мэджиком.
Проверка на "нет ни одного открытого" ордера самая примитивная, а потому в реальной жизни не используется. Т.к. в реальной жизни может быть несколько ордеров открытых разными советниками, плюс руками по-балуешься откроешь что-нибудь.
У тебя не два условия на вход, а две самостоятельных подсистемы, каждая из которых может открывать сделки. Значит надо каждой подсистеме присвоить собственный мэджик нумбер (у тебя уже есть) и проверять наличие/отсутствие открытых ордеров с данным мэджиком.
Если убрать функцию ОрдерТотал, то он начинает открывать множество сделок сразу.....МОжет как то можно заменить данную функцию и все станет на свои места???
Вместо OrdersTotal() вставьте вызов этой функции. В нее передаете MagicNumber она возврашает кол-во
открытых оредров с этим MagicNumber`ом.
Например:
total1=OrdersCount(11111);
total2=OrdersCount(11112);
Сама функция:
int OrdersCount(int MN) { int Orders=0; int total=OrdersTotal(); for (int i=0; i<total; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==false) return (-1); if (OrderMagicNumber()!=MN) continue; Orders++; } return(Orders); }
Здравствуйте!!! Сталкнулся с проблемой....в Советнике несколько условий на покупку...Но почему-то выполняется только условие №1, хотя если условие №2 поменять местами друг с другом, то все равно выполняется условие которое стоит выше...Я так понимаю что функция ОрдерТотал распростроняется на общее кол-во условий....Естественно будет только первое выполнятся.....А как сделать что бы оба условия выполнялись, не мешая друг другу и могли открываться одновременно 2 сделки по разным условиям???? Подскажите пожалуйста!!!
//условие №2 total2=OrdersTotal(); if(total2<2) { // нет ни одного открытого ордера
а почему второе условие должно выполняться? Оно и не должно!
почему у вас total2<2 ? С какой радости?
а в комментарии написано - // нет ни одного открытого ордера
Странно всё это...
Если убрать функцию ОрдерТотал, то он начинает открывать множество сделок сразу.....МОжет как то можно заменить данную функцию и все станет на свои места???
Не убрать, а использовать с головой.
Сделать проверку на количество открытых ордеров с конкретным мэджиком. Если один с номером 11112 уже есть, то не разрешать второй подсистеме открывать новые ордера. А все остальные подсистемы и/или советники пусть себе торгуют.
Думай! Тебе уже дали готовую функцию, но лучше было бы для тебе придумать её самому.
Здравствуйте!!! Сталкнулся с проблемой....в Советнике несколько условий на покупку...Но почему-то выполняется только условие №1, хотя если условие №2 поменять местами друг с другом, то все равно выполняется условие которое стоит выше...Я так понимаю что функция ОрдерТотал распростроняется на общее кол-во условий....Естественно будет только первое выполнятся.....А как сделать что бы оба условия выполнялись, не мешая друг другу и могли открываться одновременно 2 сделки по разным условиям???? Подскажите пожалуйста!!!
//условие №2 total2=OrdersTotal(); if(total2<2) { // нет ни одного открытого ордера
а почему второе условие должно выполняться? Оно и не должно!
почему у вас total2<2 ? С какой радости?
а в комментарии написано - // нет ни одного открытого ордера
Странно всё это...
комментрий забыл убрать!!!! Сорри!!!! Если поставить if(total2<1) то результат будет тот же, что и раньше
Если нет желания использовать функцию от DENISka, то вот здесь есть функция, которую тоже можно использовать вместо OrdersTotal();
Функция ExistPositions().
Предназначена для проверки наличия открытых покупок или продаж
Задавайте в ней магик для открытия по условию первой позиции
Потом другой магик для открытия позиции по другому условию.
Там даже есть пример применения этой фнкции для вашего случая.
Если нет желания использовать функцию от DENISka, то вот здесь есть функция, которую тоже можно использовать вместо OrdersTotal();
Функция ExistPositions().
Предназначена для проверки наличия открытых покупок или продаж
Задавайте в ней магик для открытия по условию первой позиции
Потом другой магик для открытия позиции по другому условию.
Там даже есть пример применения этой фнкции для вашего случая.
Хорошо....Спасибо!!!
Вместо OrdersTotal() вставьте вызов этой функции. В нее передаете MagicNumber она возврашает кол-во
открытых оредров с этим MagicNumber`ом.
Например:
total1=OrdersCount(11111);
total2=OrdersCount(11112);
Сама функция:
int OrdersCount(int MN) { int Orders=0; int total=OrdersTotal(); for (int i=0; i<total; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==false) return (-1); if (OrderMagicNumber()!=MN) continue; Orders++; } return(Orders); }
Не сомневаюсь что функция хороша....Но когда ее вставляю, почему у меня выдает такую ошибку:
'(' - function definition unexpected
При чем показывает на строчку int OrdersCount(int MN)
Вместо OrdersTotal() вставьте вызов этой функции. В нее передаете MagicNumber она возврашает кол-во
открытых оредров с этим MagicNumber`ом.
Например:
total1=OrdersCount(11111);
total2=OrdersCount(11112);
Сама функция:
int OrdersCount(int MN) { int Orders=0; int total=OrdersTotal(); for (int i=0; i<total; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==false) return (-1); if (OrderMagicNumber()!=MN) continue; Orders++; } return(Orders); }
Не сомневаюсь что функция хороша....Но когда ее вставляю, почему у меня выдает такую ошибку:
'(' - function definition unexpected
При чем показывает на строчку int OrdersCount(int MN)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте!!! Сталкнулся с проблемой....в Советнике несколько условий на покупку...Но почему-то выполняется только условие №1, хотя если условие №2 поменять местами друг с другом, то все равно выполняется условие которое стоит выше...Я так понимаю что функция ОрдерТотал распростроняется на общее кол-во условий....Естественно будет только первое выполнятся.....А как сделать что бы оба условия выполнялись, не мешая друг другу и могли открываться одновременно 2 сделки по разным условиям???? Подскажите пожалуйста!!!