МОЕХ.Вопросы новичка - страница 15

 
prostotrader:

и что мне с этим делать?

 
Вадим Мотеюнас:

и что мне с этим делать?

А Вы что, руками торгуете?

 
prostotrader:

А Вы что, руками торгуете?

да

 
Вадим Мотеюнас:

да

Набросте этого советника на график торговли (см. Файлы)

//+------------------------------------------------------------------+
//|                                                    Pos_price.mq5 |
//|                                      Copyright 2018 prostotrader |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018 prostotrader"
#property link      "https://www.mql5.com"
#property version   "1.00"
//---
double pos_price;
//+------------------------------------------------------------------+
//| Expert Get position price function                               |
//+------------------------------------------------------------------+
double GetPositionPrice(const string aSymbol)
  {
   double price_in=0;
   double volume_in=0;
   if(PositionSelect(aSymbol))
     {
      ulong pos_id=ulong(PositionGetInteger(POSITION_IDENTIFIER));
      if(pos_id>0)
        {
         if(HistorySelectByPosition(pos_id))
           {
            int deals = HistoryDealsTotal();
            for(int i = 0; i < deals; i++)
              {
               ulong deal_ticket=HistoryDealGetTicket(i);
               ulong order_ticket=ulong(HistoryDealGetInteger(deal_ticket,DEAL_ORDER));
               if(order_ticket>0)
                 {
                  ENUM_DEAL_ENTRY deal_entry=ENUM_DEAL_ENTRY(HistoryDealGetInteger(deal_ticket,DEAL_ENTRY));
                  if(deal_entry==DEAL_ENTRY_IN)
                    {
                     double price=HistoryDealGetDouble(deal_ticket,DEAL_PRICE);
                     double volume=HistoryDealGetDouble(deal_ticket,DEAL_VOLUME);
                     price_in+=price*volume;
                     volume_in+=volume;
                    }
                 }
              }
            if(volume_in>0)
              {
               int digits=int(SymbolInfoInteger(aSymbol,SYMBOL_DIGITS));
               return(NormalizeDouble(price_in/volume_in, digits));
              }
           }
         else
           {
            Print(__FUNCTION__,": Невозможно получить историю позиции по символу ",aSymbol);
           }
        }
      else
        {
         Print(__FUNCTION__,": Невозможно определить идентификатор позиции по символу ",aSymbol);
        }
     }
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   pos_price=GetPositionPrice(Symbol());
   ObjectCreate(ChartID(),"Pos_price_1",OBJ_LABEL,0,0,0);
   ObjectSetInteger(ChartID(),"Pos_price_1",OBJPROP_XDISTANCE,5);
   ObjectSetInteger(ChartID(),"Pos_price_1",OBJPROP_YDISTANCE,15);
//---
   ObjectSetInteger(ChartID(),"Pos_price_1",OBJPROP_COLOR,clrWhite);
   ObjectSetString(ChartID(),"Pos_price_1",OBJPROP_TEXT,"Цена позиции: "+DoubleToString(pos_price));
   ChartRedraw(ChartID());
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   ObjectDelete(ChartID(),"Pos_price_1_1");
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   pos_price=GetPositionPrice(Symbol());
   ObjectSetString(ChartID(),"Pos_price_1",OBJPROP_TEXT,"Цена позиции: "+DoubleToString(pos_price));
   ChartRedraw(ChartID());
  }
//+------------------------------------------------------------------+

Добавлено

Обновил советник (показывает цену позиции сразу)

 
prostotrader:

Набросте этого советника на график торговли (см. Файлы)

Добавлено

Обноаил советник (показывает цену позиции сразу)

вы наверное меня не поняли,или я вас, я хотел что бы стейтмент в мт5 совпадал с мониторингом на ***

 
Вадим Мотеюнас:

вы наверное меня не поняли,или я вас, я хотел что бы стейтмент в мт5 совпадал с мониторингом на ***

А я подумал, что Вам нужна истинная цена позиции, а не подгонка чего-то к чему-то...

Добавлено

Ни МТ5 ни *** НЕ правильно считают цену позиции, потому что учитываются клиринги в МТ5, а ***вообще не знаю что считает.

 
prostotrader:

А я подумал, что Вам нужна истинная цена позиции, а не подгонка чего-то к чему-то...

Добавлено

Ни МТ5 ни *** НЕ правильно считают цену позиции, потому что учитываются клиринги в МТ5, а ***вообще не знаю что считает.

а может есть какие нибудь годные/халявные сервисы статистики для мт5 и фортса?

 
Вадим Мотеюнас:

а может есть какие нибудь годные/халявные сервисы статистики для мт5 и фортса?

А чем халява от меня не нравится?

Сразу считает реальный профит

//+------------------------------------------------------------------+
//|                                                    Pos_price.mq5 |
//|                                      Copyright 2018 prostotrader |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018 prostotrader"
#property link      "https://www.mql5.com"
#property version   "1.00"
//---
double pos_price, profit;
ENUM_POSITION_TYPE pos_type;
//+------------------------------------------------------------------+
//| Expert Get position price function                               |
//+------------------------------------------------------------------+
double GetPositionPrice(const string aSymbol)
  {
   double price_in=0;
   double volume_in=0;
   if(PositionSelect(aSymbol))
     {
      ulong pos_id=ulong(PositionGetInteger(POSITION_IDENTIFIER));
      if(pos_id>0)
        {
         if(HistorySelectByPosition(pos_id))
           {
            int deals = HistoryDealsTotal();
            for(int i = 0; i < deals; i++)
              {
               ulong deal_ticket=HistoryDealGetTicket(i);
               ulong order_ticket=ulong(HistoryDealGetInteger(deal_ticket,DEAL_ORDER));
               if(order_ticket>0)
                 {
                  ENUM_DEAL_ENTRY deal_entry=ENUM_DEAL_ENTRY(HistoryDealGetInteger(deal_ticket,DEAL_ENTRY));
                  if(deal_entry==DEAL_ENTRY_IN)
                    {
                     double price=HistoryDealGetDouble(deal_ticket,DEAL_PRICE);
                     double volume=HistoryDealGetDouble(deal_ticket,DEAL_VOLUME);
                     price_in+=price*volume;
                     volume_in+=volume;
                    }
                 }
              }
            if(volume_in>0)
              {
               int digits=int(SymbolInfoInteger(aSymbol,SYMBOL_DIGITS));
               return(NormalizeDouble(price_in/volume_in, digits));
              }
           }
         else
           {
            Print(__FUNCTION__,": Невозможно получить историю позиции по символу ",aSymbol);
           }
        }
      else
        {
         Print(__FUNCTION__,": Невозможно определить идентификатор позиции по символу ",aSymbol);
        }
     }
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   ObjectCreate(ChartID(),"Pos_price_1",OBJ_LABEL,0,0,0);
   ObjectCreate(ChartID(),"Pos_price_2",OBJ_LABEL,0,0,0);
   ObjectSetInteger(ChartID(),"Pos_price_1",OBJPROP_XDISTANCE,5);
   ObjectSetInteger(ChartID(),"Pos_price_2",OBJPROP_XDISTANCE,5);
   ObjectSetInteger(ChartID(),"Pos_price_1",OBJPROP_YDISTANCE,15);
   ObjectSetInteger(ChartID(),"Pos_price_2",OBJPROP_YDISTANCE,30);
//---
   ObjectSetInteger(ChartID(),"Pos_price_1",OBJPROP_COLOR,clrWhite);
   ObjectSetInteger(ChartID(),"Pos_price_2",OBJPROP_COLOR,clrWhite);
   if(PositionSelect(Symbol()))
   {
     pos_type = ENUM_POSITION_TYPE(PositionGetInteger(POSITION_TYPE));
     pos_price=GetPositionPrice(Symbol());
     switch(pos_type)
     {
       case POSITION_TYPE_SELL:
         profit = pos_price - SymbolInfoDouble(Symbol(), SYMBOL_LAST);
       break;
       case POSITION_TYPE_BUY:
       profit = SymbolInfoDouble(Symbol(), SYMBOL_LAST) - pos_price;
       break;
     }
     ObjectSetString(ChartID(),"Pos_price_1",OBJPROP_TEXT,"Цена позиции: " + DoubleToString(pos_price));
     ObjectSetString(ChartID(),"Pos_price_2",OBJPROP_TEXT,"Текущий профит: " + DoubleToString(profit));
   }
   else
   {
     ObjectSetString(ChartID(),"Pos_price_1",OBJPROP_TEXT,"Цена позиции: 0");
     ObjectSetString(ChartID(),"Pos_price_2",OBJPROP_TEXT,"Текущий профит: 0");
   }  
   ChartRedraw(ChartID());
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   ObjectDelete(ChartID(),"Pos_price_1");
   ObjectDelete(ChartID(),"Pos_price_2");
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(PositionSelect(Symbol()))
   {
     pos_type = ENUM_POSITION_TYPE(PositionGetInteger(POSITION_TYPE));
     pos_price=GetPositionPrice(Symbol());
     switch(pos_type)
     {
       case POSITION_TYPE_SELL:
         profit = pos_price - SymbolInfoDouble(Symbol(), SYMBOL_LAST);
       break;
       case POSITION_TYPE_BUY:
       profit = SymbolInfoDouble(Symbol(), SYMBOL_LAST) - pos_price;
       break;
     }
     ObjectSetString(ChartID(),"Pos_price_1",OBJPROP_TEXT,"Цена позиции: " + DoubleToString(pos_price));
     ObjectSetString(ChartID(),"Pos_price_2",OBJPROP_TEXT,"Текущий профит: " + DoubleToString(profit));
   }
   else
   {
     ObjectSetString(ChartID(),"Pos_price_1",OBJPROP_TEXT,"Цена позиции: 0");
     ObjectSetString(ChartID(),"Pos_price_2",OBJPROP_TEXT,"Текущий профит: 0");
   }
   ChartRedraw(ChartID());
  }
//+------------------------------------------------------------------+
 
prostotrader:

А чем халява от меня не нравится?

вы про цену позиции?мне нужен что то типо журнала сделок с автообновлением истории сделок, что б анализировать статистику моей торговли, на форексе ***через мт4 работает и правильно все считает(во всяком случае стейт из мт4 совпадает c цифрами ***).Подключил счет с фортса цифры разные...вот и обратился.Подумал что может в мт5 нужно что то хакнуть

Пользовательский интерфейс - Начало работы - MetaTrader 5
Пользовательский интерфейс - Начало работы - MetaTrader 5
  • www.metatrader5.com
Интерфейс платформы предоставляет доступ ко всем инструментам, необходимым для торговли на финансовых рынках. Он включает в себя различные меню, панели инструментов и служебные окна. Главное меню В главном меню собраны практически все команды и функции, которые можно выполнять в торговой платформе. Оно позволяет работать с графиками...
 
Вадим Мотеюнас:

вы про цену позиции?мне нужен что то типо журнала сделок с автообновлением истории сделок, что б анализировать статистику моей торговли, на форексе ***через мт4 работает и правильно все считает(во всяком случае стейт из мт4 совпадает c цифрами ***).Подключил счет с фортса цифры разные...вот и обратился.Подумал что может в мт5 нужно что то хакнуть

"Хакнуть" - не имеет смысла, просто нужно

написать советник, который будет делать то, что Вам нужно.

Пишите Техзадание и обращайтесь сюда

https://www.mql5.com/ru/job

Торговые приложения для MetaTrader 5 на заказ
Торговые приложения для MetaTrader 5 на заказ
  • www.mql5.com
1. мы задаём период(например неделя вперёд или сутки), которые сразу же разрисовываются полосками временных периодов по нашему желанию от м5 и до W1(с стандартным выбором цветов, толщин линий, пунктиров и т.п.) как в любом индикаторе. Добавление этих полос по выбору- можем хоть 2 , хоть все добавить. И присвоить им цвет, тип , толщину и т.п. А...
Причина обращения: