Re: FractalsMTF - отображение фракталов старшего таймфрейма на младшем
Добавлено: 24 ноя 2017, 16:08
Отлично
Неофициальный форум клиентского терминала Альфа-Инвестиции (Альфа-Директ 4). Обсуждение терминала, обмен опытом, разработка скриптов индикаторов и стратегий.
https://alfadirect4.ru/
Den писал(а):На М5 ваш индикатор, я его никак не менял, поэтому DataSLot1 удалять не было необходимости.
Den писал(а):Евгений, напишите пожалуйста как вставить в WriteData и ReadDataMY.индикатор вместо EMA SMA?
Код: Выделить всё
WriteData
Код: Выделить всё
function Initialize()
{
IndicatorName = "WriteData";
PriceStudy = true;
AddInput("I", Inputs.Candle);
AddParameter("DataSlot", 0);
AddSeries("A");
}
function Evaluate()
{
// evge 17.11.2017 http://alfadirect4.ru
// передавать в нижестоящий таймфрейм будем для примера SMA и EMA от часового таймфрейма
var lastLVal = MY.индикатор(Input, 0, 0, 0).GetLastValues ("L", 1)[0];
var lastHVal = MY.индикатор(Input, 0, 0, 0).GetLastValues ("H", 1)[0];
if (DataSlot == 0) return;
string Path = @"DataSlot" + (int)DataSlot + "\\";
System.IO.DirectoryInfo dirInfo = new System.IO.DirectoryInfo(Path);
if (!dirInfo.Exists) dirInfo.Create();
string Ticker = Input.VirtualSecurity.Split('=')[0];
string FileName = String.Format("{0}-{1}-{2}-{3}-{4}-{5}-{6}",
Ticker, BarDate().Year, BarDate().Month, BarDate().Day, BarTime().Hours, BarTime().Minutes, BarTime().Seconds);
string URL = Path + FileName;
// данная проверка необходима т.к. не будет перезаписи данных, но при смене параметров придётся вручную удалять папку данных
if (System.IO.File.Exists(URL) && CurrentIndex != MaxIndex) return;
ClearFile(URL);
WriteLine(URL, String.Format("{0};{1};{2};{3};{4};{5};{6};{7};{8};{9}", I.Open[0], I.High[0], I.Low[0], I.Close[0], I.Volume[0], I.VolumeBid[0], I.VolumeAsk[0], I.OpenInterest[0], E[0], S[0]));
}
Код: Выделить всё
function Initialize()
{
IndicatorName = "ReadData_II";
PriceStudy = true;
AddInput("I", Inputs.Candle);
AddParameter("DataSlot", 0);
AddSeries("индикатор ?", DrawAs.Line, Color.Blue);
AddSeries("индикатор ?", DrawAs.Line, Color.Red);
}
function Evaluate()
{
// evge 17.11.2017 http://alfadirect4.ru
if (DataSlot == 0) return;
string Path = @"DataSlot" + (int)DataSlot + "\\";
System.IO.DirectoryInfo dirInfo = new System.IO.DirectoryInfo(Path);
if (!dirInfo.Exists) dirInfo.Create();
// т.к. наш таймфрейм рабочий меньше чем час то передавать в поиск данных мы будем всё до часа, минуты и секунды отбросим, так мы найдем данные от часового таймфрейма
string Ticker = Input.VirtualSecurity.Split('=')[0];
string FileName = String.Format("{0}-{1}-{2}-{3}-{4}-{5}-{6}",
Ticker, BarDate().Year, BarDate().Month, BarDate().Day, BarTime().Hours, BarTime().Minutes, 0, 0);
var URL = Path + FileName;
string S = "";
if (System.IO.File.Exists(URL))
{
System.IO.StreamReader output = new System.IO.StreamReader(URL);
while (!output.EndOfStream) S += output.ReadLine();
output.Close();
}
string[] Bar = S.Split(';');
// бар найден
if (Bar.Count() > 3)
{
// необходимо считать с вышестоящего таймфрейма только EMA и SMA
индикатор ?[0] = double.Parse(Bar[8]); // индикатор ? это 8-ой элемент в списке
индикатор ?[0] = double.Parse(Bar[9]); // индикатор ? это 9-ой элемент в списке
} // count > 3
}
Код: Выделить всё
string Ticker = Input.VirtualSecurity.Split('=')[0];
string FileName = String.Format("{0}-{1}-{2}-{3}-{4}-{5}-{6}",
Ticker, BarDate().Year, BarDate().Month, BarDate().Day, BarTime().Hours, BarTime().Minutes, 0);