Каталог файлов форума

Список вложений в сообщениях, оставленных на этой конференции.

Все файлы форума: 1230

Добавлено: evge » 05 дек 2017, 17:50

Тема: Re: FractalsMTF - отображение фракталов старшего таймфрейма на младшем

Текст сообщения:

Приветствую, Tyler_Durden!

Проверил.

1. Взял код стратегии выше не меняя.
2. Создал WriteData на график поместил на таймфрейм SIZ7 = 1H.
3. Создал ReadData с сериями Ema (8) и Sma (13), которые передает WriteData в слот 1.

Протестировал стратегию на 1 минутном ТФ за 20000 баров (36 дней).

ReadData-Strategy-Sma-Ema-01.png
ReadData-Strategy-Sma-Ema-01.png (33.83 КБ) 20618 просмотров


Причин почему не работает в вашем случае может быть много, не пишутся данные в DataSlot1, некорректный код WriteData или ReadData и т.д., т.к. их не вижу не могу сказать.

Приведу свои из этого теста:

Код: Выделить всё

function Initialize()
{
IndicatorName = "WriteData";   
PriceStudy = true;   
AddInput("I", Inputs.Candle);   
AddParameter("DataSlot", 0);

AddParameter("PeriodSMA", 13, 1); // период для формирования средней скользящей
AddParameter("PeriodEMA", 8, 1); // период для формирования средней скользящей

AddSeries("A");   
}

function Evaluate()
{

// evge 13.10.2017 http://alfadirect4.ru

// получаем данные из индикатора

var S = SMA(I, PeriodSMA);
var E = EMA(I, PeriodEMA);

if (DataSlot == 0) return;

string Path = @"DataSlot" + (int)DataSlot + "\\";
System.IO.DirectoryInfo dirInfo = new System.IO.DirectoryInfo(Path);
if (!dirInfo.Exists) dirInfo.Create();

string FileName = String.Format("{0}-{1}-{2}-{3}-{4}-{5}",
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], S[0], E[0]));

}


Код: Выделить всё

function Initialize()
{
IndicatorName = "ReadData";
PriceStudy = true;   
AddInput("I", Inputs.Candle);   

AddParameter("DataSlot", 0);

AddShadowSeries("Open", DrawAs.Custom, Color.MediumSeaGreen, 100);   
AddShadowSeries("High", DrawAs.Custom, Color.Silver, 100);   
AddShadowSeries("Low", DrawAs.Custom, Color.Silver, 100);   
AddShadowSeries("Close", DrawAs.Custom, Color.Coral, 100);

AddShadowSeries("Sma", DrawAs.Line, Color.Blue, 100);
AddShadowSeries("Ema", DrawAs.Line, Color.Red, 100);

}

function Evaluate()
{

// evge 13.10.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();

var FileName = String.Format("{0}-{1}-{2}-{3}-{4}-{5}",
BarDate().Year, BarDate().Month, BarDate().Day, BarTime().Hours, 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)
{
Open = double.Parse(Bar[0]);
High = double.Parse(Bar[1]);
Low = double.Parse(Bar[2]);
Close = double.Parse(Bar[3]);

Sma[0] = double.Parse(Bar[8]);
Ema[0] = double.Parse(Bar[9]);

if (Close > Open)
{
   Open.DrawHistogram(Close);
   High.DrawVertical(Close);
   Low.DrawVertical(Open);
}
else
{
   if (Close[0] == Open[0]) Close.DrawDash(Colors["High"], LineStyles.Solid, 1,0);
   else Close.DrawHistogram(Open);
   High.DrawVertical(Open);
   Low.DrawVertical(Close);
}

} // count > 3

}