Добрий день.Один индикатор пробивает другово индикатора в короткий срок несколько раз в советнике, тогда получитца покупка или продажа тоже несколько раз.Можноли зафикцировать только первое пробивание на какое то время.А остальние пробивание нерегировали на какоето время.
- Помогите с MQL5
- Вопрос к програмистам
- [ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда.
Простите за ошибки в тексте.
___Правда не на врямя вообще, а на время существования одной или "m" открытых позиций !
extern int m = 1;//количество ОДНОВРЕМЕННО открытых позиций
//--------------------------------------------------------------------
//+----------------------------------------------------------------------------+ //| И.Ким. Функция Возвращает количество позиций. | //| Параметры: | //| sy - наименование инструмента ("" - любой символ, | //| NULL - текущий символ) | //| op - операция (-1 - любая позиция) | //| mn - MagicNumber (-1 - любой магик) | //+----------------------------------------------------------------------------+ int NumberOfPositions(string sy="", int op=-1, int mn=-1) { int i, k=OrdersTotal(), kp=0; if (StringLen(sy)==1 && StringGetChar(sy, 0)==48) sy=Symbol(); for (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==sy || sy=="") { if (OrderType()==OP_BUY || OrderType()==OP_SELL) { if (op<0 || OrderType()==op) { if (mn<0 || OrderMagicNumber()==mn) kp++; }}}}} return(kp);} //-----------------------------------------------------------------------------+
if (NumberOfPositions("", -1, MagicNumber)<m) {//если открытых позиций МЕНЬШЕ m
Спосибо за ответ.Это очень хорошо.Имеем один ордер,теренд идёт в нужную сторону,график 15м,проходит каких 45 минут опиать пробивает индикатор,было бы хорошо чтоб советник сделал есщё один ордер в трендовую сторону,это тоже можно решить.
Можно конечно. Для этого и предусмотрен параметр "m" . Задайте его равным=2
Кроме того, чтобы не было сделок против тренда, можно предусмотреть разные MagicNumber для длинных и для коротких позиций.
Например вот так:
if (NumberOfPositions("",-1, MagicLONG)<m) {//если открытых длинных позиций МЕНЬШЕ m
Либо, прямо в функции NumberOfPositions() предусмотреть открытие только длинных или только коротких позиций.Например -
if (NumberOfPositions("",OP_BUY, MagicNumber)<m) {//если открытых длинных позиций МЕНЬШЕ mНу и конечно, нужно предусмотреть, чтобы по одному сигналу открывалась строго одна позиция...
Спосибо RID за ответы.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь