Как зафиксировать объем по умолчанию для каждого инструмента(в каждом окне свой инструмент и объем) и чтобы он не сбрасывался при перезагрузке терминала МТ5 ?

 

Вопрос.

Как зафиксировать объем по умолчанию для каждого инструмента и чтобы он не сбрасывался при перезагрузке терминала МТ5 ?

Мне это нужно для того, чтобы не высчитывать каждый раз этот объём для каждого инструмента заново. Инструментов (например акций или валют) и окон под них много.

Открываю сделки руками с рынка или отложками, а не советником.

Ниже описанный способ не работает.

1. Выставляю в торговой панели нужные мне объемы для каждого инструмента(в каждом окне свой инструмент со своим объёмом).

2. Устанавливаю Сервис - Настройки - Торговля -Объём - Last Used   

3. Перезагружаю терминал МТ5


Всё это работает только для одного инструмента(акции) в текущем окне , а на остальных открытых инструментах(окнах) объем меняется на такой же как в текущем окне,

то есть сбрасывается (((


Прошу подсказки у опытных пользователей.

 
Никак. Этот интерфейс в МТ не продуман. Выход - использовать торговые панели. Благо, их сейчас на любой вкус, платных и бесплатных.
 
Согласен, постоянно приходится выставлять объём. Там какой-то баг: когда несколько вкладок открыто, то объёмы после закрытия/открытия терминала перемешиваются. Видимо, программисты пытались сделать, чтобы всё сохранялось, но не хватило компетентности. Ну не может Метатрейдер быть без багов. Четвёртый так вообще весь глюк на глюке.
 
MikroPro:

Вопрос.

Как зафиксировать объем по умолчанию для каждого инструмента и чтобы он не сбрасывался при перезагрузке терминала МТ5 ?

Мне это нужно для того, чтобы не высчитывать каждый раз этот объём для каждого инструмента заново. Инструментов (например акций или валют) и окон под них много.

Открываю сделки руками с рынка или отложками, а не советником.

Ниже описанный способ не работает.

1. Выставляю в торговой панели нужные мне объемы для каждого инструмента(в каждом окне свой инструмент со своим объёмом).

2. Устанавливаю Сервис - Настройки - Торговля -Объём - Last Used   

3. Перезагружаю терминал МТ5


Всё это работает только для одного инструмента(акции) в текущем окне , а на остальных открытых инструментах(окнах) объем меняется на такой же как в текущем окне,

то есть сбрасывается (((


Прошу подсказки у опытных пользователей.

//+------------------------------------------------------------------+
//|                                                       Volume.mq5 |
//|                                      Copyright 2021 prostotrader |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021 prostotrader"
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   ObjectCreate(ChartID(),"Volume_1",OBJ_LABEL,0,0,0);
   ObjectSetInteger(ChartID(),"Volume_1",OBJPROP_XDISTANCE,5);
   ObjectSetInteger(ChartID(),"Volume_1",OBJPROP_YDISTANCE,15);
   ObjectSetInteger(ChartID(),"Volume_1",OBJPROP_COLOR,clrWhite);
   ObjectSetString(ChartID(),"Volume_1",OBJPROP_TEXT,"Volume: 0");
   ObjectCreate(ChartID(),"Volume_2",OBJ_LABEL,0,0,0);
   ObjectSetInteger(ChartID(),"Volume_2",OBJPROP_XDISTANCE,5);
   ObjectSetInteger(ChartID(),"Volume_2",OBJPROP_YDISTANCE,30);
   ObjectSetInteger(ChartID(),"Volume_2",OBJPROP_COLOR,clrWhite);
   ObjectSetString(ChartID(),"Volume_2",OBJPROP_TEXT,"Pos type: none");
   GetPosData();
   ChartRedraw();
//---
   return(INIT_SUCCEEDED);
  }
  
void GetPosData()
{
  if(PositionSelect(Symbol()) == true)
  {
    ENUM_POSITION_TYPE pos_type = ENUM_POSITION_TYPE(PositionGetInteger(POSITION_TYPE));
    long a_vol = long(PositionGetDouble(POSITION_VOLUME));
    ObjectSetString(ChartID(),"Volume_1",OBJPROP_TEXT,"Volume: " + string(a_vol));
    ObjectSetString(ChartID(),"Volume_2",OBJPROP_TEXT,"Pos type: " + EnumToString(pos_type));
  }
  else
  {
    ObjectSetString(ChartID(),"Volume_1",OBJPROP_TEXT,"Volume: 0");
    ObjectSetString(ChartID(),"Volume_2",OBJPROP_TEXT,"Pos type: none");
  }
}  
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
    ObjectDelete(ChartID(),"Volume_1");
    ObjectDelete(ChartID(),"Volume_2");
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
    GetPosData();
  }
//+------------------------------------------------------------------+
 
prostotrader:

Спасибо за участие.

Я так понимаю, что это Эксперт и он показывает в левом верхнем углу Объем открытой в настоящий момент позиции.

Но на текущем символе может и не быть открытых позиций, тем более МТ и так показывает объём уже установленного ордера(рыночного или отложенного).

Всё дело как раз в том, чтобы открывая инструмент на котором в настоящее время даже нет никаких ордеров, хотя бы знать каким объёмом открывался последний ордер поэтому инструменту.

А если ещё никогда не открывался, то ничего и не выводить (тут придётся первый раз высчитывать объём самому).

 
Sergei Stefanskii:

Спасибо за участие.

Я так понимаю, что это Эксперт и он показывает в левом верхнем углу Объем открытой в настоящий момент позиции.

Но на текущем символе может и не быть открытых позиций, тем более МТ и так показывает объём уже установленного ордера(рыночного или отложенного).

Всё дело как раз в том, чтобы открывая инструмент на котором в настоящее время даже нет никаких ордеров, хотя бы знать каким объёмом открывался последний ордер поэтому инструменту.

А если ещё никогда не открывался, то ничего и не выводить (тут придётся первый раз высчитывать объём самому).

Чтобы реализовать Ваши потребности, нужно "перелопатить" всю историю за доступные года (" А если ещё никогда не открывался...") по ордерам и сделкам инструмента.

Похоже, Вы сами не знаете, что хотите.

 
prostotrader:

Чтобы реализовать Ваши потребности, нужно "перелопатить" всю историю за доступные года (" А если ещё никогда не открывался...") по ордерам и сделкам инструмента.

Похоже, Вы сами не знаете, что хотите.


Глубину истории (чтобы не "лопатить") можно было бы задавать в настройках, например мне достаточно недели, т.к. если инструмент не использовался для торговли дольше, то можно и посчитать заново.

Хотя наверно проще информационный индикатор на графике инструмента, показывающий объём который ранее выставлялся в настройках этого индикатора(и так для каждого инструмента). В этом случае и после перезагрузки терминала объём не собьётся.

Я знаю, что хочу и описал это в первом посте.

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