Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2323

 

Приветствую!

Попадались ли индикаторы или есть рабочий код вывода новостей "именно" из терминала на график? (уточняю что речь не про новостной календарь со звездочками), а  то что приходит на разных языках в зависимости от настроек брокера в сам МТ4. 

 
Здравствуйте. У меня в советнике предусмотрены объёмы, но как только я его ставлю на график в МТ4 сразу выскакивает модальное окно и не дает работать - что можно сделать чтобы объемы тоже работали в советнике? Спасибо.
 
krutov64 #:
Здравствуйте. У меня в советнике предусмотрены объёмы, но как только я его ставлю на график в МТ4 сразу выскакивает модальное окно и не дает работать - что можно сделать чтобы объемы тоже работали в советнике? Спасибо.

Здесь ответы на вопросы есть.

 
//+------------------------------------------------------------------+
//|                                                          DTI.mq5 |
//|                                  Copyright 2021, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property description "directional trend index is an indicator of normalized complex q-period momentum with maximum and minimum"
#include <MovingAverages.mqh>
//-----настройки индикатора
#property indicator_separate_window
#property indicator_buffers 11
#property indicator_plots 1
//----горизонталдьные уровни
#property indicator_level1 -25
#property indicator_level2 25
#property indicator_levelcolor clrDarkViolet
#property indicator_levelstyle STYLE_DOT
#property indicator_width1 2
//---oграничениения шкалы отдельного окна
#property indicator_minimum -100
#property indicator_maximum 100
//----графическое построение
#property indicator_label1 "DTI"
#property indicator_type1 DRAW_LINE
#property indicator_color1 clrBlue
#property indicator_style1 STYLE_SOLID
#property indicator_width1 2
//----входные параметры
input int      q=2;
input int      r=25;
input int      s=13;
input int      u=3;
//---input ENUM_APPLIED_PRICE AppliedPrice=PRICE_DTI;
//-----динамические массивы
double MainBuffer[]; //Эргодика (для графического построения)
double HMUBuffer[];  //
double LMDBuffer[];  // 
double HLMBuffer[];  // q-периоднҷй моментум
double EMA_HLMBuffer[]; // r-период 1-ЕМА 
double DEMA_HLMBuffer[]; // s-период 2-ЕМА
double TEMA_HLMBuffer[]; // u-период 3-ЕМА 
double AbsHLMBuffer[]; //q-периодный моментум(абсолютное знечения)
double EMA_AbsHLMBuffer[]; // r-период 1-ЕМА (абсолютное знечения)
double DEMA_AbsHLMBuffer[]; // s-период 2-ЕМА (абсолютное знечения)
double TEMA_AbsHLMBuffer []; // u-период 3-ЕМА (абсолютное знечения)
//---глобальные переменные
int begin1, begin2, begin3,begin4;
int rates_total_min;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0, MainBuffer,INDICATOR_DATA);
   SetIndexBuffer(1,HMUBuffer,INDICATOR_CALCULATIONS);
   SetIndexBuffer(2,LMDBuffer,INDICATOR_CALCULATIONS);
   SetIndexBuffer(3,HLMBuffer,INDICATOR_CALCULATIONS);
   SetIndexBuffer(4,EMA_HLMBuffer,INDICATOR_CALCULATIONS);
   SetIndexBuffer(5,DEMA_HLMBuffer,INDICATOR_CALCULATIONS);
   SetIndexBuffer(6,TEMA_HLMBuffer,INDICATOR_CALCULATIONS);
   SetIndexBuffer(7,AbsHLMBuffer,INDICATOR_CALCULATIONS);
   SetIndexBuffer(8,EMA_AbsHLMBuffer,INDICATOR_CALCULATIONS);
   SetIndexBuffer(9, DEMA_AbsHLMBuffer,INDICATOR_CALCULATIONS);
   SetIndexBuffer(10,TEMA_AbsHLMBuffer,INDICATOR_CALCULATIONS);
//---c какого бара начнет отрисовываться индикатор
   IndicatorSetInteger(INDICATOR_DIGITS,2);
   PlotIndexSetInteger(0,PLOT_SHIFT, begin4);
   string shortname;
   StringConcatenate(shortname,"DTI(",r,",",s,")");
//----установим метку для отображения
   PlotIndexSetString(0,PLOT_LABEL, shortname);
//----установим имя  для показа
   IndicatorSetString(INDICATOR_SHORTNAME,shortname);
   return(0);
  }
//+------------------------------------------------------------------+
//| 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[])
  {
   int i, pos;
   double value1, value2;
   if(rates_total<rates_total_min)
      return(0);
//----
   if(prev_calculated==0)
     {
      pos=begin1;
      for(i=0; i<pos; i++)
        {
         HLMBuffer[i]=0.0;
         AbsHLMBuffer[i]=0.0;
         HMUBuffer[i]=0.0;
         LMDBuffer[i]=0.0;
        }
     }
   else
      pos=prev_calculated-1;
   for(i=pos; i<rates_total; i++)
     {
      HMUBuffer[i]=high[i]-high[i-(i-1)];    HMUBuffer[i]=(HMUBuffer[i]>0)?HMUBuffer[i]:0;
      LMDBuffer[i]=-1*(low[i]-low[i-(i-1)]); LMDBuffer[i]=(LMDBuffer[i]>0)?LMDBuffer[i]:0;
      HLMBuffer[i]=HMUBuffer[i]-LMDBuffer[i];
      AbsHLMBuffer[i]=MathAbs(HLMBuffer[i]);
     }
//----рассчитаем первую скользящую среднюю на массивах, r-периодная
   ExponentialMAOnBuffer(rates_total,prev_calculated,begin1,r,HLMBuffer,EMA_HLMBuffer);
   ExponentialMAOnBuffer(rates_total,prev_calculated,begin1,r,AbsHLMBuffer,EMA_AbsHLMBuffer);
//----рассчитаем вторую (s)скользящую среднюю на массивах
   ExponentialMAOnBuffer(rates_total,prev_calculated,begin2,s,EMA_HLMBuffer,DEMA_HLMBuffer);
   ExponentialMAOnBuffer(rates_total,prev_calculated,begin2,s,EMA_AbsHLMBuffer,DEMA_AbsHLMBuffer);
//---u-периодная 3-я
   ExponentialMAOnBuffer(rates_total,prev_calculated,begin3,u,DEMA_HLMBuffer,TEMA_HLMBuffer);
   ExponentialMAOnBuffer(rates_total,prev_calculated,begin3,u,DEMA_AbsHLMBuffer,TEMA_AbsHLMBuffer);
//----тепер в вычислим значения индикатора
   if(prev_calculated==0)
     {
     pos=begin4;
     for(i=0; i<pos; i++)
        MainBuffer[i]=0;
     }
   else
      pos=prev_calculated-1;
//-----
   for(i=pos; i<rates_total; i++)
     {
      value1=100*TEMA_HLMBuffer[i];
      value2=TEMA_AbsHLMBuffer[i];
      MainBuffer[i]=(value2>0)?value1/value2:0;
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+ 

извините пожалуйста я не могла найти свой ошибка
MetaEditor даст 0 ошибка а MetaTrader не рисуют график
можно мой MetaTrader не правильно работает 

Discover new MetaTrader 5 opportunities with MQL5 community and services
Discover new MetaTrader 5 opportunities with MQL5 community and services
  • 2023.12.15
  • www.mql5.com
MQL5: language of trade strategies built-in the MetaTrader 5 Trading Platform, allows writing your own trading robots, technical indicators, scripts and libraries of functions
 
Rukhzoramo Qurbonnazarova #:

извините пожалуйста я не могла найти свой ошибка
MetaEditor даст 0 ошибка а MetaTrader не рисуют график
можно мой MetaTrader не правильно работает 

Для вставки кода существует специальная кнопка на панели инструментов:

UPD Я исправил Ваше сообщение.

 
Artyom Trishkin #:

Для вставки кода существует специальная кнопка на панели инструментов:

UPD Я исправил Ваше сообщение.

спасибо 
 

Добрый день,


Мне надо передать значения из одного буфера в другой в новом  цикле for(

for(int i=limit-1; i>0; i--)

Раньше работал прием - в функцию MAOnArray() куда передавался буфер .

Теперь такое решение не показывается в нулевом баре (Строка 1 или Строка 2). См код ниже.

Вопрос, а как передать значения куда надо?

   for(int i=limit-1; i>0; i--)
   {
  
 
//Строка 1 
      val1= iMAOnArray(Buffer0,0,1,0,MODE_SMA,i);
      val2= iMAOnArray(Buffer1,0,1,0,MODE_SMA,i);
      
       
//Строка 2       
      // val1= Buffer0[i];   
      // val2= Buffer1[i];  
 
      Buffer3[i]=  val1; 
      Buffer4[i]= val2;
       
   }



Использую

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[])
  {
//---
   int limit;
//---
   if(rates_total<=1)
      return(0);
//--- last counted bar will be recounted
   limit=rates_total-prev_calculated;
   if(prev_calculated>0)
      limit=limit+1;
 
Rukhzoramo Qurbonnazarova #:

извините пожалуйста я не могла найти свой ошибка
MetaEditor даст 0 ошибка а MetaTrader не рисуют график
можно мой MetaTrader не правильно работает 

посмотрите в журнал Experts терминала - у вас в коде очевидный выход за границы массива.

HMUBuffer[i]=high[i]-high[i-(i-1)];

в 5-ке (у вас-же 5-ка, файл *.mq5) это ошибка.

 
Ivan Strekalov #:
iMAOnArray

В MQL5 нет этой функции. Артем в этой ветке писал пример как это сделать.

 

 Вечер добрый! Нужно вывести панель по верх всех графиков. Не могу найти, как это сделать. Без кнопок, скроллинга. С одной строкой.

Файлы:
v7sol2pv-3.jpg  116 kb