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

 
Sergey Voytsekhovsky #:

Вот с этого и начните - В терминале, в ленте, в папке Сервис - есть пунктик ГлобальныеПеременные. Давайте найдем.

Там пусто.

 
Sergey Voytsekhovsky #:

Вот с этого и начните - В терминале, в ленте, в папке Сервис - есть пунктик ГлобальныеПеременные. Давайте найдем.

Как я Вас понимаю, сам тоже профан. Иногда фразу или логику поймать/построить не могу, простейшие. И тоже постоянно спрашиваю и читаю. Потому собственно и Вам отозваля. Мне тут давеча, совсем недавно, чуть выше - очень помогли, спасибо.

 
psihodelit #:
Там пусто.

Значит никому не помешаем.

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

В любом удобном для вас месте, подготовьте пустую строчку и вбейте GlobalVariableCheck(), потом выделите и нажмите клавишу F1. Открется страничка с информацией, там не сложно.

А суть воплощаемой идеи -- Содайте Глобальную переменную, в транслирующем советнике, а принимающий пусть из нее считывает, при определенных показаниях будт срабатывать условие, ну и дальше по сценарию.

 
Sergey Voytsekhovsky #:
подготовьте пустую строчку и вбейте GlobalVariableCheck(),

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

 

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

Не пойму, какая формула, чтобы закрыть случаи противоположных трейдов?

Pср = (Open Price 1 × Lot 1 + Open Price 2 × Lot 2 + ... + Open Price X × Lot X) / (Lot 1 + Lot 2 + ... + Lot X)

Эта, вроде как, не подойдет?

Как рассчитать размер маржи по локированным сделкам | Альфа-Форекс
  • alfaforex.ru
Маржа (залог под открытую позицию) всегда берётся в базовой валюте - валюте, стоящей в обозначении пары на первом месте. После этого она конвертируется в валюту, в которой номинирован торговый счёт. Расчёт происходит в четыре этапа. 1. Вычисление средневзвешенной цены открытия позиции. Формула: Pср = (Open Price 1 × Lot 1 + Open Price 2 × Lot 2...
 
leonerd #:

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

Не пойму, какая формула, чтобы закрыть случаи противоположных трейдов?

Эта, вроде как, не подойдет?

Где скопипастил не помню, но работает хорошо.

   double NLb = 0, NLs = 0;

   long OT;
   int b = 0, s = 0;
   double PB = 0, PS = 0, OL = 0, LS = 0, LB = 0, OOP = 0;
   for(int i = 0; i < PositionsTotal(); i++)
     {
      if(_Symbol == PositionGetSymbol(i))
        {
         OL  = PositionGetDouble(POSITION_VOLUME);
         OOP = PositionGetDouble(POSITION_PRICE_OPEN);
         OT  = PositionGetInteger(POSITION_TYPE);
         if(OT == POSITION_TYPE_BUY)
           {
            PB += OOP * OL;
            LB += OL;
            b++;
           }
         if(OT == POSITION_TYPE_SELL)
           {
            PS += OOP * OL;
            LS += OL;
            s++;
           }
        }
     }
   if(LB != 0)
      NLb = PB / LB;
   if(LS != 0)
      NLs = PS / LS;

Это то же самое, что и вас написано, только разделено по направлениям позиций.

Думаю это то, что вам надо. 

 
Aleksandr Slavskii #:

Где скопипастил не помню, но работает хорошо.

Это то же самое, что и вас написано, только разделено по направлениям позиций.

Думаю это то, что вам надо. 

Не пойму тоже ли это самое, если просто шорты брать с отрицательным объемом, а в знаменателе суммировать абсолютные значения?

У вас неплохо б в конце проверку деления на 0 добавить.

 
leonerd #:

Не пойму тоже ли это самое, если просто шорты брать с отрицательным объемом, а в знаменателе суммировать абсолютные значения?

Функция считает среднюю цену отдельно для бай и отдельно для селл.

Не совсем понятно какая у вас стоит задача. Вот эта фраза мне не понятна: " чтобы закрыть случаи противоположных трейдов".

leonerd #:

У вас неплохо б в конце проверку деления на 0 добавить.

Там есть проверка.

 

Подскажите как можно округлить цены ask и bid в классе CSymbolInfo до шага цены?


#include <Trade\SymbolInfo.mqh>

input string symbol   = "MTLR";
input int    spred    = 10;
CSymbolInfo C_info;

int OnInit()
  {   
  C_info.Name(symbol); 
  C_info.Digits();
  C_info.Point();
   return(0);
  }
  
void OnTick()
  {  
   C_info.RefreshRates();

   int    spread      = C_info.Spread();
   double ask         = C_info.Ask();
   double bid         = C_info.Bid();
   ulong vol          = C_info.Volume();

   if(spread>spred)
      { 
       string info    = symbol+" = "+ IntegerToString(spread) + " Ask: "  +
                        DoubleToString(ask)                   + " Bid: "  +
                        DoubleToString(bid)                   + " Объем=" +
                        IntegerToString(vol);
       Print(info);
      }  
  }
/* MTLR = 4 Ask: 278.80000000 Bid: 278.76000000 Объем=289 */
 
Fokus24 #:

Подскажите как можно округлить цены ask и bid в классе CSymbolInfo до шага цены?

DoubleToString(ask,_Digits)