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

 
Papa Hoth #:
Может баг какой 
Баг у Вас в коде - выход за пределы массива.
 
От нуля до размера массива на единицу больше.)
 
  int ARr[4];
   for(int i=0; i<ArraySize(ARr); i++)
   {
   ARr[i]=i;
   }
   ArrayPrint(ARr);
Я не видел, как сработала сигнализация. Скопировал и нажал случайно, даже не обратил внимания. Спасибо всем за отзывы
 
Artyom Trishkin #: You essentially have an error everywhere, since such a loop is standard for you.

Пожалуйста, просветите меня, почему

 
Papa Hoth #:

Просветите, пожалуйста, почему

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

 
Papa Hoth #:
С ПК потом напишу.
Код из памяти, да по сути любой стандартный код такого типа.
Везде работает как надо, если писать индикатор- ошибка.
Может баг какой 
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 bars = rates_total;
   
   int arr[4];
   int size = ArraySize(arr);
   
   //---------------------------------------------
   //Индексация буфера как тайм-серия справа налево [3, 2, 1, 0](по умолчанию в МТ4)
   ArraySetAsSeries(buffer, true);
   
   //но пробегаемся по элементам как по массиву слева направо    
   for(int i=size-1; i>=0; i--)
      buffer[i] = i;
      
   //--------------------------------------------- 
   //Индексация буфера как массив слева направо [0, 1, 2, 3](по умолчанию в МТ5)
   ArraySetAsSeries(buffer, false);
   
   //пробегаемся по элементам как по массиву слева направо
   for(int i=0; i<size; i++)
      buffer[bars - size + i] = i;

...


В индикаторных буферах, надо учитывать направление индексации буфера.

 
Здравствуйте, могли бы подсказать, как сделать следующую задумку: 
Если пересекаются две МА, то у первой МА цвет и толщина линии должны измениться:
Накидал пару строк, но вышло не очень. Поэтому прошу помощи у вас, что нужно добавить или изменить?
//OnCalculate

for(int i=to_copy;i<rates_total && !IsStopped();i++){
SetColor(i);
PlotIndexSetInteger(2,PLOT_LINE_WIDTH,LW); 
}       
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
void SetColor(int i)
  {
if(Ma_O_Buf[i-1]>MA_T_Buf[i-1])  {
ColorBuffer[i-1] = 1; 
LW=2;
}
else if(Ma_O_Buf[i-1]<MA_T_Buf[i-1]){ 
ColorBuffer[i-1]=2; 
LW=1;
}
else {ColorBuffer[i-1]=0; LW=0}
  
  }
//+---------
 
Artyom Trishkin #:

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

Да знаю я это всё,говорю же что = не увидел.Думал вы на счёт синтаксиса кода говорите.
 
Roman #:


В индикаторных буферах, надо учитывать направление индексации буфера.

Благодарю.
 

Всем привет

Нужен просто скрипт для MT4, чтобы несколько ордеров открывать одним нажатимем, с SL, TP, где б такой найти? Или самому писать нужно? Если самому, где этому научится? что прочитать? попроще, ничего вроде сложного не задумал, просто пару ордеров нужно одним нажатием открывать.

с этого начинать наверное ? https://www.mql5.com/ru/articles/1475
Язык MQL 4 для "чайников". Первое знакомство
Язык MQL 4 для "чайников". Первое знакомство
  • www.mql5.com
Эта серия статей рассчитана на трейдеров, которые ничего не знают о программировании, но хотят изучить язык MQL 4 максимально быстро с минимальными усилиями и затратами времени. Если вы боитесь таких словосочетаний, как "объектная ориентация" или "трёхмерный массив", эта статья - то что вам нужно. Уроки рассчитаны на максимально быстрый результат. Кроме того, материал будет подаваться в доступной форме. Мы не будем сильно углубляться в теорию, зато практическую пользу вы получите уже на первом уроке.