- Надо программно запретить советникам открывать новые позиции
- Как кодировать?
- Напишу советник бесплатно
Доброго времени суток!
Вы не конкретно ставите задачу. Есть несколько простых вариантов ее реализации, здесь необходимо более конкретно поставить вопрос.
1.Советник считает только свои ордера.
2.Советник считает ордера не только свои, но и пользовательские.
3.Советник считает все открытые позиции на всех инструментах или только на том графике, на котором сидит сам.
4.Советник считает только рыночные ордера или отложенные тоже.
Без конкретной постановки вопроса "А то мы хотим получить в результате" и детального ответа на него - программа не получится.
Если сформулируете необходимые условия работы программы - обращайтесь придумаем.
P.S.Чтоб у вас все было и вам за это ничего не было.
функция считает количество ордеров
int CalculateOrders(string simbol,int type) { int count=0; for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderSymbol()==simbol )//&& OrderMagicNumber()==mn) { if(OrderType()==type) count++; } } return(count); }
на пример
if(CalculateOrders("EURUSD",OP_SELL)<11) OrderSend("EURUSD",OP_SELL,Lots,....)
Все гораздо проще...
Просто к условию открытия позиции добавить
if (.............. && OrdersTotal() < 10 )
А как сделать сброс счета .,?Тоже считаю OrdersTotal()<N, но увеличиваюN
а что тут выкладывать? считай только рыночные (OP_BUY, OP_SELL) если надо. где открываешь позиции (OrderSend() видимо) вставляешь доп.условие - если больше ордеров, то не открываешься. выше уже есть коды примерные..
Спасибо, но я имел в виду следующее: на счёте трудятся несколько советников, каждый из которых открывает ордера (будем считать только рыночные). Так вот хочу написать советник, который бы запретил бы всем работающим советникам открывать позиции в том случае, если открытых и ещё не закрытых рыночных ордеров много (к примеру аж 10 штук). Когда что-то закроется следует снова позволить советникам открывать позиции. При этом ни при каких условиях нельзя запретить советникам модифицировать ордера, т. е. запретить вообще им торговать - нельзя. Другими словами, пусть будет 10 открытых позиций - нужно обеспечить запрет на открытие новых рыночных позиций, при этом не препятствовать МОДИФИКАЦИИ советниками выставленных ими рыночных ордеров. Выкладывайте любые варианты, хоть частично решающие данную проблему. Спасибо.
Чем вас не устраивают предложенные алгоритмы, кроме того что они считают не только рыночные ордера?
Если вы не знаете как организовать подсчет только рыночных ордеров, то почему не зададите конкретный вопрос?
Я так понимаю, как только вы узнаете о магиках, следующим шагом будет, чтобы эксперт не позволял открытию определенному диапазону магиков.
все, что вам понадобится использовать
for( int j=OrdersTotal()-1;j>=0;j--){OrderSelect(j,SELECT_BY_POS,MODE_TRADES); if(OrderType()==...){} }
а как? - кроме вас судя по всему никто не знает.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования