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

Вытащить данные в файл

slavavs82

New Member
NinjaTrader
Подскажите, пожалуйста, как вытащить данные в файл.
Я загружаю историю на ренко за период (допустим год). Мне нужно в файле создать 4 столбца с разделителем (цена закрытия (ренко), время, объем, дельта) и выгрузить эти данные.
 
Я смотрел импорт, там нет ренко. В примере zip, какой-то индикатор, импорт OHLS. В любом случае спасибо, буду help учить
 
Я смотрел импорт, там нет ренко. В примере zip, какой-то индикатор, импорт OHLS. В любом случае спасибо, буду help учить
Не надо хелп учить, Аркадий указал на индикатор, он и с ренко будет работать. Только вместо параметров с OHLC надо указать ваши параметры (цена закрытия (ренко), время, объем, дельта)
 
Код:
sw.WriteLine(Close[0] + "," + Time[0] + "," + VOL()[0] + "," +  тут надо высчитывать дельту);
вот всего одна строка
 
Дельта у меня на графике есть, ее нельзя просто считать? И время, оно наверно в сек, а можно его в милисек?
 
Последнее редактирование:
Дельта у меня графике есть, ее нельзя просто читать? И время, оно наверно в сек, а можно его в милисек?
если есть на графике, то надо понять как она там считается, и вставить в свой алгоритм. можно все сделать, потихоньку пробуй.
 
Не Хелпы нужно учить, а язык C# :)

C#:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO; Подключить в НТ эту библиотеку

namespace StreamReadWrite
{
    class Program
    {
        static void Main(string[] args)
        {
            // Get the directories currently on the C drive.
            DirectoryInfo[] cDirs = new DirectoryInfo(@"c:\").GetDirectories();

            // Write each directory name to a file.
            using (StreamWriter sw = new StreamWriter("CDriveDirs.txt"))
            {
                foreach (DirectoryInfo dir in cDirs)
                {
                    sw.WriteLine(dir.Name);

                }
            }

            // Read and show each line from the file.
            string line = "";
            using (StreamReader sr = new StreamReader("CDriveDirs.txt"))
            {
                while ((line = sr.ReadLine()) != null)
                {
                    Console.WriteLine(line);
                }
            }
        }
    }
}
 
Спасибо за код. Мне конечно стыдно спрашивать, что этот код делает, но как мне кажется он точно не записывает в файл цену закрытия Ренко, время...)))
 
Спасибо за код. Мне конечно стыдно спрашивать, что этот код делает, но как мне кажется он точно не записывает в файл цену закрытия Ренко, время...)))
Код это синтаксис языка C# как создать папку, как создать тхт файл, как записать данные в файл, как прочитать данные из файла.

А как записать данные вам написал Аркадий. sw.WriteLine(Close[0].ToString() + "," + Time[0].ToString() + "," + VOL[0] .ToString()+ "," + Delta[0].ToString());
 
Спасибо за код. Мне конечно стыдно спрашивать, что этот код делает, но как мне кажется он точно не записывает в файл цену закрытия Ренко, время...)))
Если не знаком с базовыми понятиями и синтаксисом языка с#, то будет очень сложно. Начните с него. Потом просто надо разобраться где эти конструкции вставить чтобы получить результат.
 
2019-05-29 01:06:00.000;59,05;59,03;59,03

как заменить запятую на точку (59,05 -> 59.05)
 
А как записать данные вам написал Аркадий. sw.WriteLine(Close[0].ToString() + "," + Time[0].ToString() + "," + VOL[0] .ToString()+ "," + Delta[0].ToString());
Что касается Time, Close, Open все работает четко. Дельта не работает, так как это параметр расчетный, он считает как разница между Bid\Ask. В принципе мне бы и Bid\Ask хватило, но как их достать??? Если просто прописать Bid[0] - не работает- ошибка
 
Что касается Time, Close, Open все работает четко. Дельта не работает, так как это параметр расчетный, он считает как разница между Bid\Ask. В принципе мне бы и Bid\Ask хватило, но как их достать??? Если просто прописать Bid[0] - не работает- ошибка

Method Return Value
A double value representing the current bid price.

A double value representing the current askprice.


Syntax
GetCurrentBid()
GetCurrentBid(int barsSeriesIndex)

Syntax
GetCurrentAsk()
GetCurrentAsk(int barsSeriesIndex)

Или так можно получать данные

protected override void OnMarketData(MarketDataEventArgs e)
{
if(e.MarketDataType == MarketDataType.Last)
{
if(e.Price >= e.Ask)
{
double ПеременнаяAsk = e.Volume;
}

else if(e.Price <= e.Bid)
{
double ПеременнаяBid = e.Volume;
}
else if(e.Price != e.Bid && e.Price != e.Ask)
{
double ПеременнаяBetween = e.Volume;
}

}
}
 
2019-05-29 01:06:00.000;59,05;59,03;59,03

как заменить запятую на точку (59,05 -> 59.05)
Когда делаете запись указываете как записывать.

sw.WriteLine(Close[0].ToString("0.0") + "," + Time[0].ToString() + "," + VOL[0] .ToString()+ "," + Delta[0].ToString());
 
,System.Globalization.CultureInfo.GetCultureInfo("en-US")
вот это еще надо было указать
 
такой пример есть в хелпе
ссылка
Сделал я такой индикатор. Пишет в файл нормально, но возникла проблема, для больших файлов жрет память сильно, зависает и вылетает программа.
Дело в том, что этот индикатор пишет сначала в память, а затем выдает файл.
Как мне исправить код, чтобы в файл писалось построчно после каждого бара? То есть бар прочитали, записал и тд??
 
Назад
Верх Низ