[Архив!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 2. - страница 376

 
-xlapex-:

Вот я применил функцию MathAbs, Alert показывает - ноль и ноль, а хотелось бы - модуль разницы и индекс бара...

int start()
{
int mas1[30,2],mas2[30,2],mas3[30,2],ind_1;
{
for (int i=1;i<=count_bars;i++)
{
mas1[i, 0]=Close[i];
mas1[i, 1]=i;
mas2[i, 0]=Open[i];
mas2[i, 1]=i;

mas3[i, 0] = MathAbs(Close[i]-Open[i]);
mas3[i, 0] = i;

ArraySort(mas3);
mod_1=mas3[2, 0];
ind_1=mas3[2, 1];

Alert(mod_1," ",ind_1);
}
}

return(0);
}

У вас массивы int, а Open и Close - double Соответственно 1 - 1 = 0
 

привет всем

я новичок в mql4 пытаюсь написать советника эксперта по индикатору aligator

пока нечего дельного не получилось Увы

граждане профисионалы вас такие банальными просьбы,вопросы наверно зай..ли

но все же можно вас профессионалов попросить написать эксперта по индикатору aligator


стратегия пипсовая


позиций Buy и Sell закрвываются придостижний StopLoss и TakeProfit

сигнал на покупку при пересечений зеленой линей синей и красной снизу вверх открывает позицию на Buy

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

еще что бы советник больше одной сделки не открывал пока не закроет приведушию


StopLoss =10;

TakeProfit =10;

Magic =33;

SlipPage =5;

Lot =0.1;

Заранее спасибо


 
artmedia70:
У вас массивы int, а Open и Close - double
Заменил, все равно нули. И еще - в моих двумерных массивах одно множество -типа double, а второе-то - int (индексы баров). Как привести их к одному типу на время выполнения вычислений, но чтобы при выводе результата опять вернуть к прежнему типу?
 
-xlapex-:
Заменил, все равно нули. И еще - в моих двумерных массивах одно множество -типа double, а второе-то - int (индексы баров). Как привести их к одному типу на время выполнения вычислений, но чтобы при выводе результата опять вернуть к прежнему типу?

А чему у Вас равен count_bars?
 
Roger:

А чему у Вас равен count_bars?

count_bars = 30;


Я тут подумал, и решил, что два массива - лишние, они и так программно заданы. Теперь будет проще думать. Как все же привести к одному типу?

int start()
{
double mas1[30,2],mod_1;
int ind_1;
{
for (int i=1;i<=30;i++)
{
mas1[i, 0] = MathAbs(Close[i]-Open[i]);
mas1[i, 1] = i;

ArraySort(mas1);
mod_1=mas1[2, 0];
ind_1=mas1[2, 1];

Alert(mod_1," ",ind_1);
}
}
return(0);
}


 
-xlapex-:

count_bars = 30;

Тогда замените

mod_1=mas1[2, 0];
ind_1=mas1[2, 1];

на

mod_1=mas1[i, 0];
ind_1=mas1[i, 1];
 
Roger:

Тогда замените

на

Заменил. mod_1 выдает множество={1,3,5,7,9,...,29}, а ind_1 продолжает показывать ноль.
 
-xlapex-:
Заменил. mod_1 выдает множество={1,3,5,7,9,...,29}, а ind_1 продолжает показывать ноль.


не показывает ноль

double mas1[30,2],mod_1; 
int ind_1; 
for (int i=1;i<=30;i++)
{ 
   mas1[i, 0] = MathAbs(Close[i]-Open[i]);
   mas1[i, 1] = i;

   ArraySort(mas1);
   mod_1=mas1[i, 0];
   ind_1=mas1[i, 1];

   Print(mod_1," ",ind_1);
}

только код у вас какой-то непонятный

например, массив mas ещё не сформирован, а вы его уже сортируете

может по контексту ваших вопросо лучше так:

double mas1[30,2],mod_1; 
int ind_1; 
for (int i=1;i<=30;i++)
{ 
   mas1[i, 0] = MathAbs(Close[i]-Open[i]);
   mas1[i, 1] = i;
}
ArraySort(mas1);
mod_1=mas1[2, 0];
ind_1=mas1[2, 1];
Print(mod_1," ",ind_1);
 
-xlapex-:
Заменил. mod_1 выдает множество={1,3,5,7,9,...,29}, а ind_1 продолжает показывать ноль.

Дааааа.... И почему я такой рассеянный?!

Оказывается, все просто - ArraySort(mas1,30,1,MODE_DESCEND). Всего лишь надо записать, все что положено.

 
abolk:


не показывает ноль

только код у вас какой-то непонятный

например, массив mas ещё не сформирован, а вы его уже сортируете

А что вы имеете ввиду под "не сформирован". Что я еще упустил?
Причина обращения: