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

 
Alexey Viktorov:

Так и ограничивай до середины. Кто запрещает???

если он не мужского пола, то видимо синдром ПМС запрещает читать и задавать адекватные вопросы, пока лишь визги дайте мне... мне очень хочется так, а не так...

ЗЫ: я на 4-х форумах, по возможности, в месяц делаю около 20 работ бесплатно под МТ4, и около 10 заказов по индивидуальным ТЗ, но регулярно раз в 1,5 -2 месяца появляется сказочный персонаж, который вынесет мозг, потому что ему не нужно ни разобраться с МТ4, ни сделать конкретную задачу под заказ... ему нужно просто сделать кому-нибудь мозги, вот и вся его задача...

Артему я бы памятник поставил при жизни за терпение, в столь продолжительный срок разбираться, с такими персонажами

 
Alexey Viktorov:

Сделать очень просто.

Вариант №1 напрячь мозги.

если не получается можно воспользоваться вариантом №2

Без выёживания и без оскорблений разработчиков и в особенности пользователей форума, попросить помощи на форуме.

В противном случае будешь послан на ... почту.

Я знаю, как эту "особенность" обойти. 

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

Этот способ выглядит так:

Если заполнить  неинтересующий нас остаток массива максимальным значением, то индикаторы прекращают рисование линий.

Именно такое "идиотское" решение этой проблемы мы наблюдаем в стандартных индикаторах MT4 (например, в SMA, EMA, SMMA и других). 

Но, согласитесь, это полный идиотизм. И я подозреваю, что именно в силу этого идиотизма об этом способе "решения" этой проблемы в описании не сказано ни одного слова.

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

 
Alexey Viktorov:

Именно так. Открываешь новый счёт и переводишь деньги со старого на новый посредством внутреннего перевода абсолютно без комиссий.

Вообще ничё не понял. Алексей, как ты вообще понял о чём речь? Причём тут к этому 8 буферов индикатора,  которые какой-то транслятор не может транслировать? Чёрт ногу сломит...
 
Igor Makanu:

если он не мужского пола, то видимо синдром ПМС запрещает читать и задавать адекватные вопросы, пока лишь визги дайте мне... мне очень хочется так, а не так...

ЗЫ: я на 4-х форумах, по возможности, в месяц делаю около 20 работ бесплатно под МТ4, и около 10 заказов по индивидуальным ТЗ, но регулярно раз в 1,5 -2 месяца появляется сказочный персонаж, который вынесет мозг, потому что ему не нужно ни разобраться с МТ4, ни сделать конкретную задачу под заказ... ему нужно просто сделать кому-нибудь мозги, вот и вся его задача...

Артему я бы памятник поставил при жизни за терпение, в столь продолжительный срок разбираться, с такими персонажами

Вам, вероятно, нужно отдохнуть.

 
Нужно делать детей по трезвому, чтобы не было проблем в будущем.
 

Ну что я делаю не так?

//+------------------------------------------------------------------+
//|                                                      CCI_DIV.mq5 |
//|                                                        RomanRott |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "RomanRott"
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1
//--- plot HL_CCI
#property indicator_label1  "HL_CCI"
#property indicator_type1   DRAW_HISTOGRAM
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- input parameters
input int      Period_=70; //Период
//--- indicator buffers
double         HL_CCIBuffer[];
int cci_h1, cci_h2;
double cci1[], cci2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,HL_CCIBuffer,INDICATOR_DATA);
   cci_h1 = iCCI(_Symbol, PERIOD_CURRENT, Period_, PRICE_HIGH);
   cci_h2 = iCCI(_Symbol, PERIOD_CURRENT, Period_, PRICE_LOW);
   
   //ArraySetAsSeries(cci1, true);
   //ArraySetAsSeries(cci2, true);
//---
   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[])
  {
   CopyBuffer(cci_h1, 0, 0, rates_total-prev_calculated, cci1);
   CopyBuffer(cci_h2, 0, 0, rates_total-prev_calculated, cci2);
   for(int i = prev_calculated; i<rates_total;i++){
      HL_CCIBuffer[i] = cci1[i]-cci2[i];
   }
   return(rates_total);
  }
//+------------------------------------------------------------------+
 
Artyom Trishkin:
Вообще ничё не понял. Алексей, как ты вообще понял о чём речь? Причём тут к этому 8 буферов индикатора,  которые какой-то транслятор не может транслировать? Чёрт ногу сломит...

Артём, тыжпрограммист... Однажды М. Ботвинник сказал, что компьютер это идиот. Следовательно каждый программист умеет разговаривать с идиотом.

Про 8 или 512 буферов было чуть раньше, а этот текст был на жалобу что брокер отказался перевести счёт с МТ4 на МТ5.


Igor Makanu:

Артему я бы памятник поставил при жизни за терпение, в столь продолжительный срок разбираться, с такими персонажами

Уже есть...


 
Roman Sharanov:

Ну что я делаю не так?

//+------------------------------------------------------------------+
//|                                                      CCI_DIV.mq5 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                             https://mql5.com/ru/users/artmedia70 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://mql5.com/ru/users/artmedia70"
#property version   "1.00"
#property indicator_separate_window
#property indicator_buffers 3
#property indicator_plots   1
//--- plot DivCCI
#property indicator_label1  "DivCCI"
#property indicator_type1   DRAW_HISTOGRAM
#property indicator_color1  C'143,188,139'
#property indicator_style1  STYLE_SOLID
#property indicator_width1  2
//--- input parameters
input uint     InpPeriod=70;   // CCI period
//--- indicator buffers
double         BufferDivCCI[];
double         BufferHCCI[];
double         BufferLCCI[];
//--- global variables
int            period_cci;
int            handle_hcci;
int            handle_lcci;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- set global variables
   period_cci=int(InpPeriod<2 ? 2 : InpPeriod);
//--- indicator buffers mapping
   SetIndexBuffer(0,BufferDivCCI,INDICATOR_DATA);
   SetIndexBuffer(1,BufferHCCI,INDICATOR_CALCULATIONS);
   SetIndexBuffer(2,BufferLCCI,INDICATOR_CALCULATIONS);
//--- setting indicator parameters
   IndicatorSetString(INDICATOR_SHORTNAME,"HL CCI ("+(string)period_cci+")");
   IndicatorSetInteger(INDICATOR_DIGITS,Digits());
//--- setting buffer arrays as timeseries
   ArraySetAsSeries(BufferDivCCI,true);
   ArraySetAsSeries(BufferHCCI,true);
   ArraySetAsSeries(BufferLCCI,true);
//--- create CCI's handles
   ResetLastError();
   handle_hcci=iCCI(NULL,PERIOD_CURRENT,period_cci,PRICE_HIGH);
   if(handle_hcci==INVALID_HANDLE)
     {
      Print("The iCCI(",(string)period_cci,") object was not created: Error ",GetLastError());
      return INIT_FAILED;
     }
   handle_lcci=iCCI(NULL,PERIOD_CURRENT,period_cci,PRICE_LOW);
   if(handle_lcci==INVALID_HANDLE)
     {
      Print("The iCCI(",(string)period_cci,") object was not created: Error ",GetLastError());
      return INIT_FAILED;
     }
//---
   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[])
  {
//--- Проверка и расчёт количества просчитываемых баров
   if(rates_total<fmax(period_cci,4)) return 0;
//--- Проверка и расчёт количества просчитываемых баров
   int limit=rates_total-prev_calculated;
   if(limit>1)
     {
      limit=rates_total-1;
      ArrayInitialize(BufferDivCCI,EMPTY_VALUE);
      ArrayInitialize(BufferHCCI,0);
      ArrayInitialize(BufferLCCI,0);
     }
//--- Подготовка данных
   int count=(limit>1 ? rates_total : 1),copied=0;
   copied=CopyBuffer(handle_hcci,0,0,count,BufferHCCI);
   if(copied!=count) return 0;
   copied=CopyBuffer(handle_lcci,0,0,count,BufferLCCI);
   if(copied!=count) return 0;

//--- Расчёт индикатора
   for(int i=limit; i>=0 && !IsStopped(); i--)
     {
      BufferDivCCI[i]=BufferHCCI[i]-BufferLCCI[i];
     }

//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
 

подскажите что нужно дописать суда чтобы индикатор работал по секундно а не каждый тик ??

#property indicator_chart_window

#property indicator_buffers 1

#property indicator_color1 Red

#property strict

double buffer[];

void init()

{

SetIndexBuffer(0, buffer);

SetIndexStyle (0,STYLE_SOLID);

}

void start ()


    double vbid_1    = MarketInfo("USDRUB",MODE_BID);

    double vbid_2    = MarketInfo("EURUSD",MODE_BID);




    double a = vbid_1;

    double b = vbid_2;

    double x = a / b ;

      

      buffer[0] = x;   

      Comment (x);

       

}


 
gonsharov:

подскажите что нужно дописать суда чтобы индикатор работал по секундно а не каждый тик ??

Вам нужно прочитать https://docs.mql4.com/ru/basis/function/events

и написать свой обработчик события OnTimer()

Функции обработки событий - Функции - Основы языка - Справочник MQL4
Функции обработки событий - Функции - Основы языка - Справочник MQL4
  • docs.mql4.com
В языке MQL4 предусмотрена обработка некоторых предопределенных событий. Функции для обработки этих событий должны быть определены в программе MQL4: имя функции, тип возвращаемого значения, состав параметров (если они есть) и их типы должны строго соответствовать описанию функции-обработчика события. Именно по типу возвращаемого значения и по...
Причина обращения: