Hotabych
НиколайВладимирович

 
Уровень 10

  Торгую в компаниях:


Группа "Стол заказов MQL"

Рейтинг 2151



РЕКОМЕНДУЮ



Комиссия брокера на экране mt5

Коллеги, приветствую!
Возможно ли создать индикатор, который после открытия сделки, отображает на экране комиссию брокера(на mt5)?
Если реализуете или скажете куда копать, было бы хорошо, спасибо
  • 0
  • Просмотров: 1542
  • 18 марта 2024, 13:11
  • Hotabych
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Советник "закрывашка" ордеров.
Следующая запись в группе  
Доработать советник
17 марта 2024
20 марта 2024

Брокер для ваших роботов, 15 лет на рынке

Комментарии (9)

+
0
ты пошто рекламируешь точку
avatar

  23  igrun Сообщений: 1689 - igrun

  • 18 марта 2024, 17:43
+
0
набросал вариант, только проверить не могу. брокер без комиссии:


//+------------------------------------------------------------------+
//|                                              BrokerComission.mq5 |
//|                                             Copyright 2024, AM2. |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2024, AM2."
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property indicator_chart_window

input string s="EURUSD";

#include <Trade\PositionInfo.mqh>

CPositionInfo pos;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutLabel(string text)
  {
//--- создадим текстовую метку
   ObjectCreate(0,"L",OBJ_LABEL,0,0,0);
//--- установим координаты метки
   ObjectSetInteger(0,"L",OBJPROP_XDISTANCE,111);
   ObjectSetInteger(0,"L",OBJPROP_YDISTANCE,22);
//--- установим угол графика, относительно которого будут определяться координаты точки
   ObjectSetInteger(0,"L",OBJPROP_CORNER,2);
//--- установим текст
   ObjectSetString(0,"L",OBJPROP_TEXT,text);
//--- установим шрифт текста
   ObjectSetString(0,"L",OBJPROP_FONT,"Arial");
//--- установим размер шрифта
   ObjectSetInteger(0,"L",OBJPROP_FONTSIZE,12);
//--- установим цвет
   ObjectSetInteger(0,"L",OBJPROP_COLOR,Red);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Com()
  {
   double com=0;

   for(int i=PositionsTotal()-1; i>=0; i--)
     {
      if(PositionSelectByTicket(PositionGetTicket(i)))
        {
         if(PositionGetString(POSITION_SYMBOL)==_Symbol)
           {
            com=pos.Commission();
            break;
           }
        }
     }
   return(com);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   PutLabel("Comission: "+string(Com()));

//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+


Редактирован: 20 марта 2024, 09:32
avatar

  35  AM2 Сообщений: 16388 - Андрей

  • 20 марта 2024, 09:03
+
0
К сожалению не работает, на экране ничего не появляется(ни сразу, ни при открытии сделки)
avatar

  10  Hotabych Автор Сообщений: 40 - НиколайВладимирович

  • 20 марта 2024, 14:02
+
0
У меня тоже не работает.
Брокер АМаркетс
avatar

  20  alex30774 Сообщений: 756

  • 20 марта 2024, 14:16
+
+1
в нижнем правом углу смотрите:

avatar

  35  AM2 Сообщений: 16388 - Андрей

  • 20 марта 2024, 14:16
+
0
открыл счет на амаркет, сейчас попробую отладить
avatar

  35  AM2 Сообщений: 16388 - Андрей

  • 20 марта 2024, 14:55
+
+1
здесь надо копать.
готового варианта или функции не нашел.
быстро не сделаешь
Редактирован: 20 марта 2024, 17:39
avatar

  35  AM2 Сообщений: 16388 - Андрей

  • 20 марта 2024, 15:27
+
0

У меня такая петрушка, после компиляции…
avatar

  10  Hotabych Автор Сообщений: 40 - НиколайВладимирович

  • 21 марта 2024, 07:05
+
+1
вопрос решен
#property indicator_chart_window
#property indicator_plots 0
//+------------------------------------------------------------------+
int OnInit()
  {
//--- создадим текстовую метку
   ObjectCreate(0, "L", OBJ_LABEL, 0, 0, 0);
//--- установим координаты метки
   ObjectSetInteger(0, "L", OBJPROP_XDISTANCE, 11);
   ObjectSetInteger(0, "L", OBJPROP_YDISTANCE, 22);
//--- установим угол графика, относительно которого будут определяться координаты точки
   ObjectSetInteger(0, "L", OBJPROP_CORNER, 2);
    ObjectSetInteger(0, "L", OBJPROP_ANCHOR, ANCHOR_RIGHT_LOWER);
//--- установим шрифт текста
   ObjectSetString(0, "L", OBJPROP_FONT, "Arial");
//--- установим размер шрифта
   ObjectSetInteger(0, "L", OBJPROP_FONTSIZE, 12);
//--- установим цвет
   ObjectSetInteger(0, "L", OBJPROP_COLOR, Red);
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
string Com()
  {
   string com = "Нет открытой позиции.";

   for(int i = PositionsTotal() - 1; i >= 0; i--)
     {
      ulong ticket = PositionGetTicket(i);
      if(ticket > 0)
         if(PositionGetString(POSITION_SYMBOL) == _Symbol)
           {
            ulong position_ID = PositionGetInteger(POSITION_IDENTIFIER);
            double commission = 0;
            if(HistorySelectByPosition(position_ID))
               for(int j = 0; j < HistoryDealsTotal(); j++)
                 {
                  ticket = HistoryDealGetTicket(j);
                  commission += HistoryDealGetDouble(ticket, DEAL_COMMISSION);
                 }
            if(commission != 0)
               com = "Comission: " + DoubleToString(commission*2, 2);
            else
               com = "Comission: 0.0";
            break;
           }
     }
   return(com);
  }
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double& price[])
  {
   ObjectSetString(0, "L", OBJPROP_TEXT, Com());

   return(rates_total);
  }
//+------------------------------------------------------------------+
avatar

  10  Hotabych Автор Сообщений: 40 - НиколайВладимирович

  • 26 марта 2024, 16:08

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий