• Тинькофф Банк-лучшие банковские продукты еще выгоднее
    Выбирайте продукт от банка Тинькофф
  • Уважаемые форумчане, друзья и посетители!
    Поступило предложение ( ссылка на обсуждение ) на сбор средств поддержания форума в рабочем состоянии с 1 июня ( оплата хостинга, бэкап ежедневный на другой хостинг и тд), отчетность будет предоставляться ежемесячно. Пока на ЮMoney ( яндекс деньги), доступно картой перевод, далее добавлю другие способы. Сумму перевода указывайте на ваш выбор исходя из своих возможностей.
    Форум продолжает свою работу благодаря Вашим пожертвованиям.

Программирование Что за синтаксис такой?

hoz

Member
NinjaTrader
Вроде как по заявлениям разработчиков, на данный момент, пишутся торговые роботы на C#. Это проавда? Или это типа C#, но не совсем то?
Да бы понять язык, решил я поиграться очередной раз с визуальным конструктором. Открыл его код. И сразу появились вопросы...
Вот такая строка спокойно компилируется:
Код:
if (GetCurrentAsk() < ATR(14)[0])
Меня сразу смутило то, что на конце имеется [0]
Это ещё с чего? Обычно параметры методов в круглых кавычках. Я б не удивился, если б было так, например:
Код:
if (GetCurrentAsk() < ATR(14, 0))
С чем это связано? Если посмотреть в справку из программы нажав F1, или пройти по ссылке можно увидеть следующее:
Syntax
ATR(intperiod)
ATR(IDataSeriesinput, intperiod)

Returns default value
ATR(intperiod)[intbarsAgo]
ATR(IDataSeriesinput, intperiod)[intbarsAgo]
Почему код пишется так как указано после Returns default value ? По сути, это ж возвращаемое по умолчанию значение... Судя по комментарию.
 
В круглых скобках - параметр вызываемого метода. В квадратных скобках - порядковый номер элемента массива. Т.е. последнее (intbarsAgo=0) значение 14-периодного ATR. Если указать например ATR(14)[1] - предпоследнее значение (предпоследний бар) 14-периодного ATR.
 
В круглых скобках - параметр вызываемого метода. В квадратных скобках - порядковый номер элемента массива. Т.е. последнее (intbarsAgo=0) значение 14-периодного ATR. Если указать например ATR(14)[1] - предпоследнее значение (предпоследний бар) 14-периодного ATR.
Я это понял ещё тогда , когда прочёл справку. Но это ж не C#'овский синтаксис! А часто можно встретить, что торговые эксперты и индикаторы под NT7 пишутся на C#. Вот в чём вопрос.
Почему порядковый номер бара в квадратных скобках вообще... Сколько не встречал синтаксисов, в том числе, и канкретно к торговым платформам, не попадались такие варианты. Обычно, как в том же Си, но не так.
С чего бы то вдруг?
 
да нормальный С#, эт типо сокращенная запись.
//функция возвращает массив значений.
double[] func(int i);
//получить элемент массива
val = func(i)[n];

И да, в си такое тоже нормально ;)
 
В C# обращение к элементам массива через квадратные скобки []
Да, но перед квадратными скобками круглых нет...
Вот создаётся новы массив на 10 элементов, например в C#:
Код:
int[] myArr = new int[10];
Кто-то приведёт нормальный пример из C# чтоб был подобен тому что я выше привёл?
 
ну ок, перевожу ;)

ATR(14)[0] // сокращенный эквивалент следующего кода

double[] atr = ATR(14); //функция возвращает массив
double atrVal = atr[0]; //извлечение 0-го элемента массива

// ну и соответственно
if (GetCurrentAsk() < atrVal)
 
diushych, в итоге, у Вас нет данного варианта в коде) Так что вопрос остаётся открытым..
 
Вопрос собсно в чем? Почему С# в нинзе, адаптированный под торговлю на финансовых рынках, отличается от C# для прикладных приложений? Вопрос риторический)) Почему после круглых скобок с параметрами метода стоят квадратные с номером элемента? Как сказал diushych, полагаю для облегченного/сокращенного доступа к данным. Тут ж куда не ткни одни массивы баров да индикаторов с историческими временными рядами.
 
Вопрос собсно в чем? Почему С# в нинзе, адаптированный под торговлю на финансовых рынках, отличается от C# для прикладных приложений? Вопрос риторический)) Почему после круглых скобок с параметрами метода стоят квадратные с номером элемента? Как сказал diushych, полагаю для облегченного/сокращенного доступа к данным. Тут ж куда не ткни одни массивы баров да индикаторов с историческими временными рядами.
И в чём, собственно говоря, облегчение? Например, можно было используя нормальный синтаксис заменить такую конструкцию:
Код:
ATR(14)[0]
На такую:
Код:
ATR(14, 0)
По-моему, это было бы не сложнее, а куда проще и понятнее)
 
Накачал видеокурсов по C диез (#).
Надо научиться разговаривать по русский с программистами на NinjaTrader.:happy:
 
Назад
Верх Низ