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

Сергей Таболин:

Чтобы не флудить - это в фриланс.

Спасибо.
Что по делу есть?
Как увеличивать/уменьшать тф горячими клавишами в МТ5?
Vladimir Makhnin:
Как увеличивать/уменьшать тф горячими клавишами в МТ5?

Нет таких горячих. Только писать разработку.

Все горячие здесь  Горячие клавиши - Для продвинутых пользователей - Справка по MetaTrader 5

Нашёл для МТ4 https://www.mql5.com/ru/code/19269
Может есть для МТ5? Не те запросы в поиске осуществляю
TF Switcher
TF Switcher
  • www.mql5.com
Горячие клавиши для переключения таймфреймов.
Привет! Подскажите как передавать структуру в функцию, чтоб изменения элементов структуры в функции, сохранялись в структуре созданной на глобальном уровне?
Кирилл Смирнов:
Привет! Подскажите как передавать структуру в функцию, чтоб изменения элементов структуры в функции, сохранялись в структуре созданной на глобальном уровне?

Передавайте структуру по ссылке. Пример:

//+------------------------------------------------------------------+
//|                                                     Expert 1.mq5 |
//|                              Copyright © 2021, Vladimir Karputov |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2021, Vladimir Karputov"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Structure Positions                                              |
//+------------------------------------------------------------------+
struct STRUCT_POSITION
  {
   ENUM_POSITION_TYPE pos_type;              // position type
   double            volume;                 // position volume (if "0.0" -> the lot is "Money management")
   double            lot_coefficient;        // lot coefficient
   bool              waiting_transaction;    // waiting transaction, "true" -> it's forbidden to trade, we expect a transaction
   ulong             waiting_order_ticket;   // waiting order ticket, ticket of the expected order
   bool              transaction_confirmed;  // transaction confirmed, "true" -> transaction confirmed
   //--- Constructor
                     STRUCT_POSITION()
     {
      pos_type                   = WRONG_VALUE;
      volume                     = 0.0;
      lot_coefficient            = 0.0;
      waiting_transaction        = false;
      waiting_order_ticket       = 0;
      transaction_confirmed      = false;
     }
  };
STRUCT_POSITION SPosition;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   Example(SPosition);
   Comment(EnumToString(SPosition.pos_type));
  }
//+------------------------------------------------------------------+
//| Example                                                          |
//+------------------------------------------------------------------+
void Example(STRUCT_POSITION &struct_position)
  {
   int res=MathRand();
   if(res<32767/2)
      struct_position.pos_type=POSITION_TYPE_BUY;
   else
      struct_position.pos_type=POSITION_TYPE_SELL;
  }
//+------------------------------------------------------------------+
Файлы:
Expert_1.mq5  6 kb
Vladimir Karputov:

Передавайте структуру по ссылке. Пример:

Спасибо!  А откуда этот пример?  Я просто искал в справке что ни будь про свой вопрос и не нашёл((( 

Kira27:

Спасибо!  А откуда этот пример?  Я просто искал в справке что ни будь про свой вопрос и не нашёл((( 

Реальная реализация + выдуманная функция для примера.

Vladimir Karputov:

Реальная реализация + выдуманная функция для примера.

Ок,спасибо ещё раз!

Vladimir Karputov:

Реальная реализация + выдуманная функция для примера.

Плохой пример. Структура, равно как и любая переменная объявленная на глобальном уровне доступна в любой части программы.

Так тоже будет работать.

//+------------------------------------------------------------------+
//| Structure Positions                                              |
//+------------------------------------------------------------------+
struct STRUCT_POSITION
  {
   ENUM_POSITION_TYPE pos_type;              // position type
   double            volume;                 // position volume (if "0.0" -> the lot is "Money management")
   double            lot_coefficient;        // lot coefficient
   bool              waiting_transaction;    // waiting transaction, "true" -> it's forbidden to trade, we expect a transaction
   ulong             waiting_order_ticket;   // waiting order ticket, ticket of the expected order
   bool              transaction_confirmed;  // transaction confirmed, "true" -> transaction confirmed
   //--- Constructor
                     STRUCT_POSITION()
     {
      pos_type                   = WRONG_VALUE;
      volume                     = 0.0;
      lot_coefficient            = 0.0;
      waiting_transaction        = false;
      waiting_order_ticket       = 0;
      transaction_confirmed      = false;
     }
  };
STRUCT_POSITION SPosition;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   Example();
   Comment(EnumToString(SPosition.pos_type));
  }
//+------------------------------------------------------------------+
//| Example                                                          |
//+------------------------------------------------------------------+
void Example()
  {
   int res=MathRand();
   if(res<32767/2)
      SPosition.pos_type=POSITION_TYPE_BUY;
   else
      SPosition.pos_type=POSITION_TYPE_SELL;
  }
//+------------------------------------------------------------------+

Другое дело, если переменная структуры объявлена локально.

//+------------------------------------------------------------------+
//| Structure Positions                                              |
//+------------------------------------------------------------------+
struct STRUCT_POSITION
  {
   ENUM_POSITION_TYPE pos_type;              // position type
   double            volume;                 // position volume (if "0.0" -> the lot is "Money management")
   double            lot_coefficient;        // lot coefficient
   bool              waiting_transaction;    // waiting transaction, "true" -> it's forbidden to trade, we expect a transaction
   ulong             waiting_order_ticket;   // waiting order ticket, ticket of the expected order
   bool              transaction_confirmed;  // transaction confirmed, "true" -> transaction confirmed
   //--- Constructor
                     STRUCT_POSITION()
     {
      pos_type                   = WRONG_VALUE;
      volume                     = 0.0;
      lot_coefficient            = 0.0;
      waiting_transaction        = false;
      waiting_order_ticket       = 0;
      transaction_confirmed      = false;
     }
  };
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   STRUCT_POSITION SPosition;
   Example(SPosition);
   Comment(EnumToString(SPosition.pos_type));
  }
//+------------------------------------------------------------------+
//| Example                                                          |
//+------------------------------------------------------------------+
void Example(STRUCT_POSITION &struct_position)
  {
   int res=MathRand();
   if(res<32767/2)
      struct_position.pos_type=POSITION_TYPE_BUY;
   else
      struct_position.pos_type=POSITION_TYPE_SELL;
  }
//+------------------------------------------------------------------+