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

 

Отправляю вот такой запрос на выставление отложенного. Но он не истекает в конце торгового дня. Пробовал ORDER_TIME_SPECIFIED_DAY, тоже не помогает. В чем проблема может быть?\

MqlTradeRequest  request = {0};
         request.action = TRADE_ACTION_PENDING;
         request.symbol = _Symbol;
         request.volume = Lot;
         request.price  = high(Quant_Bars); 
         request.sl     = sl;
         request.tp     = tp;
         request.type   = ORDER_TYPE_BUY_STOP; 
         request.expiration = ORDER_TIME_DAY;
         request.magic = magicN;
MqlTradeResult result = {0};

if (OrderSend (request,result))
    {
    Print ("Ордер успешно отправлен, ошибок нет =  ", GetLastError());
    } else
       {
        Print ("Не удалось отправить запрос, ошибка = ", GetLastError());
       }
 

Функция TrendLineVisible - из стандартного класса CCurve - это линия регрессии?

Как сделать, что бы линия эта полностью попадала на график, а не была урезана?


 

почему здесь написано, что ... позиция должна быть выбрана только методом Select  или SelectByIndex,

если метод SelectByTicket тоже работает?

 

Помогите разобраться с функцией ArrayPrint - хочу получать 100 последних элементов массива , и 100 первых и 100 последних.

               ArrayPrint(arr_P_val_X,8,NULL,Calc_XY-100,100,ARRAYPRINT_INDEX);//Ожидаю получить 100 последних элементов, выдает первые
               ArrayPrint(arr_P_val_X,ARRAYPRINT_LIMIT);//Хочу получить 100 и 100 последний - выдает весь массив - что не так?

Calc_XY - число элементов в массиве.

 

как взять тикет только что открытой сделки?
если пользуешься классом CTrade и функцией Buy().

в мт4 функция OrderSend() сразу давала тикет.



а есть функция, которая по индексу позиции дает тикет позиции?

или нужно сначала выбрать позицию (селект) ?

 
multiplicator:

как взять тикет только что открытой сделки?
если пользуешься классом CTrade и функцией Buy().

в мт4 функция OrderSend() сразу давала тикет.



а есть функция, которая по индексу позиции дает тикет позиции?

или нужно сначала выбрать позицию (селект) ?

В OnTradeTransaction при типе транзакции trans.type == TRADE_TRANSACTION_DEAL_ADD находишь тикет в структуре trans.position

struct MqlTradeTransaction 
  { 
   ulong                         deal;             // Тикет сделки 
   ulong                         order;            // Тикет ордера 
   string                        symbol;           // Имя торгового инструмента 
   ENUM_TRADE_TRANSACTION_TYPE   type;             // Тип торговой транзакции 
   ENUM_ORDER_TYPE               order_type;       // Тип ордера 
   ENUM_ORDER_STATE              order_state;      // Состояние ордера 
   ENUM_DEAL_TYPE                deal_type;        // Тип сделки 
   ENUM_ORDER_TYPE_TIME          time_type;        // Тип ордера по времени действия 
   datetime                      time_expiration;  // Срок истечения ордера 
   double                        price;            // Цена  
   double                        price_trigger;    // Цена срабатывания стоп-лимитного ордера 
   double                        price_sl;         // Уровень Stop Loss 
   double                        price_tp;         // Уровень Take Profit 
   double                        volume;           // Объем в лотах 
   ulong                         position;         // Тикет позиции 
   ulong                         position_by;      // Тикет встречной позиции 
  };
 
Всем привет уважаемые участники форума, модераторы, админы и т.д. 
Объясните мне пожалуйста, как подсчитать общую прибыль по открытым позициям в MQL5. В MQL4 с этим нет проблем. Пишу здесь не от лени, 
а потому что уже не знаю как это реализовать. Используя PositionGetDouble(POSITION_PROFIT), идет подсчет прибыли только для первой открытой позиции, 
для остальных она не рассчитывается. 

В MQL4 же OrderProfit() показывает прибыль по всем ордерам. Может упустил чего... 


Извиняюсь, забыл указать, тип счета hedge
 
Ramiz Mavludov:
Извиняюсь, забыл указать, тип счета hedge

Вам срочно и обязательно надо посетить курсы ликвидации безграмотности. В mql5 так-же как и в mql4 прежде чем работать с позицией (в mql4 ордером) позицию надо выбрать. В отличии от mql4 в mql5 я помню ТРИ функции выбора позиции. В документации они хорошо описаны. В путь... не сочтите за грубость.

 
Ramiz Mavludov:
Извиняюсь, забыл указать, тип счета hedge

Код Previous Candle Breakdown 3, функция CalculatePositions, полная прибыль

//+------------------------------------------------------------------+
//| Calculate positions Buy and Sell                                 |
//+------------------------------------------------------------------+
void CalculatePositions(int &count_buys,int &count_sells,double &profit)
  {
   count_buys=0;
   count_sells=0;
   profit=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 properties
         if(m_position.Symbol()==m_symbol.Name() && m_position.Magic()==m_magic)
           {
            profit+=m_position.Commission()+m_position.Swap()+m_position.Profit();
            if(m_position.PositionType()==POSITION_TYPE_BUY)
               count_buys++;

            if(m_position.PositionType()==POSITION_TYPE_SELL)
               count_sells++;
           }
//---
   return;
  }

после обхода всех позиций по данному символу и данному Magic'y в переменной profit будет общая прибыль.

 
Vladimir Karputov:

Код Previous Candle Breakdown 3, функция CalculatePositions, полная прибыль

после обхода всех позиций по данному символу и данному Magic'y в переменной profit будет общая прибыль.

Спасибо Владимир. 

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