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

Проверка Ninjatrader Machine ID

handlar

Member
NinjaTrader
Привет всем. Есть вопрос. Пишу стратегию, добавил проверку возможности запуска стратегии только на доверенных машинах с помощью проверки Ninjatrader Machine ID http://ninjatrader.com/support/forum/showpost.php?p=277777&postcount=8

Может кто подскажет, как в нинзе можно послать запрос на какой-нибудь урл, чтобы в ответ получить JSON или XML, и чтобы не статически перекомпилировать каждый раз, а вот запрос ушел на мой сервис, в ответ стратегия получила список Ninjatrader Machine ID и дальше или запустилась или нет.
 
Гуглить класс HttpWebRequest.
И не пользуйтесь встроенной защитой (для 7 версии). Ломается за 5 минут.
 
Спасибо. Т.е. что в zip нинзя мне dll сделала из исходника, это все так, для школьников защита )?
 
Процедура для вызова веб-сервиса и парсинга JSON (надо еще объявить using Newtonsoft.Json;)
Код:
private bool ReadWeb(string Url)
        {
            try
            {
                Print ("Старт" + DateTime.Now.ToString());
                // Создаем запрос к URL
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create (Url);
                // Устанавливаем метод запроса POST
                //request.Method = "POST";
                request.Method = WebRequestMethods.Http.Post;
                // Описываем данные POST
                string postData = "";
                //Конвертируем данные POST в byte array
                byte[] byteArray = Encoding.UTF8.GetBytes (postData);
                // Устанавливаем свойство ContentType
                request.ContentType = "application/json";
                // Устанавливаем свойство ContentLength
                request.ContentLength = byteArray.Length;
                // Получаем поток запроса
                Stream dataStream = request.GetRequestStream ();
                // Записываем данные в поток запроса
                dataStream.Write (byteArray, 0, byteArray.Length);
                // Закрываем объект потока
                dataStream.Close ();
                // Получаем ответ
                WebResponse response = request.GetResponse ();
              
                // Получаем поток, содержащий контент, возвращенный сервером
                dataStream = response.GetResponseStream ();
                // Открываем поток, используя StreamReader, для более легкого доступа
                StreamReader reader = new StreamReader (dataStream);
                // Читаем контент
                string responseFromServer = reader.ReadToEnd ();
                //Парсим контент
                Newtonsoft.Json.Linq.JObject jObject = Newtonsoft.Json.Linq.JObject.Parse(responseFromServer);
                bool result=false;

                if ((string)(jObject["series"][0]["data"][0][0])==ReportDate)
                {
                    factValue=(double)(jObject["series"][0]["data"][0][1])-(double)(jObject["series"][0]["data"][1][1]);
                    result=true;
                }
                // Очищаем потоки
                reader.Close ();
                dataStream.Close ();
                response.Close ();
                Print ("Конец" + DateTime.Now.ToString());
                return result;
            }
            catch (System.IO.IOException e)
            {
                Print("Ошибка: " + e.Message);
                return false;
            }
        }

Вызов процедуры с URL в качестве параметра
Код:
ReadWeb("http://api.eia.gov/series/?api_key=7AE4ABADA9B9719C9512CE0F94A5E074&series_id=NG.NW_EPG0_SAO_R48_BCF.W&num=2")
 
thinarthrill, огромное спасибо за пример кода с комментариями, то, что я как раз и искал, низкий поклон ;)
 
Назад
Верх Низ