Чтобы сделать подсчет позиций в MQL5 надо подключать стороннюю библиотеку?) Ужасно удобный язык)
Нет не нужно. вам нужно понять что такое ордер, что такое сделка и что такое позиция. почему это разные вещи и что вообще это такое. Зачем нужна вся эта штука, какие возможности дает и почему без нее невозможно торговать на любом нормальном рынке кроме форекса.
Эти моменты очень хорошо описаны в документации. Все что изменилось в хеджевых счетах - стало много позиций. Вся остальная обвязка, ордер-сделка-позиция, остались неизменными. кроме библиотеки Trade.mqh мне еще ни разу ничего левого не понадобилось.
Функция CalculateAllVolumes подсчитываем ОБЪЁМЫ позиций (volumne_buys, volumne_sells) и отложенных ордеров (volumne_buy_limits, volumne_sell_limits, volumne_buy_stops, volumne_sell_stops)
//+------------------------------------------------------------------+//| Calculate all volumes |//+------------------------------------------------------------------+void CalculateAllVolumes(double &volumne_buys,double &volumne_sells,
double &volumne_buy_limits,double &volumne_sell_limits,
double &volumne_buy_stops,double &volumne_sell_stops)
{
volumne_buys = 0.0; volumne_sells = 0.0;
volumne_buy_limits = 0.0; volumne_sell_limits = 0.0;
volumne_buy_stops = 0.0; volumne_sell_stops = 0.0;
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())
{
if(m_position.PositionType()==POSITION_TYPE_BUY)
volumne_buys+=m_position.Volume();
elseif(m_position.PositionType()==POSITION_TYPE_SELL)
volumne_sells+=m_position.Volume();
}
for(int i=OrdersTotal()-1;i>=0;i--) // returns the number of current ordersif(m_order.SelectByIndex(i)) // selects the pending order by index for further access to its propertiesif(m_order.Symbol()==m_symbol.Name())
{
if(m_order.OrderType()==ORDER_TYPE_BUY_LIMIT)
volumne_buy_limits+=m_order.VolumeInitial();
elseif(m_order.OrderType()==ORDER_TYPE_SELL_LIMIT)
volumne_sell_limits+=m_order.VolumeInitial();
elseif(m_order.OrderType()==ORDER_TYPE_BUY_STOP)
volumne_buy_stops+=m_order.VolumeInitial();
elseif(m_order.OrderType()==ORDER_TYPE_SELL_STOP)
volumne_sell_stops+=m_order.VolumeInitial();
}
}
А вот отдельные функции для подсчёта ПОЗИЦИЙ и ОТЛОЖЕННЫХ ордеров (уже не помню из какого кода взято)
считает ТОЛЬКО Buy stop и Sell stop
//+------------------------------------------------------------------+//| Calculate all pending orders |//+------------------------------------------------------------------+void CalculateAllPendingOrders(int &count_buy_stops,int &count_sell_stops)
{
count_buy_stops = 0;
count_sell_stops = 0;
for(int i=OrdersTotal()-1;i>=0;i--) // returns the number of current ordersif(m_order.SelectByIndex(i)) // selects the pending order by index for further access to its propertiesif(m_order.Symbol()==m_symbol.Name() && m_order.Magic()==m_magic)
{
if(m_order.OrderType()==ORDER_TYPE_BUY_STOP)
count_buy_stops++;
elseif(m_order.OrderType()==ORDER_TYPE_SELL_STOP)
count_sell_stops++;
}
}
считает ПОЗИЦИИ
//+------------------------------------------------------------------+//| Calculate all positions |//+------------------------------------------------------------------+int CalculateAllPositions()
{
int total=0;
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)
total++;
//---return(total);
}
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Чтобы сделать подсчет позиций в MQL5 надо подключать стороннюю библиотеку?) Ужасно удобный язык)
Нет не нужно. вам нужно понять что такое ордер, что такое сделка и что такое позиция. почему это разные вещи и что вообще это такое.
Зачем нужна вся эта штука, какие возможности дает и почему без нее невозможно торговать на любом нормальном рынке кроме форекса.
Эти моменты очень хорошо описаны в документации.
Все что изменилось в хеджевых счетах - стало много позиций. Вся остальная обвязка, ордер-сделка-позиция, остались неизменными.
кроме библиотеки Trade.mqh мне еще ни разу ничего левого не понадобилось.
Ребята, Вы хоть смотрите на дату создания темы?
упс ) кто-то занялся некрофилией )
Спасибо, но подскажите, пожалуйста, как подсчитывать ордера, стоповые отложки?
По такой же логике просчет не выходит.
Для подсчёта ОТЛОЖЕННЫХ ОРДЕРОВ есть класс COrderInfo.
Ребята, Вы хоть смотрите на дату создания темы?
А что, это будет полезно тем, кто хочет перейти из MQL4 на MQL5 и тем, кто всё время жалуется.
Вот интересно, после открытия этой темы прошли чуть больше года и за это время мнение автора изменилось или нет :)
Сначала нервничал. потом забил на него года на 2. Сделал пару разработок и бросил.
Сейчас вообще все равно какой терминал (кросс код не использую, просто одинаково легко писать и там и там).
Были мысли сделать как fxsaber - но это не выход. Потом будет сложно.
Лучше сразу писать отдельно на мт4 и мт5.
О том, что для MT4 можно написать программы через MQL4, узнал очень поздно и написал на MQl4 всего несколько скриптов.
Но как увидел что в MQL5 есть ООП, тем более такое оружие как усреднение позиций, то сразу перешел на MQL5.
Но к сожалению многие и до сих пор не понимают преимущество неттинговой торговли.
Для подсчёта ОТЛОЖЕННЫХ ОРДЕРОВ есть класс COrderInfo.
Допустим использовал этот класс вот так, но функция все равно выдает ноль, в чем может быть проблема?
Допустим использовал этот класс вот так, но функция все равно выдает ноль, в чем может быть проблема?
Нельзя смешивать круглое и зеленое.
Чуть позже дам ссылки на готовые функции подсчёта ПОЗИЦИЙ и ОТЛОЖЕННЫХ ордеров.Пример кода CCI_Reversy.
Функция CalculateAllVolumes подсчитываем ОБЪЁМЫ позиций (volumne_buys, volumne_sells) и отложенных ордеров (volumne_buy_limits, volumne_sell_limits, volumne_buy_stops, volumne_sell_stops)
А вот отдельные функции для подсчёта ПОЗИЦИЙ и ОТЛОЖЕННЫХ ордеров (уже не помню из какого кода взято)
считает ТОЛЬКО Buy stop и Sell stop
считает ПОЗИЦИИ