• Demo счет NinjaTrader, регистрируется в брокерской компании NinjaTrader Brokerage . NinjaTrader™, LLC
    Ссылка на демо счет NinjaTrader
    Фид на соединении Continuum/CQG.
    Для справки: Continuum - это брэнд CQG, и ни чем они не отличаются друг от друга.
  • Сколько я реально плачу комиссии?
    Подробнее по ссылке

Проверка Ninjatrader Machine ID

handlar

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

Может кто подскажет, как в нинзе можно послать запрос на какой-нибудь урл, чтобы в ответ получить JSON или XML, и чтобы не статически перекомпилировать каждый раз, а вот запрос ушел на мой сервис, в ответ стратегия получила список Ninjatrader Machine ID и дальше или запустилась или нет.
 

handlar

Guest
NinjaTrader
#3
Спасибо. Т.е. что в zip нинзя мне dll сделала из исходника, это все так, для школьников защита )?
 

thinarthrill

Well-Known Member
NinjaTrader
#5
Процедура для вызова веб-сервиса и парсинга 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")