MQL4 просчет массивов

 

Всем привет. Подскажите пожалуйста как расчитать цикл и выявить лучшее. Пример кода.


Имеем массивы, в каждом массиве 5 значений:

pars[mPARA[0].setted_id] - массив валютных пар
periods[mPARA[0].setted_period] - массив таймфреймов
mPARA[0].Value1 - Значение индикатора 1
mPARA[0].Value2 - Значение индикатора 2

Формула: (100-mPARA[0].Value1)+mPARA[0].Value2, по формуле просчитываем все 5 пар и получаем следущие значения: (для примера)

70 - 3 ?
80 - 2 ?
60 - 4 ?
50 - 5 ?
90 - 1 наибольшие найденное значение, для какой пары и ТФ он нашел и как это определить?

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

for ( i = 1; i < 5; i++) 
{
ObjectSetText(IndiName+IntegerToString(i)+"st",pars[mPARA[i].setted_id],widthNoTOP,"Arial",Black); 
ObjectSetText(IndiName+"_TF_"+IntegerToString(i)+"st",periods[mPARA[i].setted_period],widthNoTOP,"Arial",Black);
ObjectSetText(IndiName+"_Tr_"+IntegerToString(i)+"st",DoubleToString(mPARA[i].Value1,0)+"%",widthNoTOP,"Arial",Black);
ObjectSetText(IndiName+"_Ch_"+IntegerToString(i)+"st",DoubleToString(mPARA[i].Value2,0,0)+"%",widthNoTOP,"Arial",Black);
}
 

Создать массив структур, каждая ячейка это пара с таймфреймами, значениями индикатора, значениями формулы.

После всех расчетов и заполнения структур, сортировать массив по нужной колонке.

 
Taras Slobodyanik:

Создать массив структур, каждая ячейка это пара с таймфреймами, значениями индикатора, значениями формулы.

После всех расчетов и заполнения структур, сортировать массив по нужной колонке.

Чуть чуть кода пожалуйста...
 
Igor Kryuchkov:
Чуть чуть кода пожалуйста...

что именно непонятно?
как сделать массив структур?
или как его сортировать?

вот например:

struct CellStruct
   {
   ENUM_TIMEFRAMES   tf;         //time frame
   double            Value1; 
   double            Value2; 
   double            Value3; 
   };
struct RowStruct
   {
   string      symbol;           //pair
   CellStruct  signal[];
   };

RowStruct   ROW[];               //rows
 
Taras Slobodyanik:

что именно непонятно?
как сделать массив структур?
или как его сортировать?

вот например:

Это мы создаем массив структур, но как его применить к формуле?  Как получить конченые значения которые нужно сортировать?

 
Igor Kryuchkov:

Это мы создаем массив структур, но как его применить к формуле?  Как получить конченые значения которые нужно сортировать?

также как у вас

ROW[s].signal[p].Value3 = (100 - ROW[s].signal[p].Value1 + ROW[s].signal[p].Value2);
 
Taras Slobodyanik:

также как у вас

pars[mPARA[0].setted_id] - массив валютных пар
periods[mPARA[0].setted_period] - массив таймфреймов
mPARA[0].Value1 - Значение индикатора 1
mPARA[0].Value2 - Значение индикатора 2

 а как эти значения присвоить структуре?


ROW[s].signal[p].Value3 = (100 - ROW[s].signal[p].Value1 + ROW[s].signal[p].Value2);// s это цикл просчета? Что такое p?
 
Igor Kryuchkov:

также как вы присваиваете их тут

mPARA[0].Value1 - Значение индикатора 1
mPARA[0].Value2 - Значение индикатора 2
ROW[s].signal[p].Value1 = iCustom(....);
 
// s это цикл просчета? Что такое p?

s - это индекс символа, в котором перебираются периоды (строка таблицы)
p - это индекс периода (колонка таблицы)

это пример

 
Taras Slobodyanik:

s - это индекс символа, в котором перебираются периоды (строка таблицы)
p - это индекс периода (колонка таблицы)

это пример

Что то не получается...

for(int t = 0; t <5; t++) 
{
  
struct CellStruct
   {
   
   string            tf;         //time frame
   double            Value1; 
   double            Value2; 
   double            Value3; 
   };
   
struct RowStruct
   {
   string            symbol;           //pair
   CellStruct  signal[];
   };

RowStruct   ROW[];   



for(int i=0; i<5; i++)
{
ROW[t].RowStruct[i].symbol = pars[mPARA[i].setted_id];
ROW[t].signal[i].tf = periods[mPARA[i].setted_period];
ROW[t].signal[i].Value1 = mPARA[i].Value1;
ROW[t].signal[i].Value2 = mPARA[i].Value2;

}


for(int i=0; i<5; i++)
{ 
ROW[t].signal[i].Value3 = (100 - ROW[t].signal[i].Value1 + ROW[t].signal[i].Value2);
}

ArraySort(ROW[t].signal[i].Value3);

for(int i=0; i<5; i++)
{ 

ObjectSetText(IndiName+IntegerToString(i+1)+"st",pars[mPARA[i].setted_id],widthNoTOP,"Arial",Black); 
ObjectSetText(IndiName+"_TF_"+IntegerToString(i+1)+"st",periods[mPARA[i].setted_period],widthNoTOP,"Arial",Black);
ObjectSetText(IndiName+"_Tr_"+IntegerToString(i+1)+"st",DoubleToString(mPARA[i].Value1,0)+"%",widthNoTOP,"Arial",Black);
ObjectSetText(IndiName+"_Cha_"+IntegerToString(i+1)+"st",DoubleToString(mPARA[i].Value2,0)+"%",widthNoTOP,"Arial",Black);
}







}
 

вот описание структур

https://www.mql5.com/ru/docs/basis/types/classes

Документация по MQL5: Основы языка / Типы данных / Структуры, классы и интерфейсы
Документация по MQL5: Основы языка / Типы данных / Структуры, классы и интерфейсы
  • www.mql5.com
Структура является набором элементов произвольного типа (кроме типа void). Таким образом, структура объединяет логически связанные данные разных типов. Объявление структуры Имя структуры нельзя использовать в качестве идентификатора (имени переменной или функции). Следует иметь ввиду, что в MQL5 элементы структуры следуют непосредственно друг...
Причина обращения: