////
int CalculateBUYPositions()
{
int total=0;
//ENUM_ORDER_TYPE order_type=ORDER_TYPE_BUY;for(int i=PositionsTotal()-1;i>=0;i--)
if(m_position.SelectByIndex(i)) // selects the position by index for further access to its propertiesif(m_position.Symbol()==m_symbol.Name() && m_position.Magic()==m_magic)
if(m_position.PositionType()==POSITION_TYPE_BUY)
{
total++;
}
//---return(total);
}
//
Приведённый Вами код "CalculateBUYPositions()" подсчитывает количество ПОЗИЦИЙ типа BUY.
Задайте свой вопрос по-другому.
На форексе если есть одна позиция ставлю лимит ордера, лимит ордера активируются количество позиций увеличивается, больше лимитников не ставит советник.
на бирже, при активации лимит ордеров всегда одна позиция, и когда все лимитники активированы, устанавливается снова сетка лимит ордеров. Мне нужна, равноценная, альтернатива условию, -- "если есть одна позиция" CalculateBUYPositions()==1
На форексе если есть одна позиция ставлю лимит ордера, лимит ордера активируются количество позиций увеличивается, больше лимитников не ставит советник.
на бирже, при активации лимит ордеров всегда одна позиция, и когда все лимитники активированы, устанавливается снова сетка лимит ордеров. Мне нужна, равноценная, альтернатива условию, -- "если есть одна позиция" CalculateBUYPositions()==1
Нет, не так. Уточнение, по текущему символу уже существует одна позиция:
на хедж счетах после срабатывания отложенного ордера появится ЕЩЁ одна позиция
на неттинг счетах после срабатывания отложенного ордера возможны варианты:
если отложенный ордер был по текущему символу то:
существующая позиция увелится
существующая позиция умешьшится
существующая позиция аннлигилируется
существующая позиция перевернётся
С учётом уточнения - уточните свой вопрос: для какого типа счёта Вам нужно и ЧТО ИМЕННО нужно отследить.
Это можно определить количеством сделок или количеством ордеров участвующих в открытии и изменении позиции. Просто нужно выбрать историю по тикету позиции и проверить количество. Если есть вариант, что позиция добавляла объём, затем частично была закрыта противоположным лимитным ордером или ещё как-то, то надо будет в цикле перебирать сделки и считать типы сделок DEAL_ENTRY_IN и/или другой тип.
Не следует путать между собой ордера из торговой истории и действующие отложенные ордера, которые отображаются на вкладке "Торговля" в панели "Инструменты". Список ордеров, которые были отменены или привели к проведению торговой операции, можно посмотреть в закладке "История" на панели "Инструменты" клиентского терминала. Функция...
Второй день переделываю робота с MT4 на MT5. Сделал установку отложенных ордеров - работает. Справке по MqlTradeRequest:
elseif(orderType==ORDER_TYPE_BUY_STOP)
{
request.type =ORDER_TYPE_BUY_STOP; // тип ордера
price =SymbolInfoDouble(Symbol(),SYMBOL_ASK)+offset*point; // цена для открытия
request.price=NormalizeDouble(price,digits); // нормализованная цена открытия
}
elseif(orderType==ORDER_TYPE_SELL_STOP)
{
request.type =ORDER_TYPE_SELL_STOP; // тип ордера
price=SymbolInfoDouble(Symbol(),SYMBOL_ASK)-offset*point; // цена для открытия
request.price =NormalizeDouble(price,digits); // нормализованная цена открытия
}
В обоих случаях Ask - похоже на ошибку. Во втором случае для SELL_STOP было бы лучше Bid ???
Как ограничит установку ордеров если после активации лимитных ордеров в рынке всегда одна позиция?
на Форексе делал проверку количества ордеров - позиций
if( CalculateBUYPositions()==1)нужно ставить лимитные если есть одна позиция
чем можно заменить это условие?
Как ограничит установку ордеров если после активации лимитных ордеров в рынке всегда одна позиция?
на Форексе делал проверку количества ордеров - позиций
нужно ставить лимитные если есть одна позиция
чем можно заменить это условие?
Вопрос не понятен. Путаете ордера и позиции.
Приведённый Вами код "CalculateBUYPositions()" подсчитывает количество ПОЗИЦИЙ типа BUY.
Задайте свой вопрос по-другому.
Вопрос не понятен. Путаете ордера и позиции.
Приведённый Вами код "CalculateBUYPositions()" подсчитывает количество ПОЗИЦИЙ типа BUY.
Задайте свой вопрос по-другому.
На форексе если есть одна позиция ставлю лимит ордера, лимит ордера активируются количество позиций увеличивается, больше лимитников не ставит советник.
на бирже, при активации лимит ордеров всегда одна позиция, и когда все лимитники активированы, устанавливается снова сетка лимит ордеров. Мне нужна, равноценная, альтернатива условию, -- "если есть одна позиция" CalculateBUYPositions()==1
На форексе если есть одна позиция ставлю лимит ордера, лимит ордера активируются количество позиций увеличивается, больше лимитников не ставит советник.
на бирже, при активации лимит ордеров всегда одна позиция, и когда все лимитники активированы, устанавливается снова сетка лимит ордеров. Мне нужна, равноценная, альтернатива условию, -- "если есть одна позиция" CalculateBUYPositions()==1
Нет, не так. Уточнение, по текущему символу уже существует одна позиция:
С учётом уточнения - уточните свой вопрос: для какого типа счёта Вам нужно и ЧТО ИМЕННО нужно отследить.
Как ограничит установку ордеров если после активации лимитных ордеров в рынке всегда одна позиция?
на Форексе делал проверку количества ордеров - позиций
нужно ставить лимитные если есть одна позиция
чем можно заменить это условие?
Это можно определить количеством сделок или количеством ордеров участвующих в открытии и изменении позиции. Просто нужно выбрать историю по тикету позиции и проверить количество. Если есть вариант, что позиция добавляла объём, затем частично была закрыта противоположным лимитным ордером или ещё как-то, то надо будет в цикле перебирать сделки и считать типы сделок DEAL_ENTRY_IN и/или другой тип.
Второй день переделываю робота с MT4 на MT5. Сделал установку отложенных ордеров - работает. Справке по MqlTradeRequest:
В обоих случаях Ask - похоже на ошибку. Во втором случае для SELL_STOP было бы лучше Bid ???
Второй день переделываю робота с MT4 на MT5. Сделал установку отложенных ордеров - работает. Справке по MqlTradeRequest:
В обоих случаях Ask - похоже на ошибку. Во втором случае для SELL_STOP было бы лучше Bid ???
SELL открывается по BID а закрывается по ASK
Ваши слова - общеизвестная истина. Вы хотите сказать, что в документации ошибка и во втором случае надо Bid ???
Ваши слова - общеизвестная истина. Вы хотите сказать, что в документации ошибка и во втором случае надо Bid ???