Вопросы от "чайника" - страница 234

 
forward666: да,нужна визуализация

Для тестирования: https://www.metatrader5.com/ru/terminal/help/algotrading/visualization

Для торговли в режиме текущего времени пока не нашёл справки - попробуйте просто открыть и закрыть позицию на демо-счете. 

 
Boris.45:   Добрый день, уважаемые трейдеры!  Помогите пожалуйста начинающему программисту.  С использованием фракталов для нескольких таймфреймов написал кусок программы по поиску скользящих каналов (СК) Боришпольца, начал писать алгоритмы  принятия решений по открытию позиций.  Столкнулся с ситуацией, когда на быстро растущих трендах временой интервал торговли составляет всего от одного до двух баров.    Здесь сама ситуация подсказывает: в блоке поиска и вычисления параметров СК надо работать на выбранных таймфреймах , а решение о выставлении ордеров или открытии позиций надо делать на очень мелких таймфреймах.     Подскажите,пожалуйста, такой момент: как оформить программу так, чтобы блок вычисления параметров СК работал только на выбранных таймфреймах, например, на Н1 и Н4, а блок решения о выставлении ордеров работал на таймфрейме М1.   В статьях решения этого вопроса не нашел.

  Спасибо за внимание.

От фракталов достаточно далёк, но вот соображения общего порядка. Можно попробовать таким простейшим образом: создать индикатор, который вычисляет "параметры СК" на Н4. И пусть эксперт на каждом тике опрашивает этот индикатор и принимает решения о выставлении ордеров.
 
Yedelkin:

Для тестирования: https://www.metatrader5.com/ru/terminal/help/algotrading/visualization

Для торговли в режиме текущего времени пока не нашёл справки - попробуйте просто открыть и закрыть позицию на демо-счете. 

Спасибо!Попробую!

Но мне как раз нужен он для визуализации на демо-счете)

 
forward666: Но мне как раз нужен он для визуализации на демо-счете)
Если не получится на демо-счете - пишите.
 
Yedelkin:
Если не получится на демо-счете - пишите.
ок!сегодня вечером смогу попробовать и отпишусь!
 
forward666:

Но мне как раз нужен он для визуализации на демо-счете)


Из истории мышкой на чарт можно вытащить (с шифтом - все).

!!! С контролом сбросит настройки чарта.
 

Что не так в коде?

На графике все норм, в тестере вылезает ошибка Array Out Of Range

#property indicator_label1  "LINE"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrGold
#property indicator_style1  STYLE_SOLID
#property indicator_width1  2

input int    period   = 10;       //Период усредения
input bool   USE_LIMIT= false;    //вкл/выкл лимитирование
                                  //Заключается в ограничении максимального изменения значения индикатора
input double use_limit= 0.00005;  //Величина
                                  //на которую максимально может измениться индикатор

double         Buffer[];
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
   
   SetIndexBuffer(0,Buffer,INDICATOR_DATA);
   //PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[])
  {
//--- вычисления значений индикатора
//--- calculate the indicator values
   int start=0;
//--- если расчет уже производился на предыдущем запуске OnCalculate
//--- if the calculation is made on a previous run of OnCalculate
   if(prev_calculated>0) start=prev_calculated-1; // установим начало расчетов с предпослденего бара -- Set the start of the penultimate bar calculations
//--- заполняем индикаторный буфер значениями
//--- fill indicator buffer values
   for(int i=start;i<rates_total;i++)
     {
      Buffer[0]=price[0];
      double delta=(price[i]-Buffer[i])/period;
      if(USE_LIMIT && delta>use_limit)
        {
         delta=use_limit;
        }
      if(USE_LIMIT && delta<-use_limit)
        {
         delta=-use_limit;
        }
      Buffer[i+1]=Buffer[i]+delta;
     }
//--- вернем значение prev_calculated для следующего вызова функции
//--- return the value for the next call of prev_calculated function
   return(rates_total);
  }
//+------------------------------------------------------------------+
 
lazarev-d-m:

Что не так в коде?

На графике все норм, в тестере вылезает ошибка Array Out Of Range

 

 


Цикл идет до i<rates_total.Далее  есть Buffer[ i+1] .

 Buffer[rates_total] .Нет такого.Последний индекс rates_total-1.

 
lazarev-d-m:

Что не так в коде?

На графике все норм, в тестере вылезает ошибка Array Out Of Range

 

 


Buffer[i+1] === +1 не делается проверка на выход за массив
 
Karlson:


Цикл идет до i<rates_total.Далее  есть Buffer[ i+1] .

 Buffer[rates_total] .Нет такого.Последний индекс rates_total-1.

Изменил на это

i<rates_total-1
Вроде бы работает