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

 

Подскажите, как вывести информационное сообщение на экран и не ждать нажатия кнопки OK ?

Есть конечно функция MessageBox, но она ждет реакции и останавливает выполнение программы.

 
pivomoe:

Подскажите, как вывести информационное сообщение на экран и не ждать нажатия кнопки OK ?

Есть конечно функция MessageBox, но она ждет реакции и останавливает выполнение программы.

Да Alert, вроде. Только обязательно читайте последний абзац.

https://www.mql5.com/ru/docs/common/alert

Документация по MQL5: Общие функции / Alert
Документация по MQL5: Общие функции / Alert
  • www.mql5.com
[in]  Любые значения, разделенные запятыми. Для разделения выводимой информации на несколько строк можно использовать символ перевода строки "\n" либо "\r\n". Количество параметров не может превышать 64. Массивы нельзя передавать в функцию Alert(). Массивы должны выводиться поэлементно. Данные типа double выводятся с 8 десятичными цифрами после...
 
BlackTomcat:

Да Alert, вроде. Только обязательно читайте последний абзац.

https://www.mql5.com/ru/docs/common/alert

Спасибо. То, что надо.

 

Добрый день. Подскажите плиз или подкиньте ссылку. Как организовать индикатор, который показывал бы изменения баланса в виде свечного графика в отдельном окне. Самое простое я сделал, индикатор копирует изменения цены, а вот как теперь заменить изменения цены на изменения баланса, иными словами подменить массивы используемые индикатором.

Если есть идеи, поделитесь плиз, буду благодарен даже просто за общее описание алгоритма, не хватает опыта, не знаю с какого боку подступиться.

//+------------------------------------------------------------------+
//|                                                iBalans_Logic.mq5 |
//|                                              Sergei Voicehovskii |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Sergei Voicehovskii"
#property link      ""
#property version   "1.00"
//------------------------------------------------------------------
#property indicator_separate_window
#property indicator_buffers 6
#property indicator_plots   1
#property indicator_label1  "iBalans_Logic"
#property indicator_type1   DRAW_COLOR_CANDLES
#property indicator_color1  clrGray,clrDodgerBlue,clrSandyBrown
//--- indicator buffers
//--- индикаторный буфер
double opn[],hi[],lo[],cls[],clr[],lot[],type[];
//------------------------------------------------------------------
// Custom indicator initialization function
// Функция инициализации пользовательского индикатора
//------------------------------------------------------------------
int OnInit()
  {
   SetIndexBuffer(0,opn,INDICATOR_DATA);
   SetIndexBuffer(1,hi,INDICATOR_DATA);
   SetIndexBuffer(2,lo,INDICATOR_DATA);
   SetIndexBuffer(3,cls,INDICATOR_DATA);
   SetIndexBuffer(4,clr,INDICATOR_COLOR_INDEX);
   SetIndexBuffer(5,lot,INDICATOR_CALCULATIONS);
   SetIndexBuffer(6,type,INDICATOR_CALCULATIONS);
   IndicatorSetString(INDICATOR_SHORTNAME,"iBalans_Logic ("")");
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function    
//| Функция итерации пользовательского индикатора                          |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{
//---
Comment("-------------------------", 
        "\n rates_total        = ",rates_total,
        "\n prev_calculated = ",prev_calculated,
        "\n ---------------------- "
       ); 
//---
int i=(int)MathMax(prev_calculated-1,0);

   for(;i<rates_total && !_StopFlag; i++)
     {
     
       opn[i] = open[i];
       cls[i] = close[i];
        hi[i] = high[i];
        lo[i] = low[i];
       clr[i] = (cls[i]>opn[i])?1:(cls[i]<opn[i])?2:0;
     }
//--- return value of prev_calculated for next call
//--- возвращаемое значение соответствует моменту prev_calculated для следующего вызова
return(rates_total);
}
//+------------------------------------------------------------------+

https://charts.mql5.com/22/192/eurusd-m1-alpari-international-2.png

 
 
Sergey Voytsekhovsky:

Добрый день. Подскажите плиз или подкиньте ссылку. Как организовать индикатор, который показывал бы изменения баланса в виде свечного графика в отдельном окне. Самое простое я сделал, индикатор копирует изменения цены, а вот как теперь заменить изменения цены на изменения баланса, иными словами подменить массивы используемые индикатором.

Если есть идеи, поделитесь плиз, буду благодарен даже просто за общее описание алгоритма, не хватает опыта, не знаю с какого боку подступиться.

https://charts.mql5.com/22/192/eurusd-m1-alpari-international-2.png

Вам такое нужно?

LifeHack Balance Equity

Индикатор отображает баланс и эквити торгового счёта. 

Особенно полезен данный индикатор при использовании в тестере стратегий — получается визуальное отображение баланса и эквити:

LifeHack Balance Equity

С небольшим отличием - здесь в виде линий отображается Баланс и Средства.

 
Vladimir Karputov:

Вам такое нужно?

.....

С небольшим отличием - здесь в виде линий отображается Баланс и Средства.

Здравствуйте Владимир.

Спасибо за быстрые ответы.

Нет, не такое. Попробую изложить подробнее.

Индикатор нужен свечной. То-есть у каждой свечи изменния цены (графика) должна быть своя свеча изменения эквити (конечно эквити, не баланса). Причем буферы БуфОткр, БуфЗакр, БуфХай и БуфЛоу должны быть расчитанными, не взятыми из структуры (как приведенном Вами примере). 

Расчитываться эти буферы будут советником. При получении сигнала Бай или Сэлл (с указанием лотности) будет пересчитываться размер позиции, цена открытия позиции  и как результат - значения этих буферов.

Сигнальные советники будут дополнены данным индикаторм и на выходе  получим несколько свечных графиков эквити, по одному для каждого из сигналов. Их можно будет сравнивать, применять к ним МА и прочие тех анализы, такие-же как и для графиков цены.

Вопрос - как это осуществить? Вижу два способа:

  1. Индикатор получает эти самые сигналы
  2. Индикатор получает готовые массивы.
Ни то, ни другое я делать еще не умею. Подскажите направление - что читать? Как правильнее?
 

Пожалуй сформирую вопрос заново.

Подскажите плиз:

  1. Как сделать так, что-бы индикатор в качестве входящих параметров OnCalculate использовал заготовленные пользователем БуфОткр, БуфЗакр, БуфХай и БуфЛоу.
  2. Как полчучить в индикатор, для расчетов внутри индикатора, переменные, которые могут изменяться на каждом тике (сигналы Бай, Сэлл, Лот).
 
Sergey Voytsekhovsky:

Пожалуй сформирую вопрос заново.

Подскажите плиз:

  1. Как сделать так, что-бы индикатор в качестве входящих параметров OnCalculate использовал заготовленные пользователем БуфОткр, БуфЗакр, БуфХай и БуфЛоу.
  2. Как полчучить в индикатор, для расчетов внутри индикатора, переменные, которые могут изменяться на каждом тике (сигналы Бай, Сэлл, Лот).

Извините, вообще ничего не понял. ОТключаюсь на выходные. Может в понедельник пойму ...

 

Возникла делема.
Использую в советнике встроенные индикаторы iAO и iRSI, советник выводит их на график и с этим все ok.

Но возникла потребность немного отформатировать их внешний вид, т.е. правой мышкой по индикатору и поменять цвет, толщину линий и т.п. Руками это все форматируется, а как это сделать в советнике??? Где лежат .mq5 файлы этих индикаторов? К ним вообще доступ есть?

Заменять их аналогичными из папки Example и подключать как iCustom не хочу.