Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.68/47: Рейтинг темы: голосов - 47, средняя оценка - 4.68
 Аватар для Rodion2703
24 / 20 / 5
Регистрация: 06.01.2013
Сообщений: 819

Массив из ссылок

19.07.2017, 15:05. Показов 9373. Ответов 38
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!

Допустим, есть 2 массива:
C#
1
2
string[] a = new string[2] {"lol", "kek"};
int[] b = new int[3] {1, 2};
Как сформировать массив, который будет содержать не комбинации этих 2-х массивов:
C#
1
2
3
4
5
6
7
array
[
  {"lol", 1},
  {"lol", 2},
  {"kek", 1},
  ...
]
, а ссылки на соответствующие ячейки массивов:
C#
1
2
3
4
5
6
7
array
[
  {a[0], b[0]},
  {a[0], b[1]},
  {a[1], b[0]},
  ...
]
, чтобы лишний раз не использовать память?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.07.2017, 15:05
Ответы с готовыми решениями:

Массив ссылок
Для проверки определить массив ссылок на абстрактный класс, которым присваиваются адреса различных объектов. не понимаю как это (

Массив из ссылок
есть меню состоящее из ссылок как мне создать массив из этих ссылок используя Control.ControlCollection.Find я пока сразу...

Массив ссылок на jquery
Приветствую ребята! Подскажите как на jquery реализовать массив ссылок? То есть много ссылок на внешние ресурсы. Во фрейме они грузятся...

38
28 / 28 / 6
Регистрация: 25.12.2008
Сообщений: 186
19.07.2017, 15:09
Ну со строками ты и так ссылки оставишь, а int будет копировать...
1
 Аватар для Rodion2703
24 / 20 / 5
Регистрация: 06.01.2013
Сообщений: 819
19.07.2017, 15:16  [ТС]
Ладно, лучше проясню истинную проблему.

Есть класс:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class ADX_Configurations
{
    public ADX_Configurations(List<int> _Period, List<MaType> _Ma_Type)
    {
        Periods = _Period;
        Ma_Types = _Ma_Type;
    }
    public List<int> Periods { get; private set; }
    public List<MaType> Ma_Types { get; private set; }
 
    public ADX[] Get_ADX_Array()
    {
        ADX[] result = new ADX[Periods.Count * Ma_Types.Count];
 
        int i = 0;
        foreach (var _Period in Periods)
            foreach (var _Ma_Type in Ma_Types)
                result[i++] = new ADX(_Period, _Ma_Type);
 
        return result;
    }
}
Есть такой кортеж:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
var Robot_Settings = Tuple.Create
    (
        // TF0
        Tuple.Create
        (
            (new ADX_Configurations(new List<int> { 2, 3 }, new List<MaType> { MaType.Simple })).Get_ADX_Array()
        ),
        // TF1
        Tuple.Create
        (
            (new ADX_Configurations(new List<int> { 5 }, new List<MaType> { MaType.Exponential, MaType.Simple })).Get_ADX_Array()
        )
    );
Есть массив классов
C#
1
TimeFrame_class[] tf = new TimeFrame_class[2];
В этом классе хранится экземпляр класса ADX, который мы добавляем из Robot_Settings

Нужно составить массив комбинаций, вида:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
combos
[
    0
    [
        tf0
        [
            ADX0
        ],
        tf1
        [
            ADX0
        ]
    ],
    1
    [
        tf0
        [
            ADX0
        ],
        tf1
        [
            ADX1
        ]
    ],
    2
    [
        tf0
        [
            ADX0
        ],
        tf1
        [
            ADX2
        ]
    ],
    ....
]
,
То есть массив вида combo[].tf[].adx[]

Но, не создавать кучу экземпляров tf[].adx[], ссылаться на экземпляры из Robot_Settings
0
 Аватар для Fleder
263 / 224 / 108
Регистрация: 09.12.2015
Сообщений: 652
19.07.2017, 17:41
А зачем вообще нужно создавать массив комбинаций? Чтобы скормить его тестеру?
1
 Аватар для Rodion2703
24 / 20 / 5
Регистрация: 06.01.2013
Сообщений: 819
19.07.2017, 21:30  [ТС]
Fleder, именно. Для оптимизации параметров индикаторов и увеличения профита
0
 Аватар для Fleder
263 / 224 / 108
Регистрация: 09.12.2015
Сообщений: 652
19.07.2017, 21:44
А если вместо массива комбинаций сделать, например, класс, который будет однозначно идентифицировать себя с определёнными параметрами из заданного набора?
1
 Аватар для Rodion2703
24 / 20 / 5
Регистрация: 06.01.2013
Сообщений: 819
19.07.2017, 22:15  [ТС]
Fleder, этим классом как раз является TimeFrame_class
Просто, если расплодить так 100 классов, то памяти будет уходить в 100 раз больше, нежели если мы будем делать всё в одном месте, просто брать оттуда нужные комбинации параметров.
0
 Аватар для Fleder
263 / 224 / 108
Регистрация: 09.12.2015
Сообщений: 652
19.07.2017, 22:26
А какой код у класса TimeFrame_class?
1
3566 / 2507 / 1174
Регистрация: 14.08.2016
Сообщений: 8,219
19.07.2017, 22:27
а зачем что-то создавать? 2 цикла не спасут отца русской демократии? ведь создание этого нечто и поддержание его в актуальном состоянии тоже требуются затраты, да и считывание упрется в те же 2 цикла
1
 Аватар для Fleder
263 / 224 / 108
Регистрация: 09.12.2015
Сообщений: 652
19.07.2017, 22:33
Не совсем понимаю, почему таймфрейм - это класс. Логичнее было бы сделать его перечислением.
0
 Аватар для Rodion2703
24 / 20 / 5
Регистрация: 06.01.2013
Сообщений: 819
20.07.2017, 18:24  [ТС]
Fleder,
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public partial class TimeFrame_class
{
    public TimeSpan Period { get; private set; }
    public List<Candle> Buffer { get; private set; }
        
    public MA[][] all_ma { get; private set; } // это вместо ADX предыдущего примера
    public MA[] ma { get; set; }
 
    public int Combos_Count { get; private set; }
 
    public TimeFrame_class(int _Period_Seconds)
    {
        Period = TimeSpan.FromSeconds(_Period_Seconds);
        Buffer = new List<Candle>();
    }
    // Установка индикаторов в текущем ТФ
    public void Set_Indicators(List<MA[]> _mas)
    {
        all_ma = _mas.ToArray();
        // Считаем количество комбинаций
        Combos_Count = all_ma.Select(inds => inds.Length).Aggregate((p, x) => p *= x);
    }
    ...
}
Заполнение TimeFrame_class

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
tf[0].Set_Indicators
    (
        // MAs
        _mas: new List<MA[]>
        {
            // MA[0]
            Get_MA_Combos(new List<int> { 2, 3 }, new List<MaType> { MaType.Simple }, new List<CalculationType> { CalculationType.Close, CalculationType.Median }),
            // MA[1]
            Get_MA_Combos(new List<int> { 1 }, new List<MaType> { MaType.Simple }, new List<CalculationType> { CalculationType.Close, CalculationType.Median })
        }
    );
tf[1].Set_Indicators
    (
        // MAs
        _mas: new List<MA[]>
        {
            // MA[0]
            Get_MA_Combos(new List<int> { 4 }, new List<MaType> { MaType.Simple }, new List<CalculationType> { CalculationType.Close, CalculationType.Median }),
        }
    );
i`й элемент массива all_ma содержит комбинации класса MA для i`й элемента массива ma

Есть функция MyLovelyFunc, которую нужно вызывать для каждой новой комбинации для массива tf[]

Diamante, если делать через foreach или другие циклы, то для 2 экземпляров TimeFrame_class по 3 индикатора (наподобие MA) будет 6 циклов) Один раз уже кое-кто пробовал, вот, что получилось
Миниатюры
Массив из ссылок  
0
 Аватар для Fleder
263 / 224 / 108
Регистрация: 09.12.2015
Сообщений: 652
20.07.2017, 19:06
Глядя на выложенный код, у меня нарисовалось такое понимание:
Для таймсерии одного символа рассчитываются индикаторы для двух периодов.
Причём в памяти висят одновременно все версии буферов индикаторов (в количестве Combos_Count).
Затем всё это "добро" отдаётся волшебной фитнесс-функции MyLovelyFunc.

Как я понял суть проблемы - компуктер жрёт дофига памяти.
Я прав?
0
 Аватар для Rodion2703
24 / 20 / 5
Регистрация: 06.01.2013
Сообщений: 819
20.07.2017, 19:17  [ТС]
Цитата Сообщение от Fleder Посмотреть сообщение
Для таймсерии одного символа рассчитываются индикаторы для двух периодов.
Не совсем понял этих слов, но в целом да

Все "версии буферов индикаторов" обновляются каждую секунду, потом с каждой комбинацией из этих версий составляется комбинация и отправляется "фитоняшке-функции")

Суть проблемы в том, что можно просто для каждой комбинации составить свой TimeFrame_class и обновлять его. Но будет куча полностью идентичных "версий буферов индикаторов"

Например, если у нас 3 индикатора по 2, 3, 4 "версий буферов" соответственно, то будет 3 * 4 одинаковых версий для каждой версии первого индикатора, и т.д.

Представьте что будет, если число увеличить) У меня насчитывается прогнать 10.000 вариантов, поэтому уделяю время оптимизации алгоритма составления комбинаций.

(Если бы был тип данных, как массив ссылок, то получается массив их комбинаций, но вместо идентичных экземпляров - ссылка на один и тот же экземпляр! И не нужно каждый раз прогонять циклы для составления каждой комбинации)

Добавлено через 2 минуты
Цитата Сообщение от Rodion2703 Посмотреть сообщение
Все "версии буферов индикаторов" обновляются каждую секунду
Если подробнее, то примерно каждую миллисекунду. Поэтому каждый раз использовать цикл для составления одних и тех же комбинаций, но с разными значениями - очень давит на производительность (если будет примерно по 20 циклов)
0
 Аватар для Fleder
263 / 224 / 108
Регистрация: 09.12.2015
Сообщений: 652
20.07.2017, 19:28
А что значит "обновляются каждую секунду"?
Мне показалось, что тестирование проходит на исторических данных.
0
 Аватар для Rodion2703
24 / 20 / 5
Регистрация: 06.01.2013
Сообщений: 819
20.07.2017, 19:31  [ТС]
Думал, будет так понятнее, а похоже совсем запутал

Да, на исторических)
0
 Аватар для Fleder
263 / 224 / 108
Регистрация: 09.12.2015
Сообщений: 652
20.07.2017, 19:34
Рискну предположить, что тестирование идёт по тиковым данным.
Например, простая "машка" по ценам закрытия.
И вы что на каждом тике пересчитываете весь буфер машки с нуля что ли?
Или только обновляете последний элемент буфера?
0
 Аватар для Rodion2703
24 / 20 / 5
Регистрация: 06.01.2013
Сообщений: 819
20.07.2017, 19:36  [ТС]
Fleder, всё делаю путём) Каждый тик обрабатываю, обновляю все версии индикаторов, добавляю свечку в буфер (или если такая свечка - заменяю), потом нужно прогнать каждую комбинацию на правилах стратегии
0
 Аватар для Fleder
263 / 224 / 108
Регистрация: 09.12.2015
Сообщений: 652
20.07.2017, 19:42
Я правильно понял, что тестер за один проход по истории пытается отфитоняшить все комбинации?
Или он совершает много проходов (по одному для каждой комбинации)?
Если первый вариант - то это жесть!
0
 Аватар для Rodion2703
24 / 20 / 5
Регистрация: 06.01.2013
Сообщений: 819
20.07.2017, 19:46  [ТС]
Fleder, первый) Уже есть вариант параллельного тестирования: для каждой комбинации свой поток времени, расчёт дня, но уж оооооооооооочень долго он считает (в 100 раз медленнее - не преувеличение!) (из-за одних и тех же тиков, генерации свечек и тд)

Поэтому да - решил сделать такой подход) Конечно лобовое решение - через циклы, но время так же будет уходить в пустую.
0
 Аватар для Fleder
263 / 224 / 108
Регистрация: 09.12.2015
Сообщений: 652
20.07.2017, 19:54
Минус такого подхода в том, что в памяти висят ВСЕ!!! версии индикаторов одновременно.
А память не резиновая.
Если совершать множество проходов, то достаточно иметь только один набор индикаторов и обновлять только его.
И распараллеливать лучше именно такой вариант (с кучей проходов).
Это как сломать веник: можно пробовать ломать его весь целиком (долго кряхтеть, краснеть и потеть при этом).
А можно ломать по соломинкам (а ещё лучше - все соломинки раздать шпане! Пущай ломают).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.07.2017, 19:54
Помогаю со студенческими работами здесь

Редактировать массив ссылок
у меня есть массив ссылок, вида: ./i2018i217.html Мне нужно на все такие ссылки попереходить. Но проблема в том, что они начитаются на...

Массив ссылок на функции
Объясните где ошибка: #include &lt;iostream&gt; void minimum (int*,int); void maximum (int*,int); void average (int*,int); int...

Массив ссылок и for auto
Создаю массив std::array ссылок, для ссылок создаю объекты через new, а потом удаляю, можно ли в цикле использовать auto? ...

Массив ссылок на TEdit
Имеются уже созданные компоненты edit1, edit2, ... ,edit16 . Надо присвоить массиву ссылки на эти компоненты. Массив : edt: array of...

Задача на указатели. Массив ссылок
Доброго времени суток)) Решаю такую задачку: Дан массив ссылок на вещественные числа. Проверить, есть ли в массиве хотя бы два...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru