Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 847

 
Vitaly Muzichenko:

Возможно, нужно что-бы терминалы с графикой отправляли разметку на веб-сервер, а остальные получали её, и выводили на график. Это не простая задача, но вполне реальная 

А как это сделать, или что почитать что бы узнать как такое можно создать? Разметка автоматически отправляется и приминается другими пользователями? или ее нужно каждый раз отдельно загружать как шаблоны? 
 
Илья:
А как это сделать, или что почитать что бы узнать как такое можно создать? Разметка автоматически отправляется и приминается другими пользователями? или ее нужно каждый раз отдельно загружать как шаблоны? 

Я считаю, что нужна маленькая кнопка, и после того как сделали разметку - на неё нажать и отправить. На приёмниках аналогично, если нужно получить разметку, то нажать вторую кнопку. Итого 2 кнопки на графике, и нет расходов на ресурсы постоянно это мониторить

 

Как ограничит установку ордеров если после активации лимитных ордеров в рынке всегда одна позиция?

на Форексе делал проверку количества ордеров - позиций

if( CalculateBUYPositions()==1)
//// 
 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 properties
         if(m_position.Symbol()==m_symbol.Name() && m_position.Magic()==m_magic)
                   if(m_position.PositionType()==POSITION_TYPE_BUY)
                  
              {
            total++;
            }
//---
   return(total);
  }
  //

нужно ставить лимитные если есть одна позиция

чем можно заменить это условие?

 
lil_lil:

Как ограничит установку ордеров если после активации лимитных ордеров в рынке всегда одна позиция?

на Форексе делал проверку количества ордеров - позиций

нужно ставить лимитные если есть одна позиция

чем можно заменить это условие?

Вопрос не понятен. Путаете ордера и позиции.

Приведённый Вами код "CalculateBUYPositions()" подсчитывает количество ПОЗИЦИЙ типа BUY.


Задайте свой вопрос по-другому.

 
Vladimir Karputov:

Вопрос не понятен. Путаете ордера и позиции.

Приведённый Вами код "CalculateBUYPositions()" подсчитывает количество ПОЗИЦИЙ типа BUY.


Задайте свой вопрос по-другому.

На форексе если есть одна позиция ставлю лимит ордера, лимит ордера активируются количество позиций увеличивается, больше лимитников не ставит советник.

на бирже, при активации лимит ордеров всегда одна позиция, и когда все лимитники активированы, устанавливается снова сетка лимит ордеров. Мне нужна, равноценная, альтернатива условию, -- "если есть одна позиция" CalculateBUYPositions()==1

 
lil_lil:

На форексе если есть одна позиция ставлю лимит ордера, лимит ордера активируются количество позиций увеличивается, больше лимитников не ставит советник.

на бирже, при активации лимит ордеров всегда одна позиция, и когда все лимитники активированы, устанавливается снова сетка лимит ордеров. Мне нужна, равноценная, альтернатива условию, -- "если есть одна позиция" CalculateBUYPositions()==1

Нет, не так. Уточнение, по текущему символу уже существует одна позиция:

  • на хедж счетах после срабатывания отложенного ордера появится ЕЩЁ одна позиция
  • на неттинг счетах после срабатывания отложенного ордера возможны варианты:
    • если отложенный ордер был по текущему символу то:
      • существующая позиция увелится
      • существующая позиция умешьшится
      • существующая позиция аннлигилируется
      • существующая позиция перевернётся


С учётом уточнения - уточните свой вопрос: для какого типа счёта Вам нужно и ЧТО ИМЕННО нужно отследить.

 
lil_lil:

Как ограничит установку ордеров если после активации лимитных ордеров в рынке всегда одна позиция?

на Форексе делал проверку количества ордеров - позиций

нужно ставить лимитные если есть одна позиция

чем можно заменить это условие?

Это можно определить количеством сделок или количеством ордеров участвующих в открытии и изменении позиции. Просто нужно выбрать историю по тикету позиции и проверить количество. Если есть вариант, что позиция добавляла объём, затем частично была закрыта противоположным лимитным ордером или ещё как-то, то надо будет в цикле перебирать сделки и считать типы сделок DEAL_ENTRY_IN и/или другой тип.

Документация по MQL5: Торговые функции / HistorySelectByPosition
Документация по MQL5: Торговые функции / HistorySelectByPosition
  • www.mql5.com
Не следует путать между собой ордера из торговой истории и действующие отложенные ордера, которые отображаются на вкладке "Торговля" в панели "Инструменты". Список ордеров, которые были отменены или привели к проведению торговой операции, можно посмотреть  в закладке "История" на панели "Инструменты" клиентского терминала. Функция...
 
Спасибо, сравниваю лот позиции с начальным лотом, если неравны выхожу.
 

Второй день переделываю робота с MT4 на MT5. Сделал установку отложенных ордеров - работает. Справке по MqlTradeRequest:

   else if(orderType==ORDER_TYPE_BUY_STOP)
     {
      request.type =ORDER_TYPE_BUY_STOP;                                // тип ордера
      price        =SymbolInfoDouble(Symbol(),SYMBOL_ASK)+offset*point; // цена для открытия 
      request.price=NormalizeDouble(price,digits);                      // нормализованная цена открытия 
     }
   else if(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  ???

 
STARIJ:

Второй день переделываю робота с MT4 на MT5. Сделал установку отложенных ордеров - работает. Справке по MqlTradeRequest:

В обоих случаях Ask - похоже на ошибку. Во втором случае для SELL_STOP  было бы лучше Bid  ???


SELL открывается по BID а закрывается по ASK

Причина обращения: