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

 
Tretyakov Rostyslav #:

Скорее всего мы использовали разные зиг-заги.

Я использовал стандартный из папки "Examples"



Взял  индикатор из стандартный из папки "Examples". Ошибок нет.


Вот не пойму, что у меня с буфером отрисовки. Указал вроде всё правильно

#property indicator_chart_window
#property indicator_buffers 6 // в оригинале было 3
#property indicator_plots   2 // в оригинале было 1
//---- plot ZigZag 1
#property indicator_label1  "ZigZag1"
#property indicator_type1   DRAW_SECTION
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//---- plot ZigZag 2
#property indicator_label2  "ZigZag2"
#property indicator_type2   DRAW_SECTION
#property indicator_color2  clrBlueViolet
#property indicator_style2  STYLE_SOLID
#property indicator_width2  1
//--- input parameters ZigZag 1
input int      InpDepth    =26;
input int      InpDeviation=12;
input int      InpBackstep =9;
//--- input parameters ZigZag 2
input int      Ext_Depth    =12;
input int      Ext_Deviation=5;
input int      Ext_Backstep =3;
//--- indicator buffers ZigZag 1
double         ZigZagBuffer[];      //
double         HighMapBuffer[];     //
double         LowMapBuffer[];      //
int            ExtRecalc=3;         //
//--- indicator buffers ZigZag 2
double         Buffer1[];      // main buffer
double         Buffer2[];     // ZigZag high extremes (peaks)
double         Buffer3[];      // ZigZag low extremes (bottoms)
int            Recalc=3;         // nu

enum EnSearchMode
  {
   Extremum=0, // searching for the first extremum
   Peak=1,     // searching for the next ZigZag peak
   Bottom=-1   // searching for the next ZigZag bottom
  };
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,ZigZagBuffer,INDICATOR_DATA);
   SetIndexBuffer(1,HighMapBuffer,INDICATOR_CALCULATIONS);
   SetIndexBuffer(2,LowMapBuffer,INDICATOR_CALCULATIONS);
//
   SetIndexBuffer(3,Buffer1,INDICATOR_DATA);
   SetIndexBuffer(4,Buffer2,INDICATOR_CALCULATIONS);
   SetIndexBuffer(5,Buffer3,INDICATOR_CALCULATIONS);
//--- set short name and digits
   //string short_name=StringFormat("ZigZag(%d,%d,%d)",InpDepth,InpDeviation,InpBackstep);
   //IndicatorSetString(INDICATOR_SHORTNAME,short_name);
   //PlotIndexSetString(0,PLOT_LABEL,short_name);
   IndicatorSetInteger(INDICATOR_DIGITS,_Digits);
//--- set an empty value
   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0.0);
   PlotIndexSetDouble(3,PLOT_EMPTY_VALUE,0.0);
  }
//+------------------------------------------------------------------+

 
Игорь #:
PlotIndexSetDouble(3,PLOT_EMPTY_VALUE,0.0);

PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,0.0);

 

коллеги - понимаю тут не сложно просто пока еще не смотрел....

как в индикатор можно добавить условие по времени, чтобы например показывал данные с например начала этого года а те которые были ранее данные - чтобы не показывал... или даже  и не считал....

или вообще типа в интервале например за 2023 год чтобы только отображал информацию.... 

эти условия работы по времени надо и для индика и для МТ 4 и для МТ 5 надо... 

посмотрел - здесь кое-что есть... просто может кое-что еще есть исходя для оптимизации  кода...

вот с 2012 г для МТ 5 нашел...

    TimeLimitProtectedEA.mq5 |
//|                                      Copyright 2012, Investeo.pl |
//|                                           http://www.investeo.pl |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, Investeo.pl"
#property link      "http://www.investeo.pl"
#property version   "1.00"
                           
datetime allowed_until = D'2012.02.11 00:00'; 
int password_status = -1;

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   printf("Работа советника разрешена до %s", TimeToString(allowed_until, TIME_DATE|TIME_MINUTES));
   datetime now = TimeCurrent();
   
   if (now < allowed_until) 
         Print("Проверка советника прошла успешно. Текущая дата: " + TimeToString(now, TIME_DATE|TIME_MINUTES));
//---
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
  if (TimeCurrent() < allowed_until) 
    {        
    }
   else Print("Срок работы советника истек."); 

спс

Ограничение работы Индикаторов по времени???!?!?!?!?
Ограничение работы Индикаторов по времени???!?!?!?!?
  • 2020.12.26
  • Stanislav Aksenov
  • www.mql5.com
MQL4 и MetaTrader 4: Ограничение работы Индикаторов по времени???!?!?!?!?
 
Roman Shiredchenko #:

коллеги - понимаю тут не сложно просто пока еще не смотрел....

как в индикатор можно добавить условие по времени, чтобы например показывал данные с например начала этого года а те которые были ранее данные - чтобы не показывал... или даже  и не считал....


Как вариант

   for(i=start; i<rates_total && !IsStopped(); i++)
     {
      ExtTRBuffer[i]=MathMax(high[i],close[i-1])-MathMin(low[i],close[i-1]);
      if(time[i]<time_start||time[i]>time_stop)
        {
         ExtATRBuffer[i]=ExtATRBuffer[i-1];
        }
      else
        {
         ExtATRBuffer[i]=ExtATRBuffer[i-1]+(ExtTRBuffer[i]-ExtTRBuffer[i-ExtPeriodATR])/ExtPeriodATR;
        }
     }
 
Maxim Kuznetsov #:

задумка автора, судя по коду и комментариям :

ОБЯЗАТЕЛЬНО рисовать трендовые линии заданным цветом:

и что-то там писать в описаниях. Валюта_направление_объём. То есть на EURUSD делаешь трендовую линию цветом Blue (синим, не промахнись) и в description линии EURUSD+0.2 или EURUSD-0.1 . Для покупок и продаж соотв.

индикатор будет считать что это время вход-выход и от них высчитывать эквити.

---

точнее не подскажу, чтобы точнее - надо ставить 4-ку, заниматься портированием и отладкой :-)

код очень старый и не факт что работает (а тем более корректно) даже в новых билдах 4-ки

да. Еще раз сенкую после того как нарисовал наклонку на валютах что то пошло рисоваться.... )

ниж инди фунт доллар и евродоллар


в общем в таком формате что то кажет буду пробовать и смотреть....

 
Tretyakov Rostyslav #:

Как вариант

О! Спс. Воспользуюсь!
 
Roman Shiredchenko #:
О! Спс. Воспользуюсь!

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

 
Artyom Trishkin #:
Можно и так: получить нужный бар по времени, и от этого бара и рисовать индикатор, ну или до этого бара - зависит от направления цикла индикатора.

Спасибо, Артем. Буду делать на выходных этих

 
Добрый день! Сделал индикатор - панель. Сам индикатор работает идеально. Но если на график поместить еще один индикатор или эксперт, в котором также имеется панель, то терминал начинает тормозить. Причину я нашел - функция OnChartEvent (события идут одновременно на все панели). Подскажите как можно решить эту проблему?
 
Vyacheslav Suchkov #:
Добрый день! Сделал индикатор - панель. Сам индикатор работает идеально. Но если на график поместить еще один индикатор или эксперт, в котором также имеется панель, то терминал начинает тормозить. Причину я нашел - функция OnChartEvent (события идут одновременно на все панели). Подскажите как можно решить эту проблему?

Только фильтровать, типа "это моё - это чужое"