Здравствуйте!
Хочу чтобы советник открывал один ордер на каждой валюте куда он помещён.
Весь мозг сломал , уже недели 2 наверное((.
Сейчас прописано вот это:
total=OrdersTotal();
if(total<1)
// разрешает открытие одного ордера , другой конечно же не откроет пока не произойдёт закрытие //
Вот держите
int Total_orders(string symbol,int type) { int n=0; int total=OrdersTotal(); for(int i=0; i<total; i++) { if(!OrderSelect(i,SELECT_BY_POS))continue; if(OrderSymbol()!=symbol)continue; if(OrderMagicNumber()!=Magic)continue; if(OrderType()!=type)continue; n++; } return(n); }
Здравствуйте!
Хочу чтобы советник открывал один ордер на каждой валюте куда он помещён.
Весь мозг сломал , уже недели 2 наверное((.
Сейчас прописано вот это:
total=OrdersTotal();
if(total<1)
// разрешает открытие одного ордера , другой конечно же не откроет пока не произойдёт закрытие //
Так понимаю вопрос по четвёрке? если да тогда вот:
int SymbolTotalOrders(int &tickets[],string symbol) { int res=0; int total=OrdersTotal(); ArrayResize(tickets,0,total); for(int index=0;index<total;index++) { if(OrderSelect(index,SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol()==symbol) { res=ArrayResize(tickets,res+1); tickets[res-1]=OrderTicket(); } } } return(res); };
вызывается для текущего символа вот так:
int ticket[]; int count_orders_symbol = SymbolTotalOrders(ticket,Symbol());
За одно и все тикеты переписаны для дальнейшей работы с ними.
Так понимаю вопрос по четвёрке? если да тогда вот:
вызывается для текущего символа вот так:
За одно и все тикеты переписаны для дальнейшей работы с ними.
Как-то всё сложно ) , да и Magic не учитывает, и позиции будет считать.
Вот более правильная:
//=============================================================================================== //------------------------------- Возвращает количество ордеров --------------------------------+ //=============================================================================================== int NumOfOrd(string symb="0", int type=-1, int mg=-1) { int c=0; if(symb=="0") { symb=Symbol();} for(int i=0; i<OrdersTotal(); i++) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if((OrderSymbol()==symb||symb=="")&&(type<0||OrderType()==type)&&(mg<0||OrderMagicNumber()==mg)) { if(OrderType()>1 && OrderType()<6) { c++; }}}} return(c); }
Вызывать так:
if(NumOfOrd(_Symbol,OP_BUYSTOP,Magic) == 0) { // если нет байстоп ордеров // что-то делаем } if(NumOfOrd(_Symbol,OP_SELLSTOP,Magic) == 0) { // если нет селлстоп ордеров // что-то делаем }
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте!
Хочу чтобы советник открывал один ордер на каждой валюте куда он помещён.
Весь мозг сломал , уже недели 2 наверное((.
Сейчас прописано вот это:
total=OrdersTotal();
if(total<1)
// разрешает открытие одного ордера , другой конечно же не откроет пока не произойдёт закрытие //
Может есть функция типа //на данной валютной паре открыто n-ордеров//