Тихая Гавань
Тихая Гавань личный блог
29 сентября 2018, 19:39

Вопрос программистам

Всем привет друзья.

пишу робота под америку и столкнулся вот с такой проблемой: 

писал всегда на СИ подобном языке )) МКЛ это усеченный до нельзя СИ. и тем не менее все хорошо писалось.. 

сейчас же пишу под нинзю, а в нинзе си шарп. и вот с такой задачей уже долгое время не могу справиться: 

как писал на МКЛ: 

создаю структуру:
//--------------------------------------------------------------------------------------------
struct sDataBar     { ... };
//--------------------------------------------------------------------------------------------    

создаю 2 экземпляра стуктуры:
sDataBar     OsnDataBar;       // Структура с ДАННЫМИ на баре для основного ТФ
sDataBar     HlpDataBar;       // Структура с ДАННЫМИ на баре для вспомогательного ТФ

далее в теле программы:
передаю в цикле на каждый бар обе структуры 

MathDataForBar(OsnDataBar, i, 1);
MathDataForBar(HlpDataBar, i, 2);

в самой функции принимаю структуру так: 
void MathDataForBar(sDataBar &DataBar,int i, int variant)
{
...
//делаю с данными шпили вили ))
...
}

ключевая фишка в СИ это передача по ссылке &
я просто передаю в функцию указатель на необходимую мне структуру, и уже непосредственно в функции работаю с той структурой — ссылку на которую передал.

но блин не тут то было в СИ ШАРПЕ (( заветная & нифига не работает (( 
а читать пруфы не могу ибо туп (( мне надо на пальцах (( 

люди добрые программисты, если вы есть, и если вы можете для чайника на пальцах описать как это воплотить в шарпе — буду крайне признателен и благодарен!

48 Комментариев
  • Тарас Громницкий
    29 сентября 2018, 19:44

    Если вам нужно менять структуру в методе, передавая её как параметр, то есть ключевые слова ref и out.

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

    Кроме того, в C# есть разница между Value и Reference type сущностями.

    Вторые всегда передаются по ссылке, поэтому & не требуется.

    Но Struct — это value type.

  • Cheshirscy
    29 сентября 2018, 22:29
    Если коротко и без прелюдий, то вместо структуры используй класс и создай объект этого класса. Структуры в шарпе используются для специфических случаев
      • Алексей
        30 сентября 2018, 08:45
        Тихая Гавань, представляете каждый элемент как объект, наследуете общее и переносите логику в класс. с ооп код более логичным получается, на мой взгляд.

        самое простое это заявки и сделки, которые так и просятся объединить. создаёте базовый класс с общими свойствами и функциями от него наследуете классы ордер и трейд, а дальше уже сам код подскажет как с этим добром жить :)
          • Алексей
            30 сентября 2018, 16:11
            Тихая Гавань, тогда подход ооп вам в помощь. это как из лего кубиков что то строить, с одной лишь разницей что кубики придумываете тоже вы.
            в программировании вообще ничего сложного нет, музыку написать или картину в разы сложней.

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

            и вообще новичкам я бы сейчас рекомендовал, что то попроще чем шарп, он слишком гибкий. если софт с gui то я бы выбрал angular.
      • Андрей
        30 сентября 2018, 20:41
        Тихая Гавань, я бы Вам посоветовал посмотреть курсы Александра Шевчука, все подробно разжевывает и кладет в рот, почти на всё приводит аналогии из жизни. Не реклама, есть бесплатные уроки, да и при желании все можно и бесплатно нарыть сами знаете где).
  • Cheshirscy
    29 сентября 2018, 22:52
    А пока и не надо понимать просто вместо ключевого слова struct используй class. И когда в первый раз обращаешься к классу используй слово new. Остальное все тоже самое что и со структурами
      • Тарас Громницкий
        30 сентября 2018, 08:54

        Тихая Гавань, классы понадобятся, когда будете реализовывать более сложные и функциональные сущности.

        Содержащие/ссылающиеся на другие классы.

          • Тарас Громницкий
            30 сентября 2018, 10:23

            Тихая Гавань, примерно так.

            Класс в котором набор свойств и методов.

            А почему выбор пал на ниндзю ?

            IB предоставляет хорошие условия, как по комиссиям, так и по спектру рынков ?

            API достаточно стройный, функциональный и гибкий.

              • Тарас Громницкий
                30 сентября 2018, 10:48

                Тихая Гавань, API у них, как и везде.

                Подключаешься, посылаешь команды, получаешь результат.

                Он менее интегрирован с визуальной частью терминала, чем Ninja, но это плюс, а не минус.

                Потому как лишних зависимостей нет, а значит и потенциальных проблем.

                Для контроля работы робота есть масса других вариантов.

                От логов до таблиц в программе(графиков при необходимости).

                Это не сложно.

                А по комиссиям кто выгоднее IB или Ninja ?

                  • Тарас Громницкий
                    30 сентября 2018, 11:38

                    Тихая Гавань, ну ок.

                    В IB я значительно сильнее, чем в Ninja.

                    Хотя при необходимости разобраться не проблема.

                    Принципы везде едины.

                    Спрашивайте в случае чего.

  • Алексей Васильев
    30 сентября 2018, 06:25
    Вот реально приятно смотреть когда люди общаются по делу, без срача и троллинга. 
    • Тарас Громницкий
      30 сентября 2018, 08:50

      Алексей Васильев, это проблеск параллельной реальности.

      Исключение так сказать.

      • Алексей Васильев
        30 сентября 2018, 09:04
        Тарас Громницкий, ну это понятно, в том, что это исключение даже и не сомневается никто, но если хотя бы 1/3 смартлаба так общалась, то от него пользы было бы в сотни раз больше. 

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн