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

 
Aleksandr Slavskii #:

.

 
приветствую, мой советник открывает позиции на процент от баланса, с реализацией этого я справился, но как после получения стоплосса оставить тот же риск на позицию. То есть я понимаю, что мне надо заранее, перед каждой проверкой условий на вход в позицию закидывать в какую то переменную текущий баланс, но как это реализовать так, чтобы при следующей проверке на вход переменная сохранялась и ее можно было бы сравнить с текущим балансом и если текущий баланс меньше, чем прошлый, то тогда использовать прошлый баланс для вычисления перменной kp rofit, которая и отвечает за лотаж
if (условие)  
     {

   
        current_bid=SymbolInfoDouble(_Symbol,SYMBOL_BID);
        k = (float)current_bid;
        
        balance = AccountInfoDouble(ACCOUNT_BALANCE);
       
        kprofit = balance / 1000;
        
        lot1 = lot / k;
        lot1 = lot1 * kprofit;
        lot1 = MathRound(lot1);
        
        
      
       if (условие)
         
       
         
         trader.Buy();
 
statist247 #:
приветствую, мой советник открывает позиции на процент от баланса, с реализацией этого я справился, но как после получения стоплосса оставить тот же риск на позицию. То есть я понимаю, что мне надо заранее, перед каждой проверкой условий на вход в позицию закидывать в какую то переменную текущий баланс, но как это реализовать так, чтобы при следующей проверке на вход переменная сохранялась и ее можно было бы сравнить с текущим балансом и если текущий баланс меньше, чем прошлый, то тогда использовать прошлый баланс для вычисления перменной kp rofit, которая и отвечает за лотаж

Сделайте глобальную переменную и при инициализации запомните значение баланса. Потом делайте расчет от этой константы.

 
statist247 #:
double max_balance=0;
string name="MaxBalance";

int OnInit()
   {
   if(MQLInfoInteger(MQL_TESTER)==0 && GlobalVariableCheck(name))
      {
      max_balance=GlobalVariableGet(name);
      }
   return(INIT_SUCCEEDED);
   }
   
void OnTick()
   {
   if(условие)
      {
      if(AccountInfoDouble(ACCOUNT_BALANCE)-max_balance>0)
         {
         max_balance=AccountInfoDouble(ACCOUNT_BALANCE);
         if(MQLInfoInteger(MQL_TESTER)==0)
            {
            GlobalVariableSet(name,max_balance);
            }
         }
      }
   ...
   }
 
Aleksei Stepanenko #:

Зачем же GV если достаточно переменной на глобальном уровне? Или даже просто static

 
statist247 #:
...переменная сохраняется и может быть сравнена с текущим балансом...
FileWrite
Documentation on MQL5: File Functions
Documentation on MQL5: File Functions
  • www.mql5.com
This is a group of functions for working with files. For security reasons, work with files is strictly controlled in the MQL5 language. Files with...
 
Alexey Viktorov #:

Зачем же GV если достаточно переменной на глобальном уровне? Или даже просто static

Это для работы на реале, после переинициализации мы потеряем максимальный баланс, который был достигнут ранее. Свет выключили, всё такое)

 
statist247 #:
...нужно закидывать текущий баланс в какую-то переменную перед каждой проверкой условий для входа в позицию...

Если бы я делал это для себя, для реальной торговли, то вместо сохранения баланса я бы проверил историю (HistoryDealsTotal()) и вычислил предыдущий баланс.

 

Всем доброго дня!

Никогда не задумывался на одну тему, а вот сегодня, что-то подтолкнуло. Вопрос собственно вот в чём: как рисуются бары и свечи в терминале MT5 мне понятно. А вот как рисуется ломаная линия, вообще не пойму. Может кто-нибудь знает формулу, по которой рассчитывается на каждом баре точка перегиба (по факту цена) этой линии?

С уважением, Владимир.

 
MrBrooklin #:

Всем доброго дня!

Никогда не задумывался на одну тему, а вот сегодня, что-то подтолкнуло. Вопрос собственно вот в чём: как рисуются бары и свечи в терминале MT5 мне понятно. А вот как рисуется ломаная линия, вообще не пойму. Может кто-нибудь знает формулу, по которой рассчитывается на каждом баре точка перегиба (по факту цена) этой линии?

С уважением, Владимир.

По ценам закрытия свечи\бара.